波特率自适应的无线数据传输模块设计
时间: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,并没置其中断方式为边沿触发,平常维持其为高电平。由于起始位为低电平,因此,当有数据到达后就会产生中断,则根据波特率设置的定时时间间隔进行数据采样,即可实现串行数据的接收。
结 语
基于本思想设计的无线数据传输模块,已成功地运用于“磁栅式浮动检测仪”项目中。经实践检验,系统工作稳定可靠,具有一定的工程实用价值。
蓝牙 电路 Atmel 单片机 电压 电流 电感 PCB 射频 滤波器 电容 51单片机 相关文章:
- 不断提升的蓝牙数据速率催生多种新兴应用(09-04)
- 面向大众市场的超宽带技术(09-04)
- 标准化进程难挡UWB市场增长,2011年出货量接近3亿 (09-04)
- 基于CSR CVC-HF系统的汽车蓝牙免提解决方案(09-08)
- 蓝牙与UART:互补配合,相辅相成(09-27)
- 浅析蓝牙技术 (上)(09-27)