电子设计竞赛系列指导

电子设计竞赛系列指导之一

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,以上提到的几个控制器都有同系列但存储器大小不同的替代品。
大多数学校开展电子设计大赛的培训是在暑假,老师会给学生讲一些基础知识,补充一些实践经验。当然要想在这两个月的假期中有很大提升,则需要合理地利用好这个学习的机会,特别是课余时间要利用起来,要有一个学习计划,其中每个阶段为大赛准备什么知识都要很明确。我觉得可以这样分配这两个月的时间:


 

一.

 

确定试题方向,补充相关基础知识(5天)。从历届电子设计竞赛试题来看,一般可以分为控制类(以小车为代表),仪器仪表类(除了示波器,频率计这类题目还包括一些数据采集处理类的题目),通讯类(调制、解调、无线通讯),电源类(电压源,电流源,开关电源等)这几个类型。参赛者应该有针对性地做准备,确定自己的方向,再进行复习。如果选择了小车,要了解相关传感器和电机控制知识等;做仪表类的题目则需要复习一些仪表基础知识,比如仪器的参数、测量误差的计算方法、常见仪表的原理以及一些算法(FFT、,FIR)等(我觉得相当一部分人现在还不知道频谱仪中dbm的含义),当然,这部分不能花太长时间,大概了解就行,以后做设计时再慢慢体会。

 

二.

 

 


准备常用模块(20天)。在复习好基础知识之后,我们就要开始做些简单的东西来练练手。先从模块做起,首先把你所选控制器的常见内部资源调通,比如定时器、外部中断、SPI口等,然后根据自己方向来准备小的应用模块,做控制类的题目可以准备直流电机的驱动、步进电机的驱动、暗线跟踪模块、避障模块、加速度传感器模块等等,同时可以尝试做一些小的系统比如自动电梯等。(现在在和EEWORLD的编辑商量后面是否可以搞这样一个活动,让有经验的工程师带大家一起做好这几个模块,包括电路设计和代码编写)。在准备这些模块的时候需要整体考虑,而不要光顾着把这个模块做出来就行,比如直流电机的驱动中有时会用到PWM控制转速,于是有些选用51单片机的同学就会到网上下一个51单片机的PWM例程,然后调通就认为这个模块准备完毕。但是你分析过这个例程吗?他占用了多少资源?对扩展其他功能有没有影响?你考虑一下,就会发现你的PWM可能占用了两个定时器,这对其他的功能扩展是由很大影响的。当时我就用CPLD写了一个PWM的代码,然后通过4个数据线连到单片机上,单片机送固定的电平到这四个数据线上就可以控制电机正传、反转、速度的大小,只占用了单片机4个IO口。如果速度等级不需要那么多,三个IO也行。对于仪器仪表类的题目,我建议大家准备一下DDS模块,液晶显示模块(点阵多大,可能会显示波形、曲线)、按键,高速AD采集模块(最好有10M),DA芯片的驱动(串行总线的就可以),FFT算法,同时设计一个滤波器模块(参数自定),熟悉运算放大器的几个典型电路,进度快的话可以学点CPLD。当然,这段时间你还要准备好最小系统,特别是那些准备用贴片封装控制器的同学。这个阶段也是用来熟悉自己选用的CPU/可编程器件,以及一些基本电路模块,遇到问题要仔细分析,从正面解决问题,这样才能真正地有提高。

 

 

三.

 

做两到三个历届经典试题。这个阶段要留差不多一个月的时间,完成两个完整的系统设计。这两个系统最好是历届比较典型的试题,比如控制类的学生可以做一个功能比较齐全的小车以及悬挂物体的控制那一题。仪器仪表类的学生可以做示波器和频谱仪(用DDS来做)的试题,用液晶做显示,历届题目是使用电子管示波器来改装的。前年的试题就没有规定,可以用液晶来显示,我觉得这是个趋势,嵌入式系统越来越热门,用电子管显示已经落后了。最好还可以做一下前年的A题,也是比较经典的一个题目,用软件FFT变换来实现时域到频域的转换,让你对算法会有一个认识。当然经典的题目很多,不可能都做一遍,最主要地还是要掌握好一个系统的构架设计,这也是各个人设计的东西存在差距的原因,他的构架不同,可能他怎么做得好都不可能在某些性能参数上超过另外一个人。所以还要利用时间把其他没有时间去做的经典题目获奖方案仔细看一下,作一些分析。


如果能够把握好上面三个环节,我想通过这个暑假的锻炼一定会有一个很大的提升,也能更好地适应比赛。

冯大同 发表于11-22 10:40 浏览65236次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

冯大同
冯大同(元帅)
金币:1539个|学分:31304个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号