这两天调试程序,发现了一个问题,程序用仿真器下载到XMC4500后Debug,程序运行正常。将板子安装到设备后,上电程序运行不正常,需要手动复位后运行才正常。
仿真器用的Jlink 驱动程序为Jlink V6.30d。
问题解决步骤:
1、首先怀疑复位电路出现问题,即由于电容容值小(10nF)导致复位时间不够。分别将复位电容更改为100nF、10uF,问题仍然存在。期间用示波器测量了3.3V电源和复位引脚,并查看XMC4500手册,100nF复位时间足够。
2、怀疑晶振没有起振,即复位结束后晶振才起振正常工作。同样用示波器观察3.3V电源、复位引脚、晶振输出,抓取上电时三者波形,发现有源晶振正常启动。
3、查看XMC4500的boot模式设置引脚,Normal模式TMS上拉,TCK下拉。核对电路,发现TCK没有下拉,于是加上下拉电阻5.1K。结果反而导致程序下载不成功。
结合自己的实际测试,下载接口TCK悬空,TMS接上拉电阻,程序下载运行正常。
4、在网上查找资料,发现有人说是因为外设上电后初始化需要时间。于是尝试在进入main()函数后立即加延时,发现程序可以正常运行了。 然后结合自己的电路板分析,板子上有外设DP83848,上电后XMC4500很快进入工作状态对其进行初始化,但是此时DP83848还处在自己的上电初始化状态,导致XMC4500初始化不成功,造成整个程序运行不正常。
查看DP83848手册,其自身上电稳定需要167ms的时间,因此进入main函数后立即加延时大约200ms,程序运行正常。
总结:遇到问题,一定要利用测试工具抓现象,然后结合现象分析问题。再就是要耐下性子多多尝试,问题一定会解决。