本帖最后由 dirtwillfly 于 2018-7-1 21:35 编辑
串行通信的实现条件和波特率自动整定问题
串行通信在波特率误差超过一定范围时,会产生错误。本节介绍的内容在单片机上仅用软件就实现了波特率自动整定,最大程度地减小了波特率误差,因而可使串行通信的可靠性得到提高。 单片机具有一个全双工的串行接口,提供了多机通信功能,可方便地构成多机系统(多机容错系统、集散型多级系统),为完成大型的控制任务提供了有效的手段。用单片机组成的多机控制系统,国内已出现多例。在这样的系统中,可靠地实现多处理器间的信息交换(串行通信)是十分重要的。本节的研究发现,波特率作为串行通信的速率,同时对通信的可靠性有重要影响。 一、正常串行通信的实现条件串行通信是按位传送数据的。每个数据有8或9个数据位,加上起始位和停止位构成一个串行帧。每一位占用时间T,1/T称为串行通信的波特率。理想情况下,发送机和接收机设置的波特率一致。接收机的接收控制器在串行帧每一数据位的中点进行采样,能接收到正确的数据,但要求波特率完全一致是不可能的。这就提出了一个问题:要可靠地实现串行通信,允许收发双方的波特率有多大误差?我们以一个10位的串行帧为例进行分析。 图1 (b)是正常工作的情形,波特率一致。在图1 (a)中,接收波特率不变,而发送波特率变小,每位的时间T延长5%,在第10位采样时,就产生了错位,不能进行正常通信。对于10位的串行帧,允许的最大波特率误差不超过5%;在多机通信方式下,串行帧是11位的,允许的最大波特率误差不超过4. 5%。 上面得到的仅仅是理想情况下的波特率误差允许上限。实际应用中,由于硬件设备的频带有限,数据位的上下跳沿要占用一定时间,每个数据位的有效时间比理想情况要短,所以对波特率误差会有更严格的要求。
|