利用捕获比较功能实现MSP430与微机串行通信的研究
.1电路结构及其特点
本文中使用上述的原理和方法,在MSP430F413和MAX3221构成的电路中实现了与微机的串行通信,电路原理如图3。该电路不但完成了串行通信,还进一步实践了超低功耗的应用原理。MSP430单片机的一大特点就是超低功耗,它有多种功耗状态可以编程控制[4]。MAX3221也是具有低功耗特点的接口器件,通过EN、FORCEON、FORCEOFF引脚可以控制驱动器、接收器的工作状态,启动或禁止自动降低功耗功能,从而使其工作在不同的能耗状态,达到降低功耗的目的[2]。控制及其状态详见表1
图3 MSP430F413超低功耗串行通信电路原理图
3.2超低功耗的解决方案
选择了低功耗的器件,还要合理的控制才能达到最低的能耗[1]。对于本应用,MSP430处于从机工作状态。针对这种应用以下方案可以有效地降低能耗:初始化程序结束后,设定MSP430F413工作在功耗模式4等待P1.2引脚的中断。这时CPU将关闭,其能耗最低(0.1μA)。另一方面,初始控制MAX3221进入自动调节能耗状态。如果微机不发送信号,即Rin输入无效,驱动器和接收器都将关闭,进入很低功耗的待机状态(1μA)。
当微机发送信号时,即Rin输入有效,接收器会自动打开,并产生有效的INVALID信号。该信号将触发P1.2引脚的中断。在中断处理程序中将MSP430F413的功耗模式设定为模式3(功耗电流0.7μA),这时利用频率为32768的ACLK时钟工作就可以完成低速的串行通信任务。当接收、处理完微机的数据后需要将结果返回给微机。这时可以打开MAX3221的驱动器,关闭接收器完成此工作。当发送完毕后可以将MSP430和MAX3221再设定为准备接收信息的最低功耗状态。
利用上述方法可以在满足串行通信的同时达到非常低的功耗。
表1:MAX3221收发器工作控制及其工作状态对照表
工作及能耗状态 | FORCEON | FORCEOFF | EN | 接收器输入信号Rin | 驱动器状态 | 接收器状态 |
完全待机状态最低功耗 | X | 0 | 0 | X | 关闭 | 激活 |
X | 0 | 1 | X | 关闭 | 关闭 | |
正常工作状态人工调节能耗 | 1 | 1 | 0 | X | 激活 | 激活 |
1 | 1 | 1 | X | 激活 | 关闭 | |
器件自理状态自动调节能耗 | 0 | 1 | 0 | 有效 | 自动激活 | 激活 |
0 | 1 | 1 | 有效 | 自动激活 | 关闭 | |
0 | 1 | 0 | 无效 | 关闭 | 激活 | |
0 | 1 | 1 | 无效 | 关闭 | 关闭 |
注:驱动器将MOS电平转换为RS232电平,接收器将RS232电平转换为MOS电平
4 结束语
应用上述的设计方法和电路,很好地实现了MSP430与微机之间的串行通信,并且达到了非常理想的功耗水平。实践证明该方法对于没有硬件UART的MSP430系列单片机进行串行通信非常有效,并给需要扩展串口的其他类型MSP430单片机提供了一种可行的方案。此外,文中的超低功耗电路设计方法对于功耗敏感的应用是一种很好的解决方案。
参考文献:
[1] Brian Merritt. Ultralow Power Thermostat ([R]). Texas, U.S.A. : Texas Instruments Incorporated, 2001.
[2] MAX3221 3-V TO 5.5-V single-channel RS-232 line driver/receiver (Manual). Texas, U.S.A. : Texas Instruments Incorporated, 2001.
[3] 胡大可. MSP430系列超低功耗16位单片机原理与应用,北京航空航天出版社,2001。
[4] 胡大可. MSP430系列FLASH型超低功耗16位单片机,北京航空航天出版社,2001。
附录:利用捕获比较实现异步串行通信的程序代码:
;------------------------------------------------------------------------------
说明:
硬件连接如图3,P1.0作为发送引脚,P1.1作为接收引脚,二者共用捕获比较模块0
Tbit1 是1位时间间隔数据(T1),Tbit_5是半位时间间隔数据。(由公式1得出)
RTbuff 是接收发送缓冲字单元,存放接收和发送的数据
Counter 是收发过程中使用的计数器
;------------------------------------------------------------------------------
发送子程序
MOV | TAR,CCR0 | ; 将当前定时器值存入CCR中(T0) |
ADD | #Tbit1,CCR0 | ; 将1位时间间隔加入CCR中(T0+T1) |
RLA | RTbuff | ; 将带发送的字节数据左移一位,构造最低位为起始位 |
BIS | #0200h, RTbuff | ; 将停止位数据放入待发送字的第10位 |
MOV | #10,Counter | ; 初始化数据帧计数器为10 |
MOV | #OUTMOD0+CCIE,CCTL0 | ; 标记发送状态,打开捕获比较中断,启动发送 |
RET | ; 返回 |
;------------------------------------------------------------------------------
接收准备子程序
MOV | #08,Counter | ; 初始化接收数据计数器为8(接收一个字节数据) |
MOV | #SCS+CCIS0+OUTMOD0+CM1+CAP+CCIE,CCTL0 | ;初始化捕获比较控制字, |
; 设定为下降沿捕获模式,标记接收状态,打开中断,启动接收 | ||
RET | ; 返回 |
;------------------------------------------------------------------------------
捕获比较模块0的中断服务程序
;------------------------------------------------------------------------------
微机 串行 通信 研究 MSP430 实现 捕获 比较 功能 利用 相关文章:
- 基于VxWorks的微机保护装置网络通信设计(03-28)
- MSP430在电力系统微机保护模块中的应用(07-06)
- 解读CAN总线行车记录仪系统电路(06-04)
- 51单片机教程第6讲_串行口通信(12-22)
- 异步串行通信协议的设计与实现(02-27)
- 不同光纤收发器间(QSFP与GTH)通信研究与实现(07-28)