当前位置:首页 > 技术学院 > 技术前线
[导读]UART,全称通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),本质上是一种负责串行与并行数据转换的硬件电路或独立芯片。它不像SPI、I2C那样是完整的通信协议,更像是设备间数据传输的“翻译官”:将CPU等控制设备输出的并行数据拆解成串行信号发送,同时把接收到的串行信号重新组装成并行数据,供接收设备处理。这种“翻译”能力,让UART成为了嵌入式系统中最基础也最可靠的通信方式之一。

一、UART通信:从传统设备到现代嵌入式的常青树

还记得早年办公室里嗡嗡作响的针式打印机、拖着长线的机械鼠标,还有需要拨号上网的调制解调器吗?这些带着时代印记的设备,背后都依赖着同一种通信技术——UART。如今,USB接口凭借便捷性几乎取代了传统的串口连接器,但UART并没有退出历史舞台。在嵌入式开发领域,它依然是连接GPS模块、蓝牙模块、RFID读卡器与树莓派、Arduino等微控制器的核心纽带,是工程师调试设备、传输数据的“老朋友”。

UART,全称通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),本质上是一种负责串行与并行数据转换的硬件电路或独立芯片。它不像SPI、I2C那样是完整的通信协议,更像是设备间数据传输的“翻译官”:将CPU等控制设备输出的并行数据拆解成串行信号发送,同时把接收到的串行信号重新组装成并行数据,供接收设备处理。这种“翻译”能力,让UART成为了嵌入式系统中最基础也最可靠的通信方式之一。

二、UART通信的核心原理:异步传输的奥秘

UART最显著的特点是“异步通信”,这意味着它不需要专门的时钟信号来同步发送和接收设备的节奏。那么,没有时钟的“指挥”,两个设备如何保证数据传输的准确性?答案就藏在波特率与数据包结构的默契配合里。

(一)波特率:数据传输的“节拍器”

波特率是UART通信的“节拍器”,指的是每秒传输的比特数(bps),常见的波特率有9600、19200、115200等。发送和接收设备必须设置相同或误差在10%以内的波特率,否则就会出现“节奏错乱”,导致数据解析错误。比如,若发送端以115200bps的速度发送数据,而接收端误设为9600bps,那么接收设备会把原本1秒内的115200位数据当成9600位来读取,最终得到的只能是一堆乱码。

(二)数据包:承载数据的“标准化信封”

为了让接收设备准确识别数据的起始与结束,UART会给原始数据“套上”一个标准化的“信封”——数据包。一个完整的UART数据包由四部分组成:起始位、数据位、奇偶校验位和停止位。

起始位:数据传输的“发令枪”当没有数据传输时,UART的数据线通常保持高电平状态。一旦要开始发送数据,发送端会将数据线从高电平拉低并保持1个时钟周期,这个从高到低的跳变就是起始位。接收设备时刻监测着数据线的电平变化,一旦检测到这个跳变,就知道“数据要来了”,开始准备接收后续的比特流。

数据位:传输的“核心内容”数据位是数据包的核心,承载着实际要传输的信息。它的长度可以根据需求配置:如果使用奇偶校验位,数据位长度为5到8位;若不使用奇偶校验位,最长可设置为9位。在大多数情况下,数据会以“最低有效位优先”的顺序发送,也就是先传输二进制数的最右边一位。比如要发送十进制数“5”(二进制为0101),实际发送的顺序会是1、0、1、0。

奇偶校验位:数据的“安全检查员”在复杂的电磁环境或长距离传输中,数据位可能会受到干扰而发生翻转。奇偶校验位就是为了检测这种错误而设计的“安全检查员”。它分为奇校验、偶校验和无校验三种模式:

奇校验:数据位中1的个数加上奇偶校验位后,总数为奇数;

偶校验:数据位中1的个数加上奇偶校验位后,总数为偶数;

无校验:不添加奇偶校验位,适用于传输环境稳定、对错误容忍度较高的场景。 接收设备会统计数据位中1的个数,再与奇偶校验位对比,如果不符合预设的奇偶规则,就判定数据传输出现了错误。

停止位:数据传输的“结束语”当数据位和奇偶校验位发送完成后,发送端会将数据线从低电平重新拉高,并保持1到2个时钟周期,这就是停止位。它的作用是告诉接收设备“这个数据包结束了”,让接收设备做好接收下一个数据包的准备。停止位的长度可以设置为1位或2位,设置为2位时,抗干扰能力更强,但传输效率会略有降低。

三、UART通信的完整流程:从并行到串行的“旅程”

UART的数据传输过程,就像一场严谨的“接力赛”,每一个环节都紧密衔接,确保数据准确无误地从发送端抵达接收端。

(一)发送端:并行数据的“串行化打包”

第一步,发送UART从数据总线接收来自CPU或微控制器的并行数据。这些数据以字节为单位,同时出现在数据总线上。 第二步,发送UART为并行数据“打包”:在数据前面添加起始位,后面根据配置添加奇偶校验位和停止位,组成一个完整的数据包。 第三步,发送UART将数据包通过Tx引脚逐位串行发送出去。此时,原本并行的字节数据,被拆解成了一串按时间顺序排列的比特流,在数据线上以高低电平的形式传输。

(二)接收端:串行信号的“并行化还原”

第一步,接收UART通过Rx引脚持续监测数据线的电平变化。当检测到起始位的高到低跳变时,便开始以波特率对应的频率采样后续的比特流。 第二步,接收UART将接收到的串行比特流重新组装成数据包,并丢弃起始位、奇偶校验位和停止位,提取出核心的 data 位。 第三步,接收UART将还原后的并行数据传输到接收端的数据总线,供CPU或微控制器读取和处理。

四、UART通信的硬件连接:简单却严谨的“规则”

UART的硬件连接看似简单,只需要发送线(Tx)、接收线(Rx)和地线(GND)三根线,但连接时必须遵循“交叉连接”的规则:发送设备的Tx引脚要连接到接收设备的Rx引脚,接收设备的Tx引脚连接到发送设备的Rx引脚,同时两个设备的GND必须相连,以保证电平参考一致。

需要特别注意的是,不同设备的UART电平标准可能不同。比如,传统PC的RS232接口使用的是±12V的电平,而微控制器的UART通常使用3.3V或5V的TTL电平。如果直接连接不同电平标准的设备,很可能会损坏芯片。这时候就需要添加电平转换电路,比如MAX232芯片,实现RS232与TTL电平之间的转换,确保通信安全。

五、UART通信的优缺点:适合的才是最好的

(一)优点:简洁实用的“老伙计”

硬件需求简单:仅需三根线即可实现全双工通信,大大降低了硬件设计的复杂度和成本,尤其适合资源有限的嵌入式系统。

无需时钟信号:异步传输模式让设备摆脱了时钟线的束缚,布线更加灵活,也减少了因时钟干扰导致的通信错误。

错误检测机制:奇偶校验位的存在,为数据传输提供了基础的错误检测能力,提升了通信的可靠性。

配置灵活:数据包的结构(数据位长度、奇偶校验模式、停止位长度)可以根据实际需求灵活配置,适配不同的应用场景。

兼容性强:UART是一种经过长期验证的成熟技术,几乎所有的微控制器和嵌入式设备都支持UART接口,文档资料丰富,开发门槛低。

(二)缺点:并非全能的“通信专家”

数据帧长度有限:数据位最多只能设置为9位,这意味着单个数据包最多只能承载9位数据,对于需要传输大量连续数据的场景,效率较低。

不支持多设备组网:UART是点对点的通信方式,一个发送端只能对应一个接收端,无法像I2C或SPI那样实现多设备组网,扩展性较差。

波特率同步要求高:发送和接收设备的波特率必须严格匹配(误差不超过10%),否则会导致通信失败,在一些对时钟精度要求不高的设备上,可能需要额外的校准机制。

六、UART通信的应用场景:从调试到工业控制

UART的特性决定了它在很多场景中都能发挥独特的作用:

(一)设备调试:工程师的“得力助手”

在嵌入式开发过程中,UART是最常用的调试工具之一。工程师可以通过UART将微控制器内部的寄存器值、程序运行状态等信息打印到串口调试助手,实时监测程序的运行情况,快速定位bug。比如在调试STM32单片机时,通过配置UART串口,就能轻松输出调试信息,大大提高开发效率。

(二)短距离数据传输:传感器与控制器的“桥梁”

在物联网和工业控制领域,UART常被用于连接传感器与控制器。比如,温湿度传感器、光照传感器等可以通过UART将采集到的数据发送给微控制器,微控制器再根据这些数据执行相应的控制逻辑。这种短距离、低速率的传输场景,UART的简洁性和可靠性刚好能满足需求。

(三)模块扩展:功能拓展的“接口”

很多功能模块,比如GPS模块、蓝牙模块、RFID读卡器等,都提供了UART接口。通过UART,这些模块可以快速与树莓派、Arduino等主控设备连接,实现定位、无线通信、身份识别等功能。比如在一个智能小车项目中,通过UART连接蓝牙模块,就能用手机远程控制小车的运动。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在嵌入式系统开发中,UART(通用异步收发传输器)是最常用的通信接口之一。在硬件设计过程中,工程师可能会遇到Rx和Tx引脚接反或需要电平反转的特殊场景。

关键字: UART 嵌入式

Arduino保持其通常的作用:读取传感器,运行逻辑,并通过串行端口发送纯文本。TinyTTS通过一个3.5 毫米的音频插孔接收这些文本,然后自己生成语音。没有网络,没有带音频文件的SD卡,没有编解码器。

关键字: Arduino 传感器 UART BME680

在单片机程序开发UART通信宛如一座坚固而灵动的桥梁,紧密连接着单片机与外部设备,让数据得以顺畅地穿梭交流。无论是与传感器进行数据交互,还是和上位机软件协同工作,UART通信都凭借其简单可靠、成本低廉的特性,成为众多开发...

关键字: 单片机 UART

未来,随着 5G、物联网、人工智能等技术的发展,可编程波特率产生器将面临更高的性能要求和更复杂的应用场景。通过不断创新和技术进步,可编程波特率产生器将在更广泛的领域发挥重要作用,推动数字通信技术的发展和应用。

关键字: 波特率

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)通信协议是嵌入式系统中广泛应用的通信协议之一。它以其简单、可靠和灵活的特性,成为连接微控制器、传感器、...

关键字: 嵌入式系统 UART 通信协议

在嵌入式开发领域,UART、I2C、SPI等接口技术被广泛使用,它们为微控制器与外部设备之间的通信提供了高效、可靠的途径。本文将详细介绍这三种常用的外设接口。

关键字: UART I2C

在现代嵌入式系统开发中,串行通信协议扮演着至关重要的角色。其中,UART(通用异步收发传输器)、I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)...

关键字: UART I2C SPI 串行总线

串口全称是串行接口(Serial Interface),串口通讯指仅用一对传输线就能将数据以比特位进行传输的一种通讯方式。尽管串口通讯必按字节传输的并行通信慢,但是串口可以在仅用两根线的情况下完成数据传输,大大降低了成本...

关键字: 串口 UART

在嵌入式系统的开发过程中,调试是至关重要的一环。调试工具的选择直接影响到开发效率、系统稳定性以及后期的维护成本。在众多通信协议中,UART(通用异步收发传输器)因其简单性、灵活性以及广泛的工具支持,成为嵌入式调试中的首选...

关键字: 嵌入式 UART SPI I2C
关闭