本帖最后由 newofcortexm3 于 2012-10-28 15:47 编辑
最近两个月,多次参加了TI与21IC共同推出的在线培训课程,受益颇多。9月,参加了TI的宣讲会,虽然简历石沉大海,但被其30年来不断创新的企业文化而深深折服。希望明年的10月底,能成为TI的一员。
与TI结缘是2010年的省电子设计大赛,虽然无缘参加TI冠名的电源设计类比赛,但对TI的电源应用留下了深刻的印象。2011年,在导师的公司里做毕业设计,最先选择的处理器是TI Stellaris的ARM cortexm3内核的LM3S5956。同时,那段时间也接触并了解了公司的一款电力测温系统。该系统的MCU就是TI的MSP430芯片,虽然当初对MSP430不甚了解,但是其超低功耗的特性却早已铭记于内。正式利用TI的处理器进行开发已是2011年的7月,是我读研期间的项目,利用C2000系列的TMS320F28335研发一款两轮自平衡的机器人移动平台。
依稀记得,刚进入实验室的两周,疯狂的搜索着有关TMS320F28335的中文资料,结果差强人意,了解足够,深究作罢,只好研读英文技术手册。这样的学习的方式被导师批评效率太低。不得已赶鸭子上架,先从TI提供的例子程序
spra958.zip
(2.64 MB)
阅读开始,中间不断的翻阅相关的手册。久而久之,算是入了门,慢慢地摸到了门道,也记录了些心得与体会。
第一个编写的TMS320F28335程序是利用CPU Timer1作时间戳。项目中已经使用了Timer0来配置系统的控制周期,而Timer2一般是为DSP/BIOS系统应用而保留着(若不使用DSP/BIOS系统,也可以用作他用)。在修改ConfigCpuTimer函数的基础上,编写了CPUtimer1的配置函数InitSystimer函数,它将定时器配置成每隔10微妙计次数,因此只要获得计数寄存器TIMH:TIM和周期寄存器PRDH:PRD的差值就可获得时间。对于CPU Timers具体的操作和寄存器说明,我规整了一篇文档《28335之系统时钟》
28335之系统时钟.pdf
(225.04 KB)
,**链接:http://hi.baidu.com/mr_d_prince/item/d3c5f016c8748341e65e06ef
随着项目实践深入,要实现的功能越来越复杂,所定义的常量、变量也越来越多。某一天,当我增加了串口通信的代码之后,CCSV4.12竟然提醒编译不通过,提醒的内容是“.econst”的容量超限,如下图所示,而把增加的代码删除之后,程序可以正常编译且运行。
既然是容量问题,那我削减变量、常量的个数总可以吧,当我费了九牛二虎之力把可删减的常变量去掉之后,这个问题依然存在,整整窝火了一周。现在想来,当时太天真了。我想大部分初学者,都非常信任官方提供的例子程序,都认为问题是出在自己身上。而此问题的原因恰恰是CCS安装完C2000目录下自带的*.Cmd文件(09年之后)上的那些“段”的空间映射的太细,太小。新版本的*.Cmd文件(28335_Ram_lnk.cmd)上“.econst”段空间长度为0x1000,只有之前的版本的四分之一。所以改写*.cmd文件,将空间增大之后,问题就迎刃而解了。此问题让我深入了解了存储器内存映射的有关知识,也加深了对操作系统的理解(*.cmd文件中的page的设置与操作系统的页表,虚拟内存与物理内存映射类似)。关于*.cmd文件的编写与具体“段”空间的映射,我整理了一篇文档《F28xx系列的CMD文件》
F28xx系列的CMD文件.pdf
(395.37 KB)
,**链接:http://hi.baidu.com/mr_d_prince/item/224a97e3d380111b595dd813
到目前为止,我参与研发的两轮自平衡机器人(照片见第9楼)已经能自平衡并且能根据设定的命令前进或者转弯。该两轮机器人的功能实现主要涉及到了C2000的ADC,EPWM,ECAP,SCI,Timer,NMI等功能模块。其关键技术是姿态传感器信息的融合与控制算法。姿态传感器信息的融合主要利用了卡尔曼滤波算法和高低通互补滤波算法,控制算法采用了经典的分段式的PID控制算法,最近正在尝试使用更先进更智能的控制算法,成功后与大家分享。卡尔曼滤波算法和高低通互补滤波算法的资料已在另一帖子分享,链接 https://bbs.21ic.com/icview-388326-1-1.html
实践的过程中难免遇到问题,上文所述的是我遇到的问题中相对比较典型的。遇到问题对于当时的我来说或许是不幸,但过了这道坎之后,发现这是天大的幸运,不但提升了解决问题的能力,还能从中收获新的知识,岂不美哉!另外,遇到问题时,我们应当大胆,应当自信,我们有权利去怀疑官方,也要敢于质疑官方。
最后,对于TI与21IC共同推出的在线培训课程和此次分享校园故事表示感谢,让我对DC-DC的基础知识、MSP430和C2000的体系结构有了更全面的认识;让我们能以低价享受TI的LaunchPad开发套件;让我能借此机会与志同道合的网友分享遇到问题解决问题的过程,更重要的是这样的活动为网友们相互了解、相互交流、提升技术创造了条件。 华南理工大学 软件学院 |