MSP430系列开发调试经验心得
低功耗、流行的SOC结构,适合做智能仪表的MSP430开始吸引我了。
MSP430系列是一款低功耗且流行的SOC结构,非常适合用于智能仪表领域。在我的开发过程中,遇到了一些另类问题,下面将与大家分享一下我的经验和解决方法。
MSP430系列的IAR调试常见问题和经验心得
首先,在连接仿真器时,可能会遇到无法下载的问题。这个问题很常见,IAR会提示找不到目标。解决方法有三种:一是并口驱动能力不足,可以在电脑的BIOS界面下将驱动设置成ECP或者ECP/EPP模式;二是JTAG线太长,一般超过20CM不推荐使用,并且不要让线交叉缠绕,否则会影响实时在线调试;三是负载太大,如果板子的功耗较大,电流超过20MA,建议使用外接电源,以免并口驱动能力不足,导致MCU电压被拉低而不能写入FLASH。
另一个常见问题是程序下载到一半突然报错,提示某个地址写不进去。解决方法有三种:一是芯片的复位电路引起的,写FLASH时系统电压会波动,可能导致芯片复位,使用BSL再烧一遍可以解决;二是芯片可能死机了,断电、拔掉JTAG后稍后再试,一般没有问题;三是如果以上方法都无法解决,可以尝试给芯片上电,电压设置为3.6V,重新写一次,一定能解决。因为F1XX系列的写FLASH电压不能低于2.7V,所以用3.6V电压,无论什么样的芯片都能写回来。
关于3.40以上版本的仿真器设置问题
说实话,我在开发过程中不太愿意随便换IAR的版本,因为有些语法不兼容,有些设置不一样。最近安装了3.40的限制版,一路NEXT,好像没什么特别的地方。装好后发现芯片的选择余地变多了,包括了F2XX等多种类。然而,在硬件FET接着跑一个DEMO时,却报错了!原来在仿真栏目里除了选择FET硬件仿真外,还需要选择访真器,我没有仔细看,结果默认选项是TI-USB,所以出了问题。将选项改成LPT(并口FET),问题就解决了。
另类级问题
1. F1611大数组定义不能正常运行的问题:当使用F1611时,有可能遇到RAM中定义的变量或数组超过一个极限时,MSP程序无法正常运行。可以通过将I/O输出电平来确定程序进程,这样可以方便地判断是否是由WDT引起的问题。解决方法有三种:一是对数组使用__no_init_定义,在上电时编译器不会产生特殊的附加函数去初始化RAM;二是修改IAR中Cstartup.S43文件中的__program_start子程序,增加一个关闭WDT的操作或者设置WDT时间长度超过32MS;三是在Project--Options--Linker--Config中选择Override default programe,并将Entry lib设置成__program_start。这些方法都是已知解决1611RAM初始化时间超过WDT默认而复位的解决方法,如果使用汇编,则没有这个问题。
2. SVS导致MSP "坏死" 问题:在开发一款仪表时,我使用了F425,并且将SVS的电压设置为3.3V。然而,在第一次JTAG写入后,板子就没有再启动工作了。最初以为MCU被写废了,但后来接上电源和电流表发现电流有周期性跳跃,原来该MCU正被SVS复位中。解决方法是重新加电压,超过3.3V,修改设置后重新写入FLASH,问题就解决了。希望这个经验能提醒使用SVS和SVS的朋友们注意,有时这个问题不太容易被发现。
3. I/O电压供电居然也行?在设计低功耗设备时,有时我们会将MCU的引脚用于给其他IC供电。这个方案最早我在PIC单片机上使用过,并且在MSP430上也没有问题。但是,在硬件设计时一定要慎重考虑,因为I/O可以供电给其他IC,同样也可以从其他IC中取电。在一些设计中,MCU的静态功耗无法降下来,尤其是在设计变送器或者4-20MA双线制设备上,需要谨慎处理这个问题。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。