通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。
UART作为异步串行通信协议的一种,工作原理是将传输数据的每个二进制位一位接一位地传输。在UART通信协议中信号线上的状态为高电平时代表‘1’,信号线上的状态为低电平时代表‘0’。比如使用UART通信协议进行一个字节数据的传输时就是在信号线上产生八个高低电平的组合。

串行通信是指利用一条传输线将数据一位位地顺序传送,也可以用两个信号线组成全双工通信,如rs232。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。
异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。通俗说是两个uart设备之间通信的时候不需要时钟线,这时候就需要在两个uart设备上指定相同的传输速率,以及空闲位、起始位、校验位、结束位,也就是遵循相同的协议。
数据传送速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。
数据通信格式如下图:

其中各位的意义如下:
空闲位:
  UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平,表示当前线路上没有数据传输。
起始位:
  每开始一次通信时发送方先发出一个逻辑”0”的信号(低电平),表示传输字符的开始。因为总线空闲时为高电平所以开始一次通信时先发送一个明显区别于空闲状态的信号即低电平。
数据位:
  起始位之后就是我们所要传输的数据,数据位可以是5、6、7、8,9位等,构成一个字符(一般都是8位)。如ASCII码(7位),扩展BCD码(8位)。先发送最低位,最后发送最高位,使用低电平表示‘0’高电平表示‘1’完成数据位的传输。
奇偶校验位
  数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。校验位其实是调整个数,串口校验分几种方式:
1、无校验(no parity)。
2、奇校验(odd parity):如果数据位中“1”的数目是偶数,则校验位为“1”,如果“1”的数目是奇数,校验位为“0”。
3、偶校验(even parity):如果数据为中“1”的数目是偶数,则校验位为“0”,如果为奇数,校验位为“1”。
4、mark parity:校验位始终为1(不常用)。
5、parity:校验位始终为0(不常用)。
停止位:
  它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备之间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟的机会。停止位个数越多,数据传输越稳定,但是数据传输速度也越慢。
波特率:
数据传输速率使用波特率来表示。单位bps(bits per second),常见的波特率9600bps、115200bps等等,其他标准的波特率是1200,2400,4800,19200,38400,57600。举个例子,如果串口波特率设置为9600bps,那么传输一个比特需要的时间是1/9600≈104.2us。

以9600,8-N-1(9600波特率,8个数据位,没有校验位,1位停止位)为例,这是目前最常用的串口配置,现在我们传输“O”“K”两个ASCII值,“O”的ASCII为79,对应的二进制数据为01001111,“K”对应的二进制数据为01001011,传输的格式数据如下图所示:

串口波特率为9600,1bit传输时间大约为104us,传送一个数据实际是10个比特(开始位-8个数据位-停止位),一个bytes传输速率实际为9600*8/10=7680bps。

原文地址:https://zhuanlan.zhihu.com/p/150504364

uart通信协议详解相关推荐

  1. Linux的tty架构及UART驱动详解

    Linux的tty架构及UART驱动详解 一.模块硬件学习 1.1. Uart介绍 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称 ...

  2. IIC通信协议详解 PCF8591应用(Verilog实现FPGA)

    IIC通信协议详解 & PCF8591应用(Verilog实现/FPGA) 该文章结合PCF8591 8-bit AD/DA 模数/数模转换器来详细介绍IIC通信协议,尽量做到条理清晰,通俗易 ...

  3. STM32 CAN通信协议详解—小白入门(二)

    文章目录 (一)CAN通信协议简介 (二)CAN物理层 2.1.闭环总线网络2.2.开环总线网络2.3.通信节点2.4.差分信号2.5.CAN协议的差分信号 (三)协议层 3.1.CAN的波特率及位同 ...

  4. Modbus 通信协议详解

    Modbus 通信协议详解 一.介绍 二.Modbus 协议简介 三.帧格式 1.Modbus功能码 2.1查询功能码0x03 2.2 修改功能码0x06 2.3.修改-0x10功能码 3.归纳 下载 ...

  5. [I2C]I2C通信协议详解(一) --- 什么是I2C

    [I2C]I2C通信协议详解(一) --- 什么是I2C 摘要:内部集成电路()I2C(Inter-Integrated Circuit)总线是一种两线串行接口,最初由菲利普斯公司开发,用于消费产品. ...

  6. SPI通信协议详解(二)

    1.SPI简介 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.是Motorola首先在其MC68HCXX系列处理器上定义的.SPI接口主要应 ...

  7. iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客

    版权声明:本文为博主原创文章,未经博主允许不得转载. 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: [objc] view plaincopy //  ...

  8. 通信协议详解(一):UART串口(协议+数据格式+设计实现)

    uart串口通信协议及verilog实现 文章目录 一.uart串口通信简介 二.串口传输 1.数据协议 2.整体架构 三.串口传输实现 1.发送模块 2.接收模块 四.串口收发仿真 总结 一.uar ...

  9. 【知识分享】异步串行收发器Uart(串口)-通信协议详解

    前言 什么是串口? 串口意思是串行通信接口,与之对应的是并行通信接口.下面具体来看下什么是串行通信和并行通信. 串行通信 串行通信,就是数据是按时间先后顺序一串串发出去的.比如现在要发一个13(对应二 ...

  10. SPI接口通信协议详解:SPI时序、2线、3线、4线SPI及4种常用工作模式

    简介 SPI通信原理比I2C要简单,它主要是主从方式通信.这种模式通常只有一个主机和一个或者多个从机,标准的SPI是4根线,分别是SSEL(片选,也写作 SCS).SCLK(时钟,也写作SCK).MO ...

最新文章

  1. 20年总结,21年展望
  2. 腾讯TEG团队打造轻量级数据可视化工具——小马BI【强烈推荐大数据行业学习】
  3. 李开复现身说法成功的十个启发
  4. tif 高程_使用ArcGIS提取高程点
  5. spring+springmvc+mybatis实现图书管理系统_Spring、SpringMVC、Mybatis自学视频分享
  6. 一道海量日志的随机选取问题
  7. Javascript第五章倒计时第二课
  8. asp.net 返回表单json数据 辅助类
  9. DbVisualizer的Driver连接Oracle Thin选项不可选
  10. 虎虎生威,挑战云上魔方(活动期完成可得实物魔方)
  11. McAfee企业版8.8——病毒库的备份与还原
  12. Oracle将监听服务注册到集群中,110 ORACLE实例配置多个监听器
  13. 虚拟机上键盘右边的数字小键盘为什么不能使用
  14. 用XSL对XML进行排版软件XSLFormatter
  15. 网工必备工具软件——一看就懂,一听就会,一做就废
  16. 图像处理的一些相关知识(Related knowledge for IQA)
  17. MySQL数据库——MySQL查看存储过程
  18. web自动化测试框架
  19. SpringBoot2.x整合Dubbo(直连模式)
  20. HFSS仿真宝典 | 阵列天线的波束扫描

热门文章

  1. 百度ai开放平台体验
  2. HTML5工程师利用原生js开发百度搜索黑洞漩涡特效
  3. 软件测试工作基本流程
  4. java ssh会议室管理系统(源码+文档)【源码分享】
  5. 高等数学学习笔记——第十三讲——变号级数收敛性判别方法
  6. ps手机计算机图标教程,手绘设计精美手机APP软件图标的PS教程
  7. 基于JavaEE的山水房屋中介管理系统_JSP网站设计_SqlServer数据库设计
  8. OpenCV学习 之 IplImage*遍历每个像素点
  9. 计算机里一共录入多少个汉字,计算机操作员之汉字输入方法
  10. Oracle 锁表查询语句及解锁