8051异步串口的收发原理

《8051异步串口的收发原理》
  • 来自:刘建文 | 学术半·IT歌·文
  • 作者:刘建文
  • 关键字:8051 数字电子 数据通信
  • 永久链接地址:http://arttech.us/y-2011/8051-uart-rx-tx.html
postmeta

Tags: 8051, 数字电子, 数据通信

异步串口通信的基本原理是,点对点异步,没有时钟线没有地址,以低电平为开始位,高电平闲置,通信双方约定相同的数据帧大小,还有在相同的波特率下,收发顺利进行。异步串行通信可双线同时收发,为全双工通信。数据帧内容包括一个开始位、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的跳变的状态。

8051异步串口的收发原理相关推荐

  1. 13.基础实验(2)异步串口收发的实现

    异步串口收发的实现 一.实验内容 实现串口接收来自串口调试助手发送的数据,然后直接通过自己实现的串口程序将数据发送出去 二.系统框图 三.设计分析 从串口接收开始,这个比较容易实现.参考链接串口通信协 ...

  2. imx6 配置串口波特率_stm32异步串口(uart)通讯基本操作

    | 串口是一种全双工通讯方式 单工 数据传输只支持数据在一个方向上传输 半双工 允许数据在两个方向上传输,在同一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信 全双工 允许数据同时 ...

  3. MSP430程序库二UART异步串口

    串行通信接口是处理器与其他设备进行数据通信最常用的方式之一.我的这个程序库是针对MSP430f14系列和MSP430f16系列的,我常用的单片机是这两款:msp430f149,msp430f169.这 ...

  4. 实现USB转两个异步串口,USB总线的转接芯片

    简述 CH9103是一个USB总线的转接芯片,实现USB转两个异步串口. 每个串口都支持高速全双工,支持奇偶校验,提供部分MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备或者MCU直 ...

  5. CSR8675 使用串口 UART 收发功能

    CSR8675 使用串口 UART 收发功能 CSR8675 实现 UART 功能有两种方式,一种是托管连接,另一种是直接连接. 托管连接:不直接操作 Stream,通过 VM 层创建 Source ...

  6. zigbee CC2530 系列教程 7 串口数据收发实验

    4.6串口数据收发实验 4.6.1 实验目的 1.了解串口通信的相关知识: 2.学习CC2530单片机串口相关寄存器配置,实现串口通信功能: 4.6.2 实验讲解 CC2530芯片有两个串行接口UAR ...

  7. CH9101国产USB转异步串口芯片兼容替代PL2303GC/PL2303HXD/FT230X/FT232RQ/CY7C65213

    目录 CH9101简介 结构框图 主要特性 选型列表 封装差异 评估板示例图 CH9101U评估板各单元功能说明 应用领域 CH9101简介 CH9101是USB总线转接芯片,实现USB转异步串口.此 ...

  8. QT入门第十四天 串口通信协议+收发数据+波特率+数据位+停止位+奇偶校验+串口识别射频RFID的卡号

    QT入门第十四天 串口通信[QT入门第十四天 串口通信协议+收发数据+波特率+数据位+停止位+奇偶校验+串口识别射频RFID的卡号 第一章 常见的硬件通信接口协议 [1]硬件通信接口协议 [2]使用串 ...

  9. STM32学习——串口数据收发

    STM32学习--串口数据收发 ==STM32的串口通信== ==HAL库中串口发送的重要函数== ==STM32定时器实训== STM32的串口通信   异步串行通信:通信双方在没有同步时钟的前提下 ...

最新文章

  1. linxu passwd 给linux用户设置密码 命令
  2. supersu二进制更新安装失败_vcpkg更新及产品路线图
  3. vim 多行添加注释,取消注释
  4. IIS日志分析[资源]
  5. 含HTML标记的内容分页 (C#)
  6. esp8266 eeprom_ESP8266_08基于flash的数据掉电保护
  7. iOS开发之控制器的创建
  8. AcWing 802. 区间和
  9. Android版本下载以及切换
  10. java错误:需要《标识符》
  11. C# 双目摄像头测试软件
  12. IDS和IPS是什么,有什么区别?
  13. 苹果appstore中兑换码的使用方法
  14. c# wpf 利用截屏键实现截屏功能
  15. mysql virt虚拟内存_Java 进程占用VIRT虚拟内存超高的问题
  16. 解决连接深信服vp无法通过burpsuit抓包的问题
  17. Android深入浅出系列课程---Lesson15LLY110602_Dalvik虚拟机概述
  18. python字符串与十六进制互相转换
  19. JQ input value取值再赋值
  20. 使用老毛桃U盘给联想G400装系统

热门文章

  1. 基于ssh远程操作虚拟机(Linux系统)
  2. 因为锁的问题,我们被扣了1万
  3. 电子计算机eniac诞生于哪年,第一台电子计算机eniac诞生于哪年
  4. 有甲乙二人乙对甲盯梢matlab,数学建模习题2
  5. android bitmap 失真,Bitmap.createScaledBitmap 失真
  6. scrapy框架(二)
  7. 马蜂窝一面:Comparable和Comparator有什么区别?
  8. 《2020最新中央企业排名》
  9. COCOS2D-X中45度地图通过位置获得对应行列数中的三角变换理解
  10. burp suit中intruder的使用