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