USB论坛
直播中

杨万富

8年用户 1620经验值
擅长:526774
私信 关注
[问答]

求助,关于将固件编程到连接到CYUSB3014-BZXC的EEPROM中遇到的问题求解

现在CYUSB3014可以通过USB Boot实现USB 3.0通信
但是使用I2C Boot模式时无法实现USB 3.0通信。
(其实我还有另外一块之前在2019/10年做的板子。 使用相同的固件镜像,我已经实现了EEPROM的烧写和启动,并且实现了USB3.0通信。 本次 2024/12 的赛道与上一次 2019/10 的赛道相同。
我认为IC的版本不同。 请参阅附件。


)
我不知道固件是否已正确写入 I2C E2PROM (M24M02-DRMN6TP)。
我使用 USB 控制中心并按照以下步骤操作。
程序 ->FX3 -> I2C E2PROM - 这将允许用户将固件 (.img) 下载到 FX3 I2C E2PROM。
最后,状态栏上将显示“I2C E2PROM 编程成功”消息。
问题 1:
虽然显示了成功信息,但是我不确定以下步骤是否已经执行?
1. 固件写入EEPROM
2.从EEPROM读取固件,并与步骤1中的固件进行比较。
如果一致,则显示成功。
对吗?
问题2:
现在固件大小为156KB,EEPROM(M24M02-DRMN6TP)大小为256KB。
我不能完全理解表 19 固件映像存储格式的参数 [bImageCTL 6: 64 KB (128K ATMEL 和 256K ST Electronics)]。
这是否意味着固件(156KB)可以被编程到EEPROM(M24M02-DRMN6TP)256KB?
CYUSB3014 可以完全启动固件(156KB)吗?
※我已将 PMODE[2:0] 引脚切换为相应的启动选项。

回帖(1)

话多显蠢

2025-5-8 18:14:07

针对您在使用CYUSB3014-BZXC(FX3)时遇到的I2C Boot模式无法启动的问题,以下是逐步排查和解决方案:




1. 确认EEPROM硬件连接和配置




  • I2C地址匹配

    FX3默认从I2C地址 0x50(7位地址)读取固件。检查M24M02-DRMN6TP的地址引脚(A0/A1/A2)是否接地或上拉,确保其地址与FX3的I2C Boot配置一致。例如:



    • 若地址引脚全接地,则EEPROM地址为 0x50

    • 使用逻辑分析仪或示波器抓取I2C总线信号,确认通信正常。




  • I2C总线完整性

    检查I2C总线的上拉电阻(通常为4.7kΩ)和信号质量。过长的走线或干扰可能导致通信失败。






2. 验证固件镜像的正确性




  • 生成固件时的配置

    在Cypress SDK中生成.img文件时,需在 cyfx3sdkfirmwarecommonscript 目录下的配置文件中指定I2C启动参数,例如:


    // cyfxtx.c
    #define CY_FX_BOOTER_IMG_HEADER_ADDR   (0x40000000)  // EEPROM起始地址
    #define CY_FX_BOOTER_I2C_SLAVEADDR     (0x50)        // EEPROM的I2C地址

    重新编译固件并生成镜像。




  • 镜像头信息校验

    使用工具(如Hex Editor)检查生成的.img文件前64字节是否包含有效的FX3引导头(Boot Header),包括签名 0x43585953("CYXS")。






3. 检查EEPROM烧录过程




  • 烧录工具的正确使用

    在Cypress USB Control Center中,按以下步骤操作:



    1. 连接FX3进入USB Boot模式(按住复位键或拉低PMODE引脚)。

    2. 选择 Program > FX3 > I2C E2PROM,加载.img文件。

    3. 确认烧录完成后提示 "Programming completed successfully"




  • 读取EEPROM验证数据

    使用USB Control Center的 Read 功能将EEPROM内容读回,与原始镜像进行二进制比对,确保数据一致。






4. 排查FX3芯片版本差异




  • 确认芯片型号和版本

    检查新旧板卡上的CYUSB3014-BZXC丝印,确认是否为同一版本(如Rev.A vs Rev.B)。不同版本可能对I2C时序或启动流程有调整。




  • 调整I2C时钟速度

    如果新版本FX3对I2C时序更严格,尝试在固件配置中降低I2C速度(如从400kHz降至100kHz):


    // cyfx3sdk/firmware/common/cyfx3sdk.h
    #define CY_FX_I2C_EEPROM_CLOCK       (100000)  // 单位:Hz





5. 其他关键检查项




  • 电源稳定性

    确保EEPROM和FX3的供电电压稳定(3.3V±5%),避免因电源噪声导致启动失败。




  • PCB布局差异

    对比新旧板卡的I2C走线长度、过孔数量,确认新板卡未引入信号完整性问题。




  • 尝试已知正常的EEPROM

    将旧板卡上的EEPROM焊接到新板卡测试,若成功则可能是新EEPROM硬件问题。






6. 使用调试工具进一步诊断




  • JTAG调试

    连接JTAG调试器(如J-Link),在FX3启动时捕获BootROM日志,观察是否报告I2C读取错误(如NACK或超时)。




  • FX3启动模式配置

    确认PMODE引脚电平设置正确:I2C Boot模式需设置为PMODE[1:0]=01(即PMODE0拉高,PMODE1拉低)。






总结建议



  1. 优先验证EEPROM数据和硬件连接,排除烧录错误和硬件问题。

  2. 对比新旧固件和硬件配置,确保启动参数完全一致。

  3. 联系Cypress技术支持,提供新旧板卡的FX3版本信息及失败日志,确认是否存在已知兼容性问题。


若上述步骤仍无法解决,请提供更多硬件设计细节(如原理图片段、I2C信号波形)以便进一步分析。

举报

更多回帖

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