微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 波特率自适应的无线数据传输模块设计

波特率自适应的无线数据传输模块设计

时间:08-01 来源:互联网 点击:




设模块内AT89S51单片机的工作频率为fOSC,用定时器T1方式2(常数自动装入方式)产生波特率,串行口工作在方式1,此时串口的波特率BAUD由定时器T1的溢出率和SMOD位同时决定。  




当T1用作波特率发生器时,寄存器TL1用作计数器,而自动重装的值放在TH1内,设初始值为X,则每过“256-X”个机器周期,定时器T1就会产生一次溢出。为了避免因溢出而产生不必要的中断,此时禁止T1中断。AT89S51内部机器周期为振荡周期的12分频,因此,T1的溢出周期为:  




将式(3)代入式(2)得此时的波特率为:  




设此时采用波特率加倍的方式(即SMOD=1),且模块的波特率与主机的波特率相等,即:  




将式(4)代入式(1)可得:  




设AT89S51内部定时器T1测量连续8个码元计数值为M,由于是对内部的机器周期计数,且机器周期是内部振荡周期的12分频,所以总数为M的机器周期代表的实际时间是:  




很明显,式(6)与式(7)应相等,因此有如下等式成立:  




由上式即可得单片机定时器T1的初值在波特率自适应情况下的计算公式:  




由式(9)可以看出,其初值不依赖于单片机的工作频率,因此,只要单片机的工作频率相对稳定即可,对具体数值无要求。  

另外,需要说明的是,对于串行异步通信,通信双方的波特率不必严格相等,只要双方的差别在一定的范围之内,就可以实现准确的通信。  

2.2.2 软件模拟串口的实现  

波特率确定以后,即可用软件模拟实现串行口。就单片机而言,要实现模拟串口,必须解决好时序问题,不能造成通信过程中的数据丢失,为此,采用单片机的外部中断0口的下降沿触发功能模拟串口数据接收线RXD,P1.2口模拟串口数据发送线TXD,定时器T0以定时中断方式对接收码元采样或发送数据流,实现了一个软件的串口。  

对于软件模拟串口,关键在于解决好时序问题。本系统中,充分利用了nRF401芯片半双工通信的特点(即数据发送和接收不能同时进行),成功地实现了一个软件串行口。串行数据的发送实现相对较为简单,只需利用定时器使发送出去的码元维持一定的时间宽度;实现异步串行接收的关键是起始位的检测和信息位的准确提取。任何时候数据传送都可能发生,故要求接收方必须能够及时准确地接收数据,而通信过程中没有同步信号,因此串行数据的提取相对而言具有一定的难度。为此,采用AT89S51的外部中断0口模拟RXD,并没置其中断方式为边沿触发,平常维持其为高电平。由于起始位为低电平,因此,当有数据到达后就会产生中断,则根据波特率设置的定时时间间隔进行数据采样,即可实现串行数据的接收。  

结 语  

基于本思想设计的无线数据传输模块,已成功地运用于“磁栅式浮动检测仪”项目中。经实践检验,系统工作稳定可靠,具有一定的工程实用价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top