USB论坛
直播中

李艳

8年用户 1567经验值
私信 关注
[问答]

I2C EEPROM编程失败的原因?

我尝试使用 Cy Control Center 实用程序将固件下载到我的 EVM 中,
第一天,我尝试了很多次,但都失败了,比如下面的错误,

  • I2C EEPROM 编程失败。
我搜索了英飞凌社区的问题,所以我发现我没有为 EVM 创建可启动映像,
根据 EVM 的原理图,EEPROM 是 ST Microelectronics 生产的 M24M02-DRMN6TP。因此,我使用以下选项来制作可启动映像

  • ' ${FX3_INSTALL_PATH} /util/elf2img/elf2img.exe'-i ${ProjName} .elf -o ${ProjName} .img -i2cconf 0x1C

因此我得到了如下所示的可启动映像,我们可以检查 0x1C 的第三个字节

回帖(1)

卢表镜

2025-5-8 18:13:35

针对您在I2C EEPROM编程过程中遇到的问题,以下是可能的原因及解决方案:




1. I2C设备地址配置错误




  • 问题分析

    ST M24M02-DRMN6TP的I2C地址由硬件引脚A2、A1、A0决定。若原理图中这些引脚均接地,7位设备地址应为 0x50(写入地址为0xA0,读取地址为0xA1)。

    您使用的i2cconf 0x1C对应的设备地址为 0x0E(二进制0001110),与实际地址不符。




  • 解决方案

    修改elf2img命令中的-i2cconf参数,设置为正确的设备地址:  


    elf2img.exe -i ${ProjName}.elf -o ${ProjName}.img -i2cconf 0x50





2. 地址字节数设置错误




  • 问题分析

    M24M02容量为2Mb(256KB),需17位地址,通常分为:



    • 高8位:通过设备地址中的“块地址”(如0x50 | block_num)指定。

    • 低16位:通过两个地址字节传输。

      i2cconf未配置为2字节地址模式,会导致地址解析错误。




  • 解决方案

    查阅elf2img文档,确认是否需额外参数指定地址字节数。例如:


    elf2img.exe ... -i2cconf 0x50 --address-bytes 2

    或通过i2cconf参数隐含配置(如最高位表示地址字节数)。






3. 页写入配置问题




  • 问题分析

    M24M02页大小为256字节。若生成的映像未按页对齐,或编程时跨页写入,会导致操作失败。




  • 解决方案

    确保elf2img生成的映像符合页写入规则,或调整编程工具的分页策略。






4. 硬件连接问题



  • 检查要点  

    • 上拉电阻:确认SDA/SCL线路有4.7kΩ上拉电阻。

    • 电源稳定性:EEPROM供电电压需在2.5V–5.5V范围内。

    • 地址引脚:确认A2/A1/A0引脚接地(若原理图如此设计)。





5. 写保护状态




  • 问题分析

    若EEPROM的WP(写保护)引脚拉高,将禁止写入操作。




  • 解决方案

    检查WP引脚是否接地,或通过软件命令解除保护。






6. 工具链配置验证



  • 步骤建议  

    1. 确认映像头部信息

      使用十六进制工具检查生成的.img文件,确认前几个字节是否包含正确的I2C配置(如设备地址、地址字节数)。

    2. 逻辑分析仪调试

      捕获I2C通信波形,验证设备地址、数据/地址字节是否符合预期。





最终命令调整建议


根据M24M02的典型配置,调整elf2img命令如下:


elf2img.exe -i ${ProjName}.elf -o ${ProjName}.img -i2cconf 0x50

若需指定2字节地址:


elf2img.exe ... -i2cconf 0xA0  # 0xA0 = 0x50 << 1(7位地址左移一位,含写操作位)



通过以上步骤排查,应能解决I2C EEPROM编程失败的问题。若仍存在问题,建议结合逻辑分析仪进一步分析I2C通信时序。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分