大家好:
这段时间我们公司正在开发一个新项目,板子是自己设计的,使用的主芯片是TI的LM4F232H5QC,使用20针JTAG一直都无法下载程序。我的情况说明如下。
1、仿真器使用的是TI的代理商捷恩斯威公司设计的专门针对TI的M3/M4的仿真器S-LINK(该仿真器已经集成了ICDI功能,可以用来下载、仿真和解锁TI的M3/M4的程序。我可以保证该仿真器是可以正常工作的)。
2、使用的MDK版本是Keil Realview MDK4.72,点击LOAD按钮,弹出对话框“Could not initialize the target device.Please power cycle the board and try again!”。 附加说明:MDK中Flash Configuration Tools菜单下的Debug和Utilities选项均是选择Stellaris ICDI,并且点击Utilities选项Stellaris ICDI右边的Setting按钮,弹出Stellaris Debug Interface DLL对话框,Attached Devices下拉菜单出现Stellaris USB ICDI(SN:MFG-TEST),即可以检测到仿真器,Debug 模式选择的是JTAG,时钟是500KHz。
3、起初,我怀疑是芯片解锁了。为了解锁芯片,点击TI的闪存工具LM FLASH Programmer的Other Utility的Unclock按钮,弹出ERROR:Failed to unlock connected device,即不能解锁。附加说明:我的板子是没有使用/RST按键复位的,为了模拟按键复位,我点击Unlock按钮,弹出消息“Assert and hold reset while powering up the device”,然后我将LM4F232H5QC的第63个管脚,即RST管脚直接接地,这相当于按键复位了。
4、我的板子只是使用了上电复位POR,没有使用/RST按键复位(出于产品安全考虑,板子不能使用按键)。20帧JTAG只是使用到了4个接口TCK,TMS,TDI,TDO。/TRST没有使用到,这可以从LM4F232H5QC的datasheet中查到。TI的M4芯片的POR复位和/RST复位管脚合二为一了。
5、根据datasheet说明,如果使用POR复位,芯片的/RST管脚必须通过一个0–100K欧姆的上拉电阻连接到3.3V的电源。我使用的是10K的上拉电阻,并且为了保证供电稳定,上拉电阻的另一边还串联了0.1uF的电容(电容另一端接地)。
6、主板上的晶振是16MHz的。MDK中的Flash Configuration Tools菜单下的Target选项中晶振设置也是16MHz。
各位大侠,谁遇到过这种问题的,该如何解决,知道的还请指教一下,万谢!
Triton Zhang:
建议楼主从以下步骤检查问题:
1. 在LM FLASH Programmer 工具中选择ICDI,设计JTAG,100K如下图所示:
2. 在第三栏"Flash Utilities"中擦除FLASH:
3. 如果能擦除成功说明仿真器能正确连接到设备,如果不能,则需要检查你的硬件是否有问题。
4. M4 可以通过JTAG的4个管脚复位,可以不接RST管脚。
weiyu cui:
回复 Triton Zhang:
您好,请问之后在怎么办?我也需要多同样的情况,板子是TI的TM4C1294,可以擦除后。谢谢
xyz549040622:
回复 weiyu cui:
JTAG引脚被占用了,你用串口擦除后就能重新用JTAG下载了。