打印
[应用相关]

【转】串行通信的实现条件和波特率自动整定问题

[复制链接]
551|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laozhongyi|  楼主 | 2020-2-22 16:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

串行通信在波特率误差超过一定范围时,会产生错误。本节介绍的内容在51单片机上仅用软件就实现了波特率自动整定,最大程度地减小了波特率误差,因而可使串行通信的可靠性得到提高。

51单片机具有一个全双工的串行接口,提供了多机通信功能,可方便地构成多机系统(多机容错系统、集散型多级系统),为完成大型的控制任务提供了有效的手段。用51单片机组成的多机控制系统,国内已出现多例。在这样的系统中,可靠地实现多处理器间的信息交换(串行通信)是十分重要的。本节的研究发现,波特率作为串行通信的速率,同时对通信的可靠性有重要影响。



正常串行通信的实现条件

串行通信是按位传送数据的。每个数据有8或9个数据位,加上起始位和停止位构成一个串行帧。每一位占用时间T,1/T称为串行通信的波特率。理想情况下,发送机和接收机设置的波特率一致。接收机的接收控制器在串行帧每一数据位的中点进行采样,能接收到正确的数据,但要求波特率完全一致是不可能的。这就提出了一个问题:要可靠地实现串行通信,允许收发双方的波特率有多大误差?我们以一个10位的串行帧为例进行分析。

图1 (b)是正常工作的情形,波特率一致。在图1 (a)中,接收波特率不变,而发送波特率变小,每位的时间T延长5%,在第10位采样时,就产生了错位,不能进行正常通信。对于10位的串行帧,允许的最大波特率误差不超过5%;在多机通信方式下,串行帧是11位的,允许的最大波特率误差不超过4. 5%。

上面得到的仅仅是理想情况下的波特率误差允许上限。实际应用中,由于硬件设备的频带有限,数据位的上下跳沿要占用一定时间,每个数据位的有效时间比理想情况要短,所以对波特率误差会有更严格的要求。




使用特权

评论回复
沙发
Edisons| | 2020-2-22 16:51 | 只看该作者
串口波特率自适应是怎么做的?

使用特权

评论回复
板凳
_gege| | 2020-2-22 16:54 | 只看该作者
在C语言中怎么设置波特率呀

使用特权

评论回复
地板
Mozarts| | 2020-2-22 16:55 | 只看该作者
工作方式的波特率如何确定的

使用特权

评论回复
5
bbapple| | 2020-2-22 16:58 | 只看该作者
串行通信的双方波特率必须相同。。

使用特权

评论回复
6
handleMessage| | 2020-2-22 16:59 | 只看该作者
搜集了一下串口通讯波特率自适应得技术**。

使用特权

评论回复
7
zhouhuanの| | 2020-2-22 17:02 | 只看该作者
如何准确判定CAN总线的波特率?

使用特权

评论回复
8
androidbus| | 2020-2-22 17:03 | 只看该作者
波特率自适应,还是指数据校验的前向纠错?

使用特权

评论回复
9
litengg| | 2020-2-22 17:14 | 只看该作者
波特率发生器的波特率计算呢   ?

使用特权

评论回复
10
qiangweii| | 2020-2-22 17:17 | 只看该作者
有没有自动识别的C程序。。。

使用特权

评论回复
11
xia00| | 2020-2-22 17:20 | 只看该作者
ch341的串口波特率是自动识别的吗?

使用特权

评论回复
12
hfdy01| | 2020-2-22 17:29 | 只看该作者
怎样就实现自动搜端口和波特率了 。

使用特权

评论回复
13
CallReceiver| | 2020-2-22 17:30 | 只看该作者
单片机怎么自动识别波特率,有能自动识别协议和波特率的吗?

使用特权

评论回复
14
boy1990| | 2020-2-22 17:32 | 只看该作者
是串口的波特率与时钟频率的问题?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

1388

帖子

0

粉丝