项目中嵌入式开发部分的MCU选用的是LM3S9B96。。(这是一年半前的项目,近期老板要求复原。一些重复的问题又出现了。千不该万不该,早知道就做好相应的笔记了。本着亡羊补牢,为时未晚的心态,把一些问题总结一下。留待自己以后的回顾,也惠及大家。(*^__^*) 嘻嘻……)
软件部分比较顺利,采用SafeRTOS。一个任务一个.C文件,然后进行一些中断,优先级等的设置,就基本OK了。出现的问题网上大部分都能找到解决方法。问题和解决方法都比较固定。
硬件部分的确需要经验。当时是第一次设计PCB,布局不够理想,稀稀拉拉的,一看就知道是个初学者。幸好是低速板,几十M的运行速率,线布通了就没有多大的问题了。借鉴TI提供的基于Stellaris系列的LM3S9B96开发板的用户手册提供的原理图。再根据实际的项目需求,自主设计了PCB。硬件模块主要包括串口通讯模块、光栅数据的采集与处理模块以及电机驱动模块。然后问题来了。
软件程序已经在师兄师姐的基础上修改好,验证过的,没有问题。
error 1:使用LM JINK下载程序。出现问题。
it can't load code - get "JTAG initialization failed 0x00000004"
"Failed to load flash loader: c:\ ... \FlashLMSxDxx.flash".
之后我使用LM Flash Programmer擦除了整个Flash。出现
**ERROR**: Unable to initialize the target!
解决方法:我换了一种下载方式,使用IAR6.3下载程序。
出现**ERROR**: Unable to connect-Check hardware,speed and interface selected。
提示有三方面原因:硬件电路、连线是否完好;速率是否古河;接口选择是否对应。
我网上查了下,配置如下。下载地址是0x0。如果LM3S9B96的版本是C1的话,是0x1000。
因为C1系列的前面地址,TI打了个补丁。
配置好之后,仍旧出现上述问题。然后我检查了以下接线。把JTAG线路上的引脚重新焊接了,排除 虚焊的存在。还有JTAG的排线有两根由于老化而断了,重新换了新的。
上电Program。it‘s OK!!!
error 2:串口通信,我使用不同的供电方式,结果不同。(电路板有5V适配器和电脑电源供电接口接口)
使用5V适配器供电,串口可以正常传输数据。
使用电脑电源供电,串口不能正常数据传输(时不时出现乱码)。
解决方法:经检查是电平转换芯片有问题。
之前使用的是MAX3232。然后换了MAX232。就可以了。
疑问???
MAX3232是5V转换成+12V、-12V。MAX232是5V转换成+12V和-12V。而LM3S9B96是TTL电平3.3V的电压。 为什么换成MAX232还就解决问题了呢。看来要好好研究下MAX232和MAX3232的数据手册了。