一文助你搞懂:UART、RS232、RS485、IIC、SPI

发布时间:2026/7/4 4:30:40
一文助你搞懂:UART、RS232、RS485、IIC、SPI 序言作为硬件工程师我们经常会接触到各种通信协议有常用于与外设通信的RS232、RS485、CAN、SPI、IIC等等对于刚开始接触或者没有设计过实战电路的兄弟来说常常会感到迷惑甚至无从下手。那么今天我想尝试通过两篇文章搭配实战电路讲清楚串口通信与常见的通信协议帮助你我他更好的理解通信协议本文将聚焦于串口通信也就是UART、USART、TTL、RS232、RS485它们的关系与如何运用一理论知识我们随手打开一个处理器的数据手册也能注意到它支持各种各样的通信接口比如国民技术的N32G452系列ARM Cortex-M4内核为什么有这么多通信接口不同通信接口的优缺点是什么我们怎么评估用哪种通信通信速率接口总线数量抗干扰能力何为异步通信和同步通信呢一串口通信串口通信通信包含了UART、USART、TTL、RS232、RS485等通信接口之所以有这么多种通信就是因为它们的电气标准不同。那它们有什么区别呢总结可以简单的理解为串口通信包含了UART和USART然后根据电平的标准抗干扰能力定义了三种通信接口分别是TTL板内短距、RS232中距离、RS485长距离。我们在选择哪种通信接口的时候通信距离是一个特别合适的判断方式二IIC通信1.IIC硬件电路IIC通信只有两根线一根是SDA数据线一根是SCL时钟线。很显然因为有时钟线固然IIC是一种同步通信方式。同时它也支持一主多从模式一个主机多个从机MCU的一个硬件IIC可以控制多个外设IIC通信规定了空闲阶段SDA和SCL都应处于高电平状态。因此我们在设计电路时SDA和SCL都应配置上拉电阻一般来说4.7K和10K较为合适具体阻值可以根据实测波形调整驱动能力。εRC那IIC通信是如何进行通信的呢作为硬件工程师我们需要了解它的以下几点空闲状态、开始/停止通信状态、发送数据、接收数据时的SDA和SCL状态2.IIC的各种状态空闲、起始/终止、传输a.空闲状态IIC通信协议规定了IIC总线空闲状态时SDA和SCL为高电平状态b.起始/终止通信状态起始信号在SCL时钟线处于高电平状态下SDA从高电平切换成低电平下降沿终止信号在SCL时钟线处于高电平状态下SDA从低电平切换成高电平上升沿c.发送/接收数据状态那IIC具体是如何传输数据的呢简单的来说IIC通信的结构是这样的起始信号发送/接收数据终止信号。其中发送/接收数据需要遵行相应的规则。那接下来就简单讲一下IIC的传输数据过程。首先发送完起始信号也就是让SCL保持高电平SDA从高电平切换成低电平下降沿。紧跟着的第一个字节首字节需要发送一个7位从机地址和1位读写位构成的字节表示要与哪个从机通信然后是读是写操作。从机地址每个从机设备出厂自带一个设备地址7位读/写位第8位为0时表示执行读操作为1时表示执行写操作其次在首次发送完之后接下来就进入了正式的数据传输部分了它的结构是8位数据一个字节1位应答信号。8位数据按照高位到低位传输数据时SCL和SDA的状态是SCL处于高电平SDA处于稳定的高低电平状态而非上升/下降沿防止与起始/终止信号混乱三SPI通信其实对于初级硬件工程师而言学习这些通信协议最重要的莫非就是如何通过通信协议让外设和主控建立起通信简单的说就是如何画原理图。至于它们如何传输数据传输数据的结构如何我们需要一定的了解即可方便调试。SPI通信协议的话相对于其它通信协议通信线会多一些。SPI总共4条通信新。四条通信线分别是1.MOSIMaster Output Slave Input:主设备输出从设备输入的线数据从主设备流向从设备2.MISOMaster Input Slave Output:主设备输入从设备输出的线数据从从设备流向主设备3.SCLKSerial Clock:时钟信号线由主设备生成负载同步数据传输的节奏4.CSChip Select:片选信号线用于主设备选择要通信的从设备通信流程SPI的通信典型过程是这样的1.主设备输出信号拉低从设备上的CS线选中它2.主设备在SCLK上生成时钟信号控制传输数据的节奏3.主设备通过MOSI数据线向从设备发送数据从设备通过MISO数据线向主设备传输数据。这个过程是同时双向传输的二实战电路1.TTL单片机的UART/USART接口直接输入/输出的就是TTL电平信号1.上拉电阻R88确保空闲状态为”高电平“协议硬性要求。串口协议规定总线在空闲没有数据传输时必须保持高电平逻辑”1“)。若RX浮空电平不确定一旦受微弱干扰导致电平掉到了低电平接收方会误以为这是”起始位“从而开始乱收数据产生一堆乱码。2.R89和R90阻尼电阻提升抗干扰能力3.ESD防静电靠近端子进行摆放回路尽可能短2.RS232其实搭建RS232硬件电路很简单就是通过一个电平转换芯片将MCU的TTL电平转换为RS232电平。这里为什么选择RS232芯片呢主要是考虑到通信距离。因为两个板子的通信距离在一米以内不是很远也不是很近。连接方式很简单将MCU上的TX和RX线连接到电平转换芯片再将转换芯片的输出信号连接出去即可具体以数据手册为准这里的芯片可以理解为就是一个桥梁的作用TPT3122EH-QF8R这款芯片是支持双通道TTL/RS232转换的3.RS485工作原理1.MCU_TX端若其输出低电平此时Q77PNP导通DE端驱动器输出高电平使能此时RS485发送器开启MCU发送数据1.MCU_TX端若其输出高电平此时Q77PNP不通/RE端接收器输出低电平使能此时RS485接收器开启MCU接收数据4.IIC这个电路多了一个INT引脚中断不属于IIC协议规范而是由这款这款传感器芯片自身额外提供的硬件功能引脚。按照正常连接的话只需要将SCL和SDA连接到MCU的硬件IIC引脚上即可至于电路中的33R100pfESD3.3V等器件都是为了增加系统的稳定性和可靠性具体而言33R和100pf是可以看成阻尼电阻和滤波电容组成的“低通滤波器”确保SI信号完整性ESD是瞬态抑制二极管PCB布局时靠近端子防静电用的。5.SPI