UART详解

UART

        通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。是一种异步全双工串行通信协议,它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上,它不是像SPI和I2C这样的通信协议,而是微控制器中独立的物理电路或独立的IC。UART工作原理是将数据的二进制位一位一位的进行传输。
        当两个设备使用UART串口通讯时,由Tx和Rx两根数据线组成,因为没有参考时钟信号,所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数,从而按照相同的速率进行通信。

硬件连接

        硬件连接比较简单,仅需要3条线,注意连接时两个设备UART电平,如电平范围不一致请做电平转换后再连接,如下图所示:

  • TX:发送数据端,要接对面设备的RX。
  • RX:接收数据端,要接对面设备的TX。
  • GND:保证两设备共地,有统一的参考平面。
    UART详解_第1张图片

通信协议

        UART作为异步串口通信协议的一种,工作原理是将数据的字节一位接一位地传输。协议如下:
UART详解_第2张图片
空闲位:
        UART协议规定,当总线处于空闲状态时信号线的状态为1即高电平。
起始位:
        开始进行数据传输时发送方要先发出一个低电平0来表示传输字符的开始。因为空闲位一直是高电平所以开始第一次通讯时先发送一个明显区别于空闲状态的信号即为低电平。
数据位:
        起始位之后就是要传输的数据,数据可以是5,6,7,8位,构成一个字符,一般都是8位。先发送最低位LSB,再发送最高位MSB(小端模式)。
奇偶校验位:
        数据位传送完成后,要进行奇偶校验,校验位其实是调整个数,串口校验分几种方式:

  • 无校验(No Parity)
  • 奇校验(Odd Parity):如果数据位中1的数目是偶数,则校验位为1才能满足1的个数为奇数,如果1的数目是奇数,校验位为0。
  • 偶校验(Even Parity):如果数据为中1的数目是偶数,则校验位为0才能满足1的个数为偶数,如果1的数目是奇数,校验位为1。
  • Mark Parity:校验位始终为1。
  • Space Parity:校验位始终为0。

停止位:
        数据结束标志,可以是1位,1.5位,2位的高电平。
波特率:
        异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。数据传输速率使用波特率来表示,单位bps(bits per second)。常见的波特率9600bps,115200bps等等,其他标准的波特率是1200,2400,4800,19200,38400,57600。举个例子,如果串口波特率设置为9600bps,那么传输一个比特需要的时间是:1 / 9600 ≈ 104.2us。

举例

        以9600 8N1(9600波特率,8个数据位,没有校验位,1位停止位)为例,这是目前最常用的串口配置,现在我们传输“OK”两个ASCII值,O的ASCII为79,对应的二进制数据为01001111K的ASCII为75,对应的二进制数据为01001011,传输的格式数据如下图所示:
UART详解_第3张图片
        串口波特率为9600,1bit传输时间大约为104us,传送一个数据实际是10个比特(开始位,8个数据位,停止位),一个bytes传输速率实际为:9600 * 8 / 10 = 7680bps。

COM口

        COM口(cluster communication port)即串行通讯端口,简称串口。微机上的串口通常是9针,也有25针的接口,最大速率115200bps。通常用于连接鼠标(串口)及通讯设备(如连接外置式调制解调器进行数据通讯或一些工厂的数控机接口)等。一般主板外部只有一个串口,机箱后面和并口一起的那个九孔输出端(梯形),就是COM1口,COM2口一般要从主板上插针引出。并口是最长的那个梯形口。但目前主流的主板一般都只带1个串口,甚至不带,慢慢会被USB取代。
        串口的接口标准规范和总线标准规范是RS-232,有时候也叫做RS-232口。9针串行口的针脚功能如下:
UART详解_第4张图片

你可能感兴趣的:(总线,单片机,嵌入式硬件)