8051异步串口的收发原理

8051异步串口的收发原理

Tags: , ,

异步串口通信的基本原理是,点对点异步,没有时钟线没有地址,以低电平为开始位,高电平闲置,通信双方约定相同的数据帧大小,还有在相同的波特率下,收发顺利进行。异步串行通信可双线同时收发,为全双工通信。数据帧内容包括一个开始位、5到9个数据位、一个可选的检验位和一到两位的停止位。

以上是异步串口通信的通用原理,但具体的通信过程是怎样的呢?这就得拿一个具体的实现——8051的built-in UART来分析一下了。

8051的built-in UART可以通过软件编程工作于四种模式:模式0、模式1、模式2和模式3。这里以比较常用的模式1——8位可变波特率的UART——来简要分析一下其异步通信过程。

模式1的帧大小为10位:一个开始位(0)+八个数据位(最低有效位先)+一个停止位(1),在接收方,停止位被送入串口的控制寄存器SCON的RB8。下图为模式1的功能简图:

[异步串行传输的发送]由一个“写入SBUF”信号触发,任何以SBUF寄存器为目标寄存器的指令被执行都产生“写入SBUF”信号,如MOV SUBF,A。“写入SBUF”信号同样向[移位寄存器]的第九位写入1,并且发一个信号给[TX控制单元],向其请求一次发送。数据传送的实际开始点是下一个发送脉冲(TX CLOCK)的到来时,不是与“写入SBUF”信号同步,看下面的时序图。[TX控制单元]的工作脉冲——发送脉冲(TX CLOCK)是对系统发来的时钟脉冲经一个[四位计数器]拉伸16倍后获得,而[下沿降检测单元(1-to-0 transtition detector)]是直接使用系统发来的时钟脉冲工作,因此,对接收信号(RXD)采样的速度比发送高16倍。

由于[DATA控制线]默认输出为低电平,它与[移位输出线]输入一个[与门]后也是低电平,而[SEND控制线]默认输出为高电平,二者输入一个[或门]后,输出是高电平,TXD空闲是高电平。[TX控制单元]在第一个发送脉冲拉低SEND控制线,TXD发出一个低电平开始位,一个发送脉冲过后,[TX控制单元]拉高DATA线,TXD的输出取决于移位输出。尔后,TX控制单元每发送一个移位脉冲就有一位数据发送到TXD。数据位从右边移出后,左边移入0。当移剩[最高有效位]时,最高有效位的左边是最初送的第九位1,左边其余位全是0,这种模式会被zero detector检测到,并置[TX控制单元]进入[发送最后一位]状态——发送一位后拉高SEND线,并置中断标志TI,向MCU发了“发送完毕”的中断请求。[发送最后一位]发生在“写入SBUF”信号后的第十个发送脉冲。

[异步串行传输的接收]由[下沿降检测单元]在RXD线检测到1到0的跳变触发。前面已经指出,下沿降检测单元16倍于波特率的速度对RXD进行采样,也就是说,每一个发送脉冲采样16次。当检测到一个1到0的跳变,分频的四位计数器被重置,重置计数器是因为1到0的跳变可能出现在任何一个采样周期,重置计数器可对齐发送脉冲与接收脉冲的边沿,做到真正的同步。计数器被重置的同时,1FFH被写入[输入移位寄存器](input shift register)。

在每一个接收脉冲,RX控制单元(RX CONTROL)会控制[位检测单元(bit detector)]在第七、第八和第九个采样周期去检测RXD三次,检测的结果必须至少两次稳定才被确认。检测三次是为了去除噪音的可能。如果第一个接收脉冲被确认的值不是0,整个电路会被重置,回到当初的反复检测RXD有无1到0的跳变的状态。如果确认是0,那么0会被右移入[输入移位寄存器],数据帧的接收处理开始。

数据位从右边移入[输入移位寄存器],初始的1从左边移出。当开始位(0)被移到最左的一位(模式1时是九位长的移位寄存器),RX控制单元被反馈[尾位操作信号],进入最后一次移位,移入最后一位后,RX控制单元根据是否满足以下两个条件,决定是否将九位数据分别载入SBUF和RB8,最后拉高RI。

  • 第一,RI=0,这说明上一帧数据接收完后发出的中断请求已被响应,SUBF中的数据已经被取走;
  • 第二,SM2=0 或者 接收的停止位为1;停止位不为1说明数据帧有错;SM2为0指明本机为多机通信中的目标从机,可以接收数据;

如果不满足,丢弃接收到的数据帧。不管是否接收数据帧,最后整个电路都回到当初的反复检测RXD有无1到0的跳变的状态。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值