最近在调试自己画的LPC2214的板子,JTAG没问题但ISP模式一直过不去。我的问题很奇怪,nxp提供的ISP下载软件读取ID的时候,首先要从串口发送一个3F,然后LPC反馈Synchronize,软件接到这个字符串后在给LPC发送Synchronize,然后LPC反馈Synchronized OK,然后软件发送晶振频率读取芯片ID等等,我的板子在反馈Synchronized OK的时候反馈回来的是一堆乱码。郁闷了三天最后才找出原因。通过这两天上网查资料,对ISP 不成功的原因基本上有了比较全面的了解,现在整理一下,以便后来人少走弯路。
ISP不成功基本上有如下几种原因:
1、电源问题,如果电源不稳定的话一般ISP会过不去,LPC内核电压是1.8V,IO电压是3.3V,周立功的板子是两级供电,先把9V的电源转换成5V,再用LM1117-3.3和LM1117-1.8两个两个电源转换芯片为ARM供电,一开始我也怀疑是电源的问题,我把电源片子拆下来用直流稳压源给芯片直接供电,结果一样。后来我把我的供电电路输出的电源直接飞到SMARTARM2200上,为它供电,发现开发板跑的很正常。我就把这个原因给排除了。
2、复位芯片的问题,ARM在上电后首先要执行一个复位操作,不管是按键复位还是自动复位,如果没有复位电路,ARM中的寄存器等不能完成初始化,会导致一系列问题。我的板子用的是阻容复位电路,我开始怀疑阻容复位的可靠性,就飞线搭了一个CAT1025的电路,复位后问题依旧。
3.晶振的问题,如果晶振频率不正确的话,波特率就会不稳定,以至于ISP串口出问题。我用示波器量晶振,很稳定。
4.芯片引脚配置。这是我想的最多的一个问题,从网上查除了P0.14以外确实有很多人提了很多其他要求,比如P1.20上拉之类。现在发现这些纯属无稽之谈。ISP模式只和P0.14有关。
5.串口的问题,包括串口线的反正之类,这是我最后怀疑的,因为我的板子跑串口程序跑的很正常,结果恰恰是这里出了问题。用其他型号的MAX3232搭了一个电路,结果运行正常。
FAINT。。。。。。。。。。。。。。浪费了我3天时间。