电子设计竞赛系列指导
2009年全国大学生电子设计竞赛即将开始,各个学校已经开始安排相关培训,准备参赛同学也已经有针对性地开始提高自己的动手能力,为配合此次电子设计大赛,特将本人参加大赛的经历以及这些年从事硬件研发的经验作了总结,并发表于本论坛,希望对各位参赛的同学有一定参考意义或者帮助。同时,欢迎热心的朋友提出不同观点或者补充。让我们共同讨论、共同进步。另预祝各位准备参加2009年电子设计大赛的同学能够通过此次大赛大幅提高自己的动手能力,并在比赛中取得优秀成绩。
电子设计竞赛系列指导之一
CPU的选择
最近经常有参加电子设计大赛的同学问我这样的问题:我最近在学XX单片机或者XX ARM,不知道这个对大赛是否有用?或者参加电子设计大赛最好学什么控制器?我想应该从以下几个方面去考虑这个问题:
1.
基本资源是否够用?很多学生都很熟悉AT89S系列单片机,常用、比较容易买到的是AT89S51/AT89S52,但是这个两个型号的单片机RAM偏少,只有128/256字节(一般不建议在单片机外部扩展内存,因为其连线太多,外部RAM存取速度也会慢些)。如果在比赛中需要建立大一点的数组,可能就会受到限制,而比赛期间时间比较紧张,很难写出效率高、占用内存少的代码,如果遇到RAM溢出,那将是很大的麻烦。而且这两个型号的单片机其他硬件资源也比较少,只有串口和IO口。如要连接EEPROM则需要通过软件来模拟IIC或SPI总线,速度慢。而且不带内部AD(有些地方对AD的速度要求不高可以用单片机内部的AD(比如小车上的AD),因为连线方便),同时还不支持硬件仿真(只能用别的单片机来仿,仿真时占用串口和一个定时器)。
2.
性能怎么样?这是一个很实际的问题。我们参加电子设计大赛的作品都是由手工焊接出来的,很多地方就是用线连在万能焊接板上,如果性能不可靠将会出现晶振不起振,数据线长了传送的数据就不对,而且容易被静电打坏,这些都将直接影响你的比赛进度,有些单片机速度慢,数据处理能力差,也会影响到赛场的发挥.而且有些地方还需要考虑单片机的功耗等
3.
开发流程与平台是否简单、容易上手?很多学生学的是51单片机,觉得它速度慢、资源少,于是决定在比赛前重新学一款新的控制器,但是有个问题你要首先要考虑:开发平台要简单,参考资源要多,能否在短期内掌握内部资源的操作.开发工具是否昂贵,比如dsp的开发工具一般都比较贵,因而很少有学生使用DSP来做开发,而且DSP本身参考资料不是很多.
经过以上比较,我推荐以下几种CPU并作相关说明:
1.
LPC2138
这个CPU比较贵,但是为了比赛准备两片也是值得的,他的RAM很大,比如你做2007年的A题(音频信号分析仪)就非常需要这个芯片,32K的RAM,带有AD,该题的要求是20Hz的分辨率,5S的分析时间,只要多采点数据,做到10Hz的分辨率都没有问题,但是很多学生就是因为选用了常见的51,M16(网上有这个单片机的FFT代码,但是点数很少,而且是汇编代码的,很多学生改起来比较困难)等单片机,这些单片机自带的RAM不够,51单片机没有硬件乘法器。有部分学生用51单片机做,外扩了RAM、AD,还挂了个LCD,连线复杂,可靠性很低,到了测试的时候很可能会出现意外(这里要友情提醒一下,你们的比赛作品在上交的时候,装到盒子中时一定要垫上一定的海绵,泡沫或者碎纸,以免运输过程中损坏),比如启动不了了。而选择LPC2138的话 ,它本身自带AD,带大容量的RAM,这样,只要在外部接模拟调理电路和LCD就可以搞定硬件了,其他就是软件编程,处理速度不需要担心,你可以使用60M的主频,带硬件乘法器。大容量的RAM和FLASH对于需要移植操作系统和GUI的作品更是适用。该芯片可以用KEIL(你们应该很熟悉了)开发,用USB接口的调试工具,支持硬件仿真,开发工具便宜(推荐使用智林的ULINK或者Jlink)。比赛前需要做好最小系统的板子。
2.
STM32F103RB
他的好处与LPC2138差不多,但是资料更多些,而且提供了一些算法库(FFT,PID),这个算法库是很有用的,因为让你用汇编去写这个是不现实的,自己用C语言写的效率也很低,有了这些你就可以直接调用了,而且STM32F103是Ctecx-M3的内核,速度会比ARM7快,效率也有所提高.带实时时钟、串口、SPI接口、IIC接口、AD等常用外设.但寄存器设置会比LPC2138麻烦点.,其开发工具类型很多(推荐使用智林的ULINK或者Jlink),一般价格都比较便宜。比赛前也需要做好最小系统的板子。
3.
ATMEGA32单片机,在AVR单片机里这个单片机资源适中,2K的RAM,做一般的题目应该是够的,32K的FLASH也足够了,一般比赛过程中是写不了那么大的代码的,除非之前移植好了操作系统、GUI等东西在里面。其资源要比普通51单片机多很多,自带的AD,在非高速数据采集类的题目中一般是够用了,很多业余爱好者很喜欢用AVR单片机,其开发工具可以自己制作或者购买,仿真器会贵一点。AVR的型号很多,但是只要稍作修改就可以通用,相关网站和资料很多,自学起来应该比较方便。
4.
有些学生接触单片机比较晚,学校不能提供相关的开发平台,决定选用51单片机,我建议你们使用STC89C58RD+(或者新出的STC11F系列,用法和STC89C58RD+差不多,但速度更快,差不多要快12倍,单指令周期,速度可以赶上AVR了)的单片机,相关资源较AT89S51都多些,带EEPROM,而且可以跑40M的晶振,可以用串口下载程序(买个USB转串口的工具,就可以变成用USB下载程序了),与AT89S51单片机的开发方法一样,使用KEIL,只是ISP的方法不同.对于做控制类题目的学生可以选用这个单片机,外扩SPI总线AD,5V的接口电平,容错性能更高。
5.
MSP430F149 这是非常稳定的一款单片机(在EMC试验中表现很出色),但是片子稍微贵了点,资源比较多,IO中断多(这个对控制类的题目比较实用,各个传感器都有自己的中断),带AD、SPI等片内外设。功耗超低,使用IAR430开发,开发工具可以自己制作一个并口仿真器,支持硬件仿真,比赛前需要准备好最小系统板。
以上提到的LPC2138,STM32F103,MSP430F149是贴片封装,需要在比赛前准备好核心板,把JTAG口、晶振、电源接口画在PCB上,并把所有的其他端口通过排针引出,比赛的时候可以将这个CPU模块焊到万用板上,这样可靠性也会高很多.当然,除了以上几个芯片也可以选用其他的芯片,如果身边有TI的DSP开发工具的且想使用DSP的学生,我推荐大家使用TMS320F28027的DSP(就是之前用来DIY录音娃娃的),这个可以根据个人的方向进行综合比较选择。以上器件的选择是针对大多数学生,有些学生通过自学已经掌握了一些复杂的控制器,比如C5000的DSP,ARM9等那更好。
6
EasyARM1138 这是一款比较稳定的ARM,内嵌比较先进的Cortex—M3内核,并且片子很便宜,一个开发板99元,资源比较多,IO中断较多。4个Timer定时/计数器,3路全双工UART、7组GPIO口,每个口都可以设置为外部中断、8路10位ADC。。。关键是系统相当稳定。本人已经用它参加好几次比赛,今年参加比赛我们就是选用本款ARM单片机。
一般比赛的时候写的代码不会太多,所以FLASH不需要很大,除非之前已经准备好操作系统,但是RAM就有可能需要很多,特别是一些算法较多的题目,短时间内不可能去做优化,会占用比较多的RAM,一些RAM小于1K的单片机就不能胜用。今年的比赛将性价比列入评分内容,以上有些芯片由于具有大容量的RAM或者FLASH,价格会偏高,比赛的时候可以准备一个系列的芯片但RAM和FALSH比较少的控制器,如果比赛中确实不需要可以将调好的代码移植到小容量的控制器中,比如选用ATMEGA32可以准备一片ATMEG16,以上提到的几个控制器都有同系列但存储器大小不同的替代品。
关于控制器选型的相关问题可以在下面跟贴一起讨论。我会利用业余时间完成其他指导文章贴出来与大家一起讨论