UART通讯协议 — 详解
UART的基本概念UART协议主要用于计算机和电传打字机之间的通信,由Bell在19世纪60年代发明。它将并行输入信号转换成串行输出信号,因其简单实用的特性,已经成为一种使用非常广泛的通信协议。UART是一种全双工的串行通信方式,能够实现点对点的数据传输。它无需时钟信号,通过预先设定的波特率进行数据的异步传输。由于其简单易用,UART被广泛应用于嵌入式系统、计算机外围设备等领域。仅用一根数据接收线
UART通讯协议
UART 通讯协议
UART(Universal Asynchronous Receiver/Transmitter
,通用异步收发传输器)是一种异步串行通信协议,广泛应用于微控制器、计算机和其他数字设备之间的通信。它以其简单、可靠和灵活的特性,成为连接微控制器、传感器、外设以及计算机之间的桥梁 。
一、UART简介
UART的基本概念
UART协议主要用于计算机和电传打字机之间的通信,由Bell在19世纪60年代发明。它将并行输入信号转换成串行输出信号,因其简单实用的特性,已经成为一种使用非常广泛的通信协议。
UART是一种全双工的串行通信方式,能够实现点对点的数据传输。它无需时钟信号,通过预先设定的波特率进行数据的异步传输。由于其简单易用,UART被广泛应用于嵌入式系统、计算机外围设备等领域。
仅用一根数据接收线和一根数据发送线就能实现全双工通信。典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信。
UART协议原理
- 异步传输:UART通信采用异步传输方式,发送和接收双方不需要共享时钟信号,而是通过数据中的起始位和停止位来确定数据的开始和结束。
- 数据格式:UART数据帧包括起始位、数据位、可选的校验位和停止位。数据位通常为8位,但可以是5-9位不等,校验位用于数据校验,可以是奇校验、偶校验或无校验。
- 速率可调:UART通信速率(波特率)可根据需求进行调整,常见的波特率有9600、115200等。
- 半双工/全双工:UART支持半双工和全双工通信方式 。
二、UART的工作原理
UART的通信过程主要包括以下步骤:
- 数据封装:发送端将并行数据封装成串行数据帧。
- 数据传输:通过传输线以串行方式发送数据帧。
- 数据接收:接收端按照相同的波特率解码串行数据帧。
- 数据解封装:将串行数据帧转换回并行数据供系统使用。
UART协议工作机制
在发送数据时,发送方将待发送的数据按照UART协议的数据格式进行封装,并通过UART接口发送出去。接收方则通过UART接口接收数据,并按照UART协议的数据格式进行解析,提取出有效数据。在通信过程中,发送方和接收方需要保持相同的波特率设置,以确保数据的正确传输 。
UART是异步通信协议,不依赖时钟线同步,而是依靠预先约定的波特率和数据格式。因为没有时钟信号,接收端必须能够正确地从数据流中识别起始位并锁定传输时序。
UART协议应用
UART协议在实际应用中具有广泛的应用场景,包括但不限于:
- 微控制器与外设通信:如串口模块、GPS模块、蓝牙模块等。
- 调试与日志输出:开发人员通常使用UART接口将调试信息或日志输出到计算机上。
- 数据采集与传输:例如,在环境监测系统中,传感器可以通过UART接口将采集到的数据传输给微控制器或上位机进行处理和分析 。
UART通信的基本原理相对简单,数据以位(bit)为单位进行传输,每个位都有一个固定的时间长度,这个时间长度由波特率决定。UART通信通常包括三个主要部分:数据位、起始位和停止位。起始位用于通知接收端数据即将开始传输,数据位是实际要传输的信息,而停止位则用于表示数据已经传输完毕 。
三、UART数据帧格式
UART的物理层实现
UART通信协议的物理层可以通过不同的电平标准来实现,常见的有TTL、RS232和RS485等标准:
- 基于TTL的UART通讯:使用简单的LVTTL/TTL电平进行传输,适用于板内通讯或设备调试场景。
- 基于RS232的UART通讯:采用双极性电压信号进行物理传输,增强驱动能力,增加传输距离和可靠性。
- 基于RS485的UART通讯:使用差分信号传输,适用于工业环境,提高传输距离和信号可靠性。
UART通常采用TTL电平(0V代表逻辑0,3.3V或5V代表逻辑1),但在一些情况下,尤其是在PC通信中,可能需要使用RS-232电平(-12V到12V)。
UART的数据帧通常由以下部分组成:
- 起始位(Start Bit):1位,逻辑低电平,标识数据帧的开始。
- 数据位(Data Bits):5~9位,实际传输的数据。
- 校验位(Parity Bit):1位,可选,用于错误检测。
- 停止位(Stop Bits):1~2位,逻辑高电平,标识数据帧的结束。
数据帧格式示意图:
+----------+----------+----------+----------+
| 起始位 | 数据位 | 校验位 | 停止位 |
+----------+----------+----------+----------+
UART的协议层
UART协议层主要规定了逻辑信号的协议规范以及通信过程,包括起始位、数据位、校验位和停止位。
波特率
波特率是UART协议中非常重要的概念,表示单位时间内(1秒)可表示的bit位个数。例如,波特率为115200的UART波形表示1秒可容纳115200个bit位。
波特率是UART通信的核心参数,表示每秒钟传输的比特数。发送端和接收端必须使用相同的波特率才能正确解码数据。如果波特率不匹配,即使差异很小,也可能导致数据错误或丢失。
很多人容易混淆波特率和通信速度。波特率只表示每秒传输的比特数,而通信速度涉及数据位、起始位、停止位、校验位等因素。因此,即使波特率相同,实际有效的数据传输速度可能会不同。
空闲位
设备之间不传输数据时以持续的高电平表示空闲。空闲位持续时间越长,两个数据帧间隔也越长。
起始位
UART数据传输线通常在不传输数据时保持在高电平电平。开始传输时发送UART在一个时钟周期内将传输线从高电平拉低到低电平。
数据位
数据位包含正在传输的实际数据,使用奇偶校验位是5-8位,不使用最多可以是9位。
数据位的长度通常可以是5、6、7、8或9位。大多数情况下使用8位,但某些应用可能需要更短或更长的数据位。发送端和接收端的数据位长度必须匹配。
在大多数情况下,数据以最低有效位优先方式发送。
校验位
奇偶校验位是接收UART判断传输期间是否有任何数据更改的方式。接收UART读取数据帧后,它将对值为1的数进行技术,并且检查总数是偶数还是奇数,是否与数据相匹配。
校验位用于错误检测,常见的配置包括无校验、偶校验、奇校验。使用校验位可以增加数据传输的可靠性,但在一些应用中可能会被省略。发送端和接收端的校验配置必须一致,否则会导致数据错误。
停止位
向数据包的结尾发出信号,发送UART将数据传输线从低电压驱动到高电压至少两位的时间。
停止位的数量可以是1或2位。多一个停止位可以增加接收端处理数据的时间,但同时会降低通信效率。不同的设备可能要求不同数量的停止位,因此配置时需特别注意。
四、UART通信流程图
UART通信的基本流程:
1. 发送端流程
2. 接收端流程
五、UART通信原理图
基本的UART通信电路:
发送端 接收端
┌───────────┐ ┌───────────┐
│ UART_TX ├───信号线───▶│ UART_RX │
└───────────┘ └───────────┘
带电平转换的UART通信电路:
发送端 电平转换器 接收端
┌───────────┐ ┌───────────┐ ┌───────────┐
│ UART_TX ├───▶ │ MAX232 ├───▶ │ UART_RX │
└───────────┘ └───────────┘ └───────────┘
六、总结 & 应用 & 优缺点
UART是一种简单而高效的串行通信协议,适用于点对点的异步数据传输。通过本文的介绍,相信您已经对UART的工作原理、数据帧格式和通信流程有了全面的了解。在实际应用中,只需正确配置UART的参数并遵循通信流程,即可实现稳定可靠的数据传输。
应用
UART协议因其简单性和灵活性,被广泛应用于各种通信场景。例如,单片机的RX/TX端口互相连接,实现基于TTL电平的UART通讯。此外,UART协议也是许多其他传输协议的基础,如DMX512、LIN、MIDI以及Modbus等。
UART的优缺点
优点:
- 仅使用两根线。
- 异步通信,无需时钟信号。
- 具有奇偶校验位以允许进行错误检查。
缺点:
- 数据帧的大小最大为9位。
- 不支持多个从属系统或多个系统。
- 每个UART的波特率必须在彼此的10%之内。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)