调试SAM4S程序发现一个诡异的现象,总是动不动读不到芯片了,产生错误:
Reading ARM chip id failed.
Unable to enter programming mode. Verify device selection, interface settings, target power, security bit, and connections to the target device.
ModuleName: TCF (TCF command: Device:startSession failed.)
经过重重定位,终于找到问题点,在引脚初始化时,PA7初始化后,一旦把引脚置低,如果不断电还好,可以继续读写芯片,但是一旦掉电,再使用JTAG就读取不到芯片了,同时芯片也停止工作。如果不对PA7进行操作,则没有此问题。
但是在另一款产品的板子上,则没有此问题,同一个程序烧写到两块板子上,正常的依然正常,读不到的继续读不到。测试程序已经最简化,只有时钟和PA7初始化,但是问题正常复现。仔细比较了两块板子的电路,除了引脚功能不同外,包括复位、烧写口都是相同的,奇了怪了。在尝试了去掉PB4、RESET的上拉电阻依然不行后,终于发现一个区别,在原理图设计中,JTAGSEL通过一个电阻接了3V3,但是在最初的方案中,这里是通过电阻接地!!!在拔掉了了上拉电阻后,终于,烧写正常了。
现在还残留一个问题,设计时把uart1和电机驱动芯片进行了引脚公用,但是在初始化uart1时,会造成程序死机,可能是芯片不允许共用了。