大家好,我是“不搞技术,只做知识搬运”的工蚁,新一期通讯协议来啦!
目录
一、UART是什么?
UART是一种异步串行通信协议,它让两个设备通过简单的两根线(TX和RX)就能互相传递数据。它的核心特点是:
-
异步:无需同步时钟信号,双方只需约定好数据传输速度(波特率)即可。
-
简单:硬件成本低,实现容易。
-
灵活:支持一对一通信,广泛用于单片机、传感器、蓝牙模块等场景。
举个栗子:
想象两个人用对讲机通话。他们不需要实时同步,只需要约定好语速(比如每秒说10个字),就能听懂对方的话——这就是UART的“异步”精髓!
二、UART如何工作?
1. 硬件连接
UART只需要两根线:
-
TX(Transmit,发送端):设备A的TX连接设备B的RX。
-
RX(Receive,接收端):设备A的RX连接设备B的TX。
(注:设备间的TX和RX需交叉连接,地线GND通常也需要连接以保持电平一致。)
2. 数据格式
UART传输的数据被封装成“帧”,每帧包含以下几个部分:
-
起始位(1位):低电平(0),表示一帧数据的开始。
-
数据位(5-9位):实际传输的数据(如8位ASCII字符)。
-
校验位(1位,可选):用于检测数据是否出错(奇校验/偶校验)。
-
停止位(1-2位):高电平(1),表示一帧数据的结束。
示例:传输字符A
(ASCII码01000001
)的帧结构:
复制
0 | 0 1 0 0 0 0 0 1 | 1 | 1 (起始位 | 数据位 | 校验位 | 停止位)
3. 波特率(Baud Rate)
波特率决定了数据传输的速度,单位是bps(bits per second)。
-
常见值:9600、19200、115200等。
-
重点:通信双方的波特率必须一致!否则数据会乱码。
举个栗子:
如果波特率是9600,表示每秒传输9600位数据。传输一个8位数据帧(含起始位、停止位)需要的时间为:
(1 + 8 + 1 + 1) / 9600 ≈ 0.00114秒(即1.14毫秒)。
三、UART的特点(点对点通信)
✅ 优点
-
硬件简单:只需两根线,无需时钟信号。
-
灵活:支持不同设备间的通信(如3.3V和5V电平设备需电平转换)。
-
可靠:校验位可检测数据传输错误。
❌ 缺点
-
速度较慢:不适合高速传输(如视频、音频流)。
-
点对点:仅支持两个设备间通信,无法多设备组网。
四、UARD的实际应用
-
单片机与电脑通信:通过USB转UART模块(如CH340、CP2102)调试程序。
-
传感器数据读取:如GPS模块、温湿度传感器。
-
蓝牙/WiFi模块:通过AT指令配置模块参数。
-
工业控制:PLC与外部设备的简单通信。
五、UART通信电路
“CH340一键下载”
与单片机接线方式(交叉连接就对了)
-
发送端TX → 接收端RX
-
接收端TX → 发送端RX
-
GND → GND
六、注意事项
-
电平匹配:3.3V和5V设备通信时需使用电平转换芯片(如MAX3232)。
-
抗干扰:长距离通信时建议使用RS-485标准(UART的增强版)。
-
波特率误差:波特率误差过大会导致数据错误,需选择双方支持的精确值。
附录:常见问题
Q:UART是全双工还是半双工?
A:全双工!TX和RX独立,可同时收发数据。
Q:UART需要地线吗?
A:是的,GND用于统一电平参考,避免信号漂移。
Q:UART最高速度能达到多少?
A:通常1Mbps左右,具体取决于硬件性能。
Q:如何调试UART通信问题?
A:用逻辑分析仪或串口调试助手(如PuTTY、Arduino IDE串口监视器)抓取数据。
希望这篇博客让你对UART有了清晰的认识!买个板子动手实践一次,胜过阅读十遍理论哦 🚀
咱们下期SPI见!