首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

波特率自适应的模拟串行通信

波特率自适应的模拟串行通信

在户用仪表(电能表、燃气表、水表、热能表等)自动
抄读系统及工业控制系统中, 往往使用现场总线采用
有关通信规约进行数据交换以获取有关信息。 而数据
通信一般使用主从应答的查询方式, 其数据链路层一
般由前导字符、帧起始符、控制码、数据长度、数据域(包
含地址)、校验码、结束符等组成。 由于不同的工作环境
要求系统有不一样的通信波特率,因此,户用仪表等必
须有波特率自适应的软硬件模块, 达到现场系统配置
灵活,提高系统数据通信的工作效率及可*性。
一、从机波特率的计算方法
设定通信时每字节的传输格式为:1个起始位、8个
数据位(低bit位在先)、1个停止位,如图1所示。 服务器主
机在发送1帧信息之前先发送1个以上的前导字节FEh,
从机就是从1帧通信数据前的前导字符中提取相应的波
特率信息。 在发送前导字符FEh字节时bit位的传输如图2
所示, 从机在起始位的下降沿CPU进行内部时钟的开始
计数至上升沿时时钟计数结束。 根据图2可知,时钟计数
的1/2即为波特率传输1个bit位所需的时间。
二、硬件的工作原理
本文选择MSP430系列单片机作为从机的微控制
器,采用模拟串口的异步半双工通信方式(因有些型号
单片机不带串行通信口)。MSP430系列单片机是由美国
TI公司设计制造的,是一种具有超低功耗并且功能强大
的单片机,系列型号以FLASH芯片为主,单片机自身带
有JTAG仿真接口,调试工具简单、使用方便,非常适合
户用仪表等低功耗产品的开发。
MSP430系列单片机的定时器系统由一个16位的定
时计数器及对应的多组具有输入捕获或比较功能的
CCRx寄存器组成。 每个CCRx寄存器能独立选择输入捕
获或比较功能中的一种模式, 通过简单的控制字设置
就能相互转换。 定时计数器有多种时钟源选择方式(如
外部输入、晶体振荡器、内部数控(DCO)的RC振荡器
等),并有停止、增计数、连续、增/减计数4种工作模式。
每个CCRx寄存器都具有外接输入信号及控制输出功
能,当单个CCRx寄存器启动捕获功能时,输入的边沿触
发信号能把定时计数器内的当时值拷贝到CCRx寄存器
并能响应中断处理。 而当CCRx寄存器启动比较功能,且
CCRx寄存器的值与定时计数器的值相同时,能产生预置
的bit位输出信号并响应中断处理。 在1帧数据的应答通
信过程中时间比较短,此时间内温度变化很小,可认定
当时内部DCO的RC振荡值是个相对稳定值,而波特率的
计算只是1个bit位所占用的多少个定时器的时钟数,因
此不必考虑高精度的晶体振荡器作为时钟源,可以使用
内部的DCO振荡器作为数据通信的时钟源, 因为通信时
的波特率计时的时钟脉冲数对时钟源的准确度没有要
求,只要保证传送1帧信息的时钟稳定性就能可*工作。
考虑到单片机波特率计算会产生的时钟误差及1个字节
可能产生时钟累积误差,一般要求定时器的时钟频率大
于最高波特率的100倍以上,使每传输1个字节时的时钟
误差积累不会引起通信误码。 对于仿真的模拟串口利用
定时器捕获模式对端口上、下沿的信号进行捕捉,获取
接收时第一个前导码字节(FEh)两个低电平bit位的时钟
周期数,从而计算出波特率发生的正确时序。 从机定时
器的捕获模式还能感应接收字节起始位的下降沿信号
以得到CCRx的时钟值,利用波特率计算的时钟数设置比
较模式的寄存器CCRx值, 下次比较模式产生中断的
CCRx值=CCRx(当前值)+波特率计算的时钟数。 注意,接
收时的D0位计算为1.5倍波特率计算的时钟数,定时器的
比较模式中断得到接收bit位的电平信号,如图3所示。 当
从机发送数据时,定时器的比较模式使用了单片机定时
器的PWM输出模式1、模式5的方法,确定了输出bit位的
电平同步信号,如图4所示。 上述接收、发送数据信息的
处理在定时器中断处理程序中完成。

三、软件流程
(见图5)
为了充分利用MSP430单片机的低功耗功能, 单片
机平时可以工作在休眠状态,定时器初始化的工作模式
设为连续增计数方式, 根据相对应的捕获/比较寄存器
CCRx初始化相应的通信输入、输出端口,设置定时器的
控制寄存器CCTLx为下降沿捕获模式。 当有串行通信时
开启定时器的时钟, 同时产生定时器捕获/比较模式
CCRx的中断处理信号,在CCRx中断处理程序中完成数
据通信。 为了防止通信过程中产生意外事故的死循环,
可在通信过程中设置一个看门狗,当然可以使用定时器
另外一组CCRx的比较模式功能来仿真看门狗程序。 当
通信结束时设置定时器的CCTLx为下降沿捕获模式,为
了降低功耗还可以关闭定时器时钟。
此方法已成功应用在总线制网络水表的自动抄读
系统上,在DCO频率为3MHz时波特率(300~9600)BPS均
能正常工作。 实施的方法也可以移植到别的单片机系
列,尤其是没有串口功能的单片机系统,有时还可以节
省系统硬件的通信资源
返回列表