菜只因C 2024-02-11 10:36 采纳率: 72.7%
浏览 2
已结题

(标签-蓝桥杯|关键词-M3)

蓝桥杯嵌入式STM32G431 EEPROM读写问题 蓝桥杯例程写出来LCD显示都是0,没有任何改动

img


img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-11 10:38
    关注

    引自免费微信小程序:皆我百晓生

    在蓝桥杯比赛中,如果使用STM32G431单片机进行EEPROM读写操作时遇到了问题,即按照官方提供的例程编写后,在LCD上显示的都是0,而实际上没有对代码进行任何改动,这个问题可能涉及到以下几个方面:

    1. 硬件连接检查

    • I2C/SPI连接问题: STM32G431与外部EEPROM通信通常是通过I2C或SPI接口。请确保线路连接正确,包括电源、接地以及对应的数据和时钟线。

    2. 初始化配置

    • 外设初始化: 检查EEPROM和LCD的初始化函数,确认是否正确设置了相关的通信参数,例如I2C/SPI速度、从设备地址等。

    3. EEPROM读写函数

    • 读写函数实现: 查看EEPROM的读写函数,确认其功能逻辑无误,并且对于EEPROM的地址和数据读写操作正确。
    // 假设是I2C接口的EEPROM读取函数示例(具体函数根据实际EEPROM芯片手册编写)
    HAL_StatusTypeDef EEPROM_Read(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
    {
        HAL_I2C_Mem_Read(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, pBuffer, BufferSize, 1000);
        return HAL_OK;
    }
    
    // 假设是EEPROM写入函数示例
    HAL_StatusTypeDef EEPROM_Write(uint16_t DevAddress, uint16_t MemAddress, uint8_t* pBuffer, uint32_t BufferSize)
    {
        HAL_I2C_Mem_Write(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, pBuffer, BufferSize, 1000);
        return HAL_OK;
    }
    
    • 数据存储与读取: 确保写入EEPROM的数据有效,并在读取后正确传递给LCD显示模块。

    4. LCD驱动程序

    • LCD初始化及显示函数: 检查LCD的初始化代码和数据显示函数,确保LCD能够正常接收并显示数据。

    5. 调试步骤

    • 逐步调试: 使用IDE的单步调试功能,跟踪读写过程中的变量值变化,定位问题所在。
    • 硬件信号捕捉: 可以使用示波器或逻辑分析仪检查EEPROM与MCU之间的通信信号,验证通讯协议是否执行正确。

    由于无法查看具体的代码和图片,以上仅为一般性的排查建议。若需要更精确的帮助,请提供相关代码片段和电路图信息。同时,请查阅STM32G431的参考手册以及EEPROM芯片的数据手册以获取准确的配置方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月26日
  • 已采纳回答 2月26日
  • 创建了问题 2月11日

悬赏问题

  • ¥15 Java与Hbase相关问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥45 工程软件单片机设计课题要求
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)