各位朋友,小弟做了几年DSP,头一次遇到一个关于复位的棘手问题,研究了一天才弄出来,现在分享一下。
我先是焊了一块新的DSP板子,用到是DSP28027,上完电,查看DSP的供电正常,晶振正常工作;
然后我就用连接上仿真器XDS100,打开CCS v5.2,连接OK,在烧写程序的时候,提示FLASHROM无法擦除,之后就卡,卡,卡,一会就报错烧录失败。
当时我想到的就是复位不正确,于是我用示波器观察了复位RESET管脚的变化,出现的是每隔13.5ms有一个宽度大概为50us的低脉冲,其余全高。于是我判断,这种情况肯定就是导致我仿真器无法烧录程序的原因。但是这个周期性的小脉宽的低电平脉冲到底是怎样产生的呢?起初我怀疑我的DSP供电不稳,复位芯片TPS7333发出来的,但是看了芯片的资料,它提示的欠压之后,即使恢复了供电,电路也应该有200ms的维持低电平延时,但是我还是不放心,改了TPS7333周围的几个电路参数,没有作用,之后怀疑板子上的复位信号线走线过长,又离晶振很近,怀疑干扰,就去掉晶振--结果无效,最后我就割掉了7333和DSP的RESET引脚的连线。这时候才发现,这个低电平脉冲是由DSP发出来的,那么DSP为什么要周期性地发出来这个复位信号呢?只有一种可能,WatchDog,想到这,我嘞个擦,我程序根本就没烧得进去,看门狗怎么会起作用?百思不得姐,看资料,原来DSP默认看门狗是打开的。于是乎,我想啊,我必须要烧的进去程序,我才能关闭看门狗啊,现在连程序都不让烧,我咋关呢?
关键的时候,偶领导怀疑我用的仿真器有问题,让我换个型号的仿真器试试。我想怎么可能呢,在找这个问题的时候,我怀疑过这个仿真器突然坏了,我用这个仿真器在其它板子上,能够正常运行。但是我还是换了一个XDS510的仿真器,用的CCS v3.3,一试,完全没有问题!真奇怪,我又换回之前的XDS100仿真器,这下没问题了。。。
总结:遇到问题,一级级的排除法追根溯源。实在找不到路子,就换个开发的环境(仿真器、CCS版本),还有看看网站上有没有人遇到类似问题,CCS3.3和CCS5.2的差别,以及XDS100和XDS510的差别,有时间仔细研究一下细节。 |