MSP430系列单片机作为一个性能优异的MCU在大陆已经得到了广泛的应用。MSP430在高整合性与高性能方面与其他MCU比较有较大优势。该系列芯片的价格也较为合理,目前整合性最好的MAP430F44X系列,整合了60K字节程序存储(可记录数据)、2K字节片内RAM、6个I/O端口(P1、P2能中断)、160段液晶驱动、两个串行端口、4个定时器(其中TB带有7个捕获/比较器、包括看门狗)、模拟比较器、硬件乘法器、8路12位A/D转换器、还有频率调整电路FLL+、系统复位SVS模块等。而较为基本型的MSP430F1101、MSP430C1101只有1K字节程序存储、128字节片内RAM、模拟比较器、两个定时器等。他们的性能比较可参考图一、图二以及图三。
图一 MSP430F11XX系列结构框图
图二 MSP430F41XX系列结构框图
点击看原图
图三 MSP430F44X系列结构框图
由图一、图二以及图三可以看出,MSP44X与MSP11X在硬件结构上、在系统整合上存在较大差异;MSP41X与MSP11X的差异不是很大。但这三个系列芯片的价格由49美分到7美圆不等,那么怎么选择我们的系统芯片呢。
二 一般常用的MSP430应用系统的设计方案
图四是常用的MSP430应用系统。在这个系统中,有模拟量采集、脉冲数字量采集、日历时钟、液晶显示、有键盘可供操作、大量的运算等。在这个系统中,可采用以下几种方案进行MSP430的选型。下面同时给出对他们的比较。
1 使用MSP430F44X系列
在这个选型方案中,设计起来最简单,因为目前的MSP430F44X系列芯片是整合最齐全的。该系列任何一款都能胜任(一般程序不会大于32K字节)。
图四 常用的MSP430应用系统
2 使用MSP430F41X系列
如果程序在8K字节范围以内,这无疑也是一种较好的方案。MSP41X系列就差不能直接A/D转换,系统价格适中。
3 使用MSP430F11XX系列
这种方案中MSP430不能直接驱动液晶,程序量较小,也没有直接A/D转换能力,这是与前两种方案相比较的明显不足,但它的价格是最好的。
在这三中方案中,可以看出如果不计硬件成本,第一种方案最好;如果一定要考虑硬件成本(比如大量产的民品),则第三种方案最好,是性价比最高的。如果使用MSP430C1101,则官方报价在49美分,价格相当便宜,适合与大批量的、成本价格敏感的产品,可得到最高的性能价格比。但第三种方案存在很多问题有待解决。
三 高性价比的MSP430应用系统解决方法
图四是较为经典的MSP430应用系统框图,如果使用最经济的MSP430系列器件MSP430F11XX系列,则要解决五个问题:模数转换的问题、液晶显示问题、程序量小的问题、日历时钟的程序化、串行通讯问题。
1 模数转换(A/D)的问题解决方案
MSP430X11XX系列单片机片内有模拟比较器Comparator_A与功能强大的定时器Time_A,可以构成斜边(Slope)A/D转换,实现模拟量到数字量的转换。具体原理是(这里以电阻量到数字量的转换为例)。
图五 斜边(Slope)A/D转换原理图
在图五中,R1、R2分别为标准的参考电阻(R1)与被测量的电阻(R2),电容C1起充放电作用。比较器的输出CAOUT用于驱动定时器捕获的发生。MSP430内部的模拟比较器能产生用于比较的模拟电压(电源VCC、1/2VCC、1/4VCC、二极管管压降)。比较器负端选择1/2VCC。首先,标准电阻对电容C1充电到VCC,再通过参考电阻R1放电,同时记录定时器值T1;当电容放电到1/2VCC时,比较器产生输出,CAOUT触发定时器产生捕获动作,将定时器值T2读出;其次使用被测量电阻R2对电容充电到VCC,再通过R2放电,同时读取定时器值T3;当电容放电到1/2VCC时,比较器输出信号再次捕获定时器数据T4。则在电容放电的线性区域可以得到被测量电阻的阻值: R2 = (T2 - T1)* R1 / (T4 - T3) ,对于其他物理量的测量也可以使用类似的办法。
2 液晶显示问题的解决方案
MSP30X11XX没有液晶驱动能力,必须外部扩展。如果可以使用外扩2圆人民币不到的液晶驱动芯片(比如HT1621或
这里以便宜的HT1621为例说明液晶驱动芯片与MSP430系列的接口。HT1621有128段的液晶驱动能力。有4个公共端、32个段输出,能实现静态、2MUX、3MUX、4MUX等液晶驱动方式。须3或4线与单片机接口,同时可定时输出信号驱动单片机(在单片机间歇工作时很有用),也能输出用于驱动蜂鸣器的信号。与MSP430单片机接口如图六所示。如果不需要读出显示内容,则读信号可以不使用,只需要3线就可实现液晶显示的驱动,在口线紧张的情况下,可这样使用。
图六 HT1621与单片机的接口
HT1621片内有32*8位静态显示存储器,该存储器的内容直接映射到液晶驱动器,可使用读写命令直接访问。通过对显示存储器内容的操作实现液晶显示。图七为MSP430单片机对1621的操作时序图。
图七 1621的操作时序
3 程序量小的解决方案
MSP430F11XX系列单片机最大的程序容量只有4K字节,对于大多数的用途基本够用,但对相对复杂的应用,就显得程序空间较小。对于MSP430系列单片机有个巧妙的解决办法:利用MSP430单片机的存储器是线性统一编址的特点,单片机运行的程序可以在除了片内外围模块空间而外的任何存储空间,这里将RAM用来做程序存储器使用。由于RAM内容可变,故可将程序存放在外部存储器中,在需要的时候调到RAM中,再执行RAM中的程序。而外部存储器选用串行24C系列EEPROM,可使系统体积减小,同时可使程序空间增加32K字节乃至128K字节!而系统成本增加很少。24C系列EEPROM与MSP430单片机的接口,这里不多说了,只需要两根I/O口线与两个上拉电阻。
首先,需要将存放在EEPROM中的应用程序划分为较小的模块。这里针对MSP430F1121将每个模块的大小限定在128字节内。MSP430F1121片内RAM有256字节,拿一半用于程序处理中的数据存储,而另一半用于程序调度的程序暂存。
其次,MSP430F1121/1111/1101的片内存储器用于存放对串行24C系列EEPROM存储器的读写操作程序,以及最常用的处理程序,各种中断服务程序等等。
然后,将各个小模块的应用程序存放在EEPROM中,同时,每个小模块的应用程序在EEPROM中的起始位置与模块长度在MSP430的程序存储器中用数据表格的形式存放。每当要调用在EEPROM中的小模块时,就在此表格中查找。使用EEPROM读程序,在EEPROM中读出全部的该小模块程序数
最后,将程序计数器(PC指针)压栈,再改变PC内容为280H(RAM的后128字节开始位置),程序将由此开始运行。当该模块运行完毕,最后一句是RET,则将刚压栈的PC指针恢复。程序继续430FLASH中的主程序运行。
4 日历时钟的程序化解决方案
由于MSP430系列单片机的超低功耗特性,使用其内部定时器模块的比较模式实现日历时钟,时钟源使用32768Hz产生的ACLK信号。将定时器模块设置为1秒中断一次,在中断服务程序中编写日历程序。在程序编写时要注意闰年与闰月以及月大与月小的情况,详细方法这里不用多说。在中断程序完毕则进入低功耗LMP3,这时系统耗电在1uA左右,比常用的专门日历时钟芯片的耗电还要少。在MSP430系列单片机中,将日历时钟程序化从各方面讲(功耗、成本、体积、可靠性等)都是很好的解决方案。
5 串行通讯的解决方案
MSP430F11XX系列单片机片内没有串行通讯模块,不能直接用于异步串行通讯,但由于定时器TIME A的捕获与比较以及特殊的结构,利用定时器实现异步串行通讯的位定时(波特率产生)以及起始位检测等功能,可方便实现串行通讯。
串行发送相对简单一点:设置TIME A为比较模式,比较的数据体现每一位的发送时间,使用中断,每当时间到则发送下一位,全部发送则发送完毕。
串行接收相对复杂一点:首先设置TIME A为捕获模式,要捕获到串行通讯的起始位。捕获到起始位之后,则要将TIME A 设置为比较模式,同时第一位与后面的其他位定时时间不一样,第一位的定时时间是其他位的1.5倍。当所有数据接收完毕则结束。在硬件上使用232或485都可以。
小结
在充分掌握MSP430各个片内模块的性能与特性基础上,使用最简单、最便宜、最常规的器件,设计高性能价格比的应用系统是非常可行的。同时随着产量的增加,经济效益也会显著增加。
参考文献:
1 魏小龙 MSP430 系列单片机接口技术及系统设计实例 北京航空航天大学出版社 2002
2 TI资料 Implementing a UART Function With TimerA3
3 TI资料 Economic Measurement Techniques With the Comparator_A Module