"); //-->
MSP430是TI公司推出的16位单片机系列产品,在电池供电的低功耗应用中具有独特的优势。其工作电压为1.8~3.6 V,正常工作时功耗可控制在200μA左右,低功耗模式可实现2μA甚至O.1μA的低功耗。MSP430系列单片机作为性能优异的MCU在中国已经得到了广泛的应用。MSP430具有高集成度,通常在单个芯片上集成了12位的A/D转换器、比较器、多个定时器,以及片内USART、看门狗、片内DCO等。一般单片就可满足大多数的应用需要。
MSP430单片机的程序存储器是Flash存储器,并且支持JTAG在线编程,可以方便地实现程序的下载、仿真、调试和升级。
目前整合性最好的MSP430F44X系列,具有60 KB程序存储(可记录数据),2 KB片内RAM,6个I/O端口(P1和P2具有中断能力),160段液晶驱动,2个串行端口,4个定时器(其中TB带有7个捕获/比较器,包括看门狗),模拟比较器,硬件乘法器,8路12位A/D转换器,频率调整电路FLL+以及系统复位SVS模块等。而基本型的 MSP430F1101 和MSP430C1101只有1 KB程序存储、128字节片内RAM、模拟比较器和2个定时器等。
MSP430F44X与MSP430F11X在硬件结构上、在系统整合上存在较大差异;MSP430F41X与MSP430F11X的差异不是很大。但这3系列芯片的价格由几元到数十元不等,那么如何选择系统芯片呢?以3种芯片为例,其系统功能框图分别如图1、图2、图3所示。
2 常用的MSP430应用系统的设计方案
在图4所示系统中,有模拟输入、脉冲采集、日历时钟、液晶显示、键盘操作和外围设备控制等。可采用以下几种方案进行MSP430的选型。
(1)选用MSP430F44X系列
这个方案设计最简单,因为目前MSP430F44X系列芯片是集成度最高的。该系列任何一款芯片都能胜任(一般程序字节不会大于32 KB)。
(2)选用MSP430F41X系列
如果程序在8 KB范围以内,那么这是一种较好的方案。MSP430F41X系列虽然不能直接进行A/D转换,但整个系统价格适中。
(3)选用MSP430F11XX系列
该系列芯片不能直接驱动液晶,且程序量较小,也没有直接的A/D转换能力。与前两种方案相比,这是明显的不足,但其价格是最低的。
在这3种方案中,如果对生产成本要求不高,则第1种方案最好;如果要考虑批量的生产成本,则第3种方案最好,性价比最高。如果使用MSP430F1121A,则批量报价不到9元,适合于大批量生产、成本敏感的产品,可得到最高的性价比。但第3种方案存在很多问题,有待解决。
3 高性价比的MSP430应用系统解决方法
图4是较为经典的MSP430应用系统框图。如果使用最经济的MSP430系列器件MSP430F11XX系列,则要解决5个问题:模/数转换问题、液晶显示问题、程序量小的问题、日历时钟的程序化问题及串行通信问题。
3.1模/数转换问题解决方案
MSP430F11XX系列单片机片内有模拟比较器Comparator_A和功能强大的定时器Time_A,可以构成斜率(Slope)A/D转换,实现从模拟到数字的转换。具体原理如图5所示(这里以电阻模拟量到数字量的转换为例)。
在图5中,Rref、Rmeas分别为标准的参考电阻和被测量的电阻,电容ca0起充放电作用。比较器的输出CAOUT用于驱动定时器捕获的发生。MSP430内部的模拟比较器能产生用于比较的模拟电压(关闭内部参考电压,使用外部参考电压O.25Vcc、O.5Vcc和二极管管压降)。比较器负端选择O.25Vcc。
首先,标准电阻Rref对电容CAO充电到VCC,再通过参考电阻Rref放电,同时记录定时器值T1;当电容放电到O.5Vcc时,比较器产生输出,CAOUT触发定时器产生捕获动作,将定时器值T2读出。其次,使用被测量电阻Rmeas对电容充电到Vcc,再通过Rmeas放电,同时读取定时器值T3;当电容放电到0.5Vcc时,比较器输出信号再次捕获定时器数据T4,则在电容放电的线性区域可以得到被测量电阻的阻值:
对其他电压等物理量的测量也可采用此办法。
3.2 液晶显示问题解决方案
MSP430F11XX没有液晶驱动能力,必须外部扩展。如图6所示,可以使用I/O输出直接驱动价格低廉的液晶驱动芯片来显示信息。如果这样,为什么还要选用自带液晶驱动的价格昂贵的MSP430F43X或MSP430F44X呢?
例如,用MSP430的Px.x两个I/O口与驱动芯片的CLK、DATA进行通信,即可实现所需的显示信息。可以节省本就不多的I/O端口以作他用。
3.3 程序量小问题解决方案
MSP430F11XX系列单片机最大的程序容量只有4 KB,对较为复杂的应用来说程序空间比较小。对于MSP430系列单片机有个巧妙的解决办法:由于MSP430单片机的存储器具有线性统一编址的特点,因此单片机运行的程序可以在除了片内外围模块空间以外的任何存储空间,这里RAM用作程序存储器。又由于RAM内容可变,故可将程序存放在外部存储器中,在需要时调到RAM中,再执行RAM中的程序。外部存储器可选用串行24C系列为E2PROM,既可减小系统体积,又可使程序空间增加32 KB乃至更多,且系统总成本增加很少。24C系列E2PROM与MSP430单片机的接口,只需要2根I/O口线和2个上拉电阻。
首先,需要将存放在E2PROM中的应用程序划分为较小的模块。这里针对MSP430F1121A将每个模块的大小限定在128字节内。MSP430F1121A的片内RAM有256字节,一半用于存储程序处理中的数据,另一半用于暂存程序调度的程序。
其次,MSP430F1121A的片内存储器用于存放对24C系列存储器的读写操作程序,以及最常用的处理程序和各种中断服务程序等。将各个小模块的应用程序存放在E2PROM中,同时,每个小模块的应用程序在E2PROM中的起始位置和模块长度在MSP430的程序存储器中用数据表格的形式存放。每当要调用在E2PROM中的小模块时,就在表格中查找。使用E2PROM读程序,在E2PROM中读出全部的小模块程序数据到MSP430的RAM中的后128字节。
最后,将程序计数器(PC指针)压栈,再改变PC内容为280H(RAM的后128字节开始位置),程序将由此开始运行。该模块运行完毕后,最后一句是RET,将刚压栈的PC指针恢复。程序继续运行MSP430 Flash中的主程序。
3.4 日历时钟程序化问题解决方案
由于MSP430系列单片机的超低功耗特性,使用其内部定时器模块的比较模式实现日历时钟,时钟源使用钟表32 768 Hz晶振产生的ACLK信号。将定时器模块设置为1 s中断一次,在中断服务程序中编写日历时钟程序。只要在编写的过程中注意公历的各种推算,甚至可以使用某种算法将农历也编写进去。在中断程序结束后立即进入低功耗LMP3模式,这时系统耗电小于1μA,比多数的专用日历时钟芯片的耗电还要小。选材时,只要选用精度高的晶振,做出的时钟将是很准确的,而且使用单片机将日历时钟程序化从各方面讲(可靠性、功耗、成本、体积等)都是很好的解决方案。
3.5串行通信问题解决方案
MSP430F11XX系列单片机片内没有串行通信模块,不能直接用于异步串行通信,但由于定时器Time_A的捕获与比较以及特殊的结构,利用其实现异步串行通信的位定时(波特率产生)以及起始位检测等功能,可方便实现串行通信。
串行发送相对简单一点:设置Time_A为比较模式,比较的数据体现每一位的发送时间,使用中断,每当时间到则发送下一位,全部发送则发送完毕。
串行接收相对复杂一点:设置Time_A为捕获模式,要捕获到串行通信的起始位;捕获到起始位后,将Time_A设置为比较模式,同时第一位与后面其他位的定时时间不一样,第一位的定时时间是其他位的1.5倍。所有数据接收完毕即结束。在硬件上使用RS232或RS485都可以。
另外,也可以使用外围模块进行通信。例如使用半双工或全双工的RS485芯片进行485的信息传递。
4 结 论
实践证明,在充分掌握MSP430系列各个片内模块的性能与特性基础上,选用最简单、最便宜、最常规的器件,设计高性价比的应用系统是非常可行的;同时随着产量的增加,经济效益也会显著增加。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。