C0或是C2启动的目的,是更改USB芯片的ID信息,并把固件载入到芯片内部RAM中运行。
C0模式是指只从EEPROM中载入USB ID信息,因为只有ID信息(8个字节),所以只需要一个小容量的EEPROM即可。当然大容量的EEPROM也可以使用C0模式,但是小容量的EEPROM只能使用C0模式启动。
如下图所示:
使用小容量的EEPROM要将A0,A1,A2接地。
这里我用了个24LC01,容量128字节,完全足够。
C0模式需要准备两个ID信息:
1. 写入EEPROM中的VID/PID/DID
2. 固件中使用的VID/PID/DID
写入EEPROM中的ID信息是用来匹配执行固件下载脚本的驱动的;
固件程序中的ID信息是用来执行传输功能操作的。
如果这两个ID相等,那么驱动会不停的下载固件到芯片,芯片又会不停的复位重启,然后又下固件。。。陷入死循环而无法正常使用板卡。
修改固件中的ID信息
固件中的ID信息在固件工程中的 DSCR.A51 文件中进行修改:
如图,就修改这三行,这里对应的ID信息为:
PID_04B4
VID_00F1
DID_0000
修改好后重新编译生成hex文件。
录制spt脚本文件
脚本文件实际上存的就是要下载到USB RAM中的固件程序。
利用CyConsole程序录制脚本文件:
第一步:点击录制按钮
第二步:依次点击 Options->EZ-USB Interface->Download 选择要下载的固件 hex 文件。
第三步:返回来点击停止按钮
第四步:在弹出的窗口中,选择要保存spt文件的地址,以及输入要保存的文件名。
准备写入EEPROM的iic文件
这个文件需要用到16进制的编辑器。
新建一个文本文件,修改后缀为iic,用16进制编辑器打开。这里我用的是Notepad++装了一个HEX-Editor的插件。
在View in HEX模式下:
C0模式下这8个字节对应的意义如下:
所以这里我修改的ID信息为:
VID_1234
PID_5678
DID_0000
烧写iic文件至EEPROM
修改好后将该iic文件保存。
然后进入CyConsole EZ-USB选取iic文件进行烧写。
修改驱动文件
留着下回写,好困==