串口波特率
2014-08-25 09:57
141 查看
在硬件串口模块中,有一个专门的波特率发生器用来控制发送和接收数据的速度。对于STC89C52 单片机来讲,这个波特率发生器只能由定时器 T1 或定时器 T2 产生,默认是使用定时器 1 的,就使用定时器 T1 作为波特率发生器来讲解,方式 1 下的波特率发生器必须使用定时器 T1 的模式 2,也就是自动重装载模式,定时器的重载值计算公式为:
TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率
和波特率有关的还有一个寄存器,是一个电源管理寄存器 PCON,他的最高位可以把波特率提高一倍,也就是如果写 PCON |= 0x80 以后,计算公式就成了:
TH1 = TL1 = 256 - 晶振值/12 /16 /波特率
256 是 8 位定时器的溢出值,也就是 TL1 的溢出值,晶振值是11.0592Mhz,12 是说 1 个机器周期等于 12 个时钟周期,值得关注的是这个 16,采取的方式是把一位信号采集 16 次,其中第 7、8、9 次取出来,这三次中其中两次如果是高电平,那么就认定这一位数据是 1,如果两次是低电平,那么就认定这一位是 0,这样一旦受到意外干扰读错一次数据,也依然可以保证最终数据的正确性。
TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率
和波特率有关的还有一个寄存器,是一个电源管理寄存器 PCON,他的最高位可以把波特率提高一倍,也就是如果写 PCON |= 0x80 以后,计算公式就成了:
TH1 = TL1 = 256 - 晶振值/12 /16 /波特率
256 是 8 位定时器的溢出值,也就是 TL1 的溢出值,晶振值是11.0592Mhz,12 是说 1 个机器周期等于 12 个时钟周期,值得关注的是这个 16,采取的方式是把一位信号采集 16 次,其中第 7、8、9 次取出来,这三次中其中两次如果是高电平,那么就认定这一位数据是 1,如果两次是低电平,那么就认定这一位是 0,这样一旦受到意外干扰读错一次数据,也依然可以保证最终数据的正确性。
相关文章推荐
- 关于示波器测485串口波特率的使用方法总结
- linux中串口如何支持非标准波特率B28800?
- hi3531串口波特率计算
- FPGA串口通讯时波特率不稳定导致接受异常
- 串口通信中定时器1与波特率的关系
- 微软串口控件mscomm高波特率的使用(最高支持到1.2MB)
- linux 2.4.18 串口prink输出波特率等参数的调整
- mtk平台改串口波特率
- Linux设置串口波特率等参数
- hi3531串口波特率计算
- 串口波特率自动检测的一种工程实现:分段特征值匹配
- uboot中串口时钟频率及波特率的设置
- T1串口波特率的计算方法
- s3c44b0的系统时钟与串口波特率的计算公式
- 703n路由器 刷openwrt 修改 串口双向传输和串口波特率
- 8051单片机串口波特率和定时器1的初值计算
- MTK路由器rt5350 mt7620 7688等串口控制台不能修改默认波特率问题
- hi3531串口波特率计算
- zedboard 中SDK 修改串口设置(波特率。。。。)
- arm-linux内核中串口时钟频率及波特率的设置