基于MSP430系列微控制器串口通信时的波特率自动检测的实现
扫描二维码
随时随地手机看文章
通常微控制器通过串行接口与其它终端进行通信时,两个终端需要通讯波特率一致才能达到准确与可靠的通讯效果,串行波特率的自动检测(ABR)可以解决通信终端的波特率自动匹配问题,从而实现微控制器与PC或其它主机的串行通信。本文主要介绍MSP430系列微控制器实现串口通信时的波特率自动检测。
1.概述
当MCU需要同时与几个不同波特率值的系统进行通信时,ABR检测功能则显得很重要。ABR检测在检测波特率值的同时可以自动调整波特率值。在执行ARB检测算法时,当主机波特率在115200~74400之间时,MCU必须从主机接收到一个预先设置的特定字符,如
2.系统硬件结构框图
本文开发板包含MSP430F1232微控制器、32kHz晶振、UART接口芯片和其它外设电路。PC机作为串行通信的主机,通过RS-232接口与开发板上的MSP430F1232进行通信,如下图所示,该通信方法适用含有USART模块的任意MSP430系列微控制器。
3.软件设计
3.1软件简介
软件设计源程序采用C与汇编语言结合完成,如上表所示。其中,main.c程序用C语言完成,可以调用C或汇编语言的波特率算法,C和汇编语言的波特率算法具有相同的功能,可随意选择其中一个即可。
3.2USART设置
文中将USART模块设置为UART模式,8个数据位、一个停止位,无奇偶校验位,系统SMCLK时钟作为USART时钟源,配置为1MHz频率,允许UART的最高通讯波特率达到230400。本文分析的标准波特率值范围1200~115k之间。UART模块初始化波特率设置为115200波特率。
3.3ABR原理
这部分主要讲述如何通过从主机接收到的一个或两个特定字符判断串行主机的通行波特率并且自动调整波特率。本文采用检测单个回车字符
3.4115200~14400波特率检测原理
本节主要讲述当主机通信在115200。14400之间时ABR的检测算法。MSP430微控制器初始化UART波特率为一个较高数值,如115200。因为一般串口通讯波特率从高到低存在一种比例关系的,如:115200=2×57600=3×384000当接收到主机波率在115200~14400之间时,发送一个预先确定的回车字符,如果从机波特率不匹配,则从机接收的实际字符会根据从机波特率大小有所不同,如下图所示。当在相位中接收到0字符时,则判断主机波特率低于14400,即可确定主机通信波特率不在5200~14400检测范围之内。
3.59600~1200波特率检测原理
当主机通信在9600~1200之间时ABR的检测算法与115200~14400之间原理一样,检测该段范围之内的波特率须先确定主机通信波特率低于14400,主机发送
3.6自动检测源代码
自动波特率检测源代码如下所示:
4.结语
本文主要描述了利用MSP430微控制器实现自动波特率检测技术,通过发送一个或两个特定的字符来确定主机通信波特率,在接收过程中如果波特率不正确字符将会丢失。尽管ABR检测应用在起始源代码中,同样也可以扩展运用到主机与从机通讯的任一时间段。