做工业自动化快十年了见过最多的入门级坑就是串口。刚入行的时候我被这几个名词折磨了整整一个月。一会儿UART一会儿USART一会儿RS232一会儿RS485资料看了一大堆还是分不清谁是谁。接个传感器线接了拆拆了接调试了三天通信就是不通最后发现是把RS232和RS485搞混了差点被师傅骂死。后来做的项目多了才发现90%的人都搞不清这几个东西的区别。甚至很多工作三五年的工程师也只会照着接线图插线出了问题根本不知道怎么排查。今天我就把这些东西彻底讲透从底层原理到实际应用再到那些年我踩过的所有坑全给你说明白。别觉得串口简单工业现场80%的通信问题都是串口问题。把串口搞懂了你就能解决工业自动化一半的通信故障。先搞懂最基础的什么是串口通信在讲各种名词之前先搞明白最根本的问题什么是串口通信串口通信说白了就是一位一位地按顺序传输数据。和它对应的是并口通信就是一次传8位、16位甚至更多位。很多人会问现在都2026年了USB、以太网、Profinet满天飞为什么串口还没死而且在工业界反而越来越吃香答案很简单简单、稳定、便宜、易实现。简单不需要复杂的协议栈两个设备只要三根线就能通信稳定对硬件要求低抗干扰能力强适合恶劣的工业环境便宜一个串口芯片几毛钱一个RS485模块几块钱易实现几乎所有的单片机、PLC、传感器都自带串口不需要额外的硬件你去任何一个工厂随便拆开一个设备里面肯定有串口。小到温度传感器大到变频器、机器人没有不支持串口的。UART vs USART99%的人都搞混了先解决第一个误区UART和USART不是协议是芯片内部的硬件外设。很多人说用UART协议通信这句话是错的。UART根本不是协议它是一个硬件模块全称是通用异步收发传输器Universal Asynchronous Receiver/Transmitter。它的作用只有一个把芯片内部的并行数据转换成串行数据发出去再把收到的串行数据转换成并行数据给芯片。那USART又是什么USART全称是通用同步异步收发传输器Universal Synchronous/Asynchronous Receiver/Transmitter。看到区别了吗多了一个同步。也就是说USART比UART多了一个同步通信模式。同步通信需要额外的时钟线来同步数据收发双方用同一个时钟传输速度更快。但是重点来了在工业界99.9%的情况下我们都只用异步模式。同步模式几乎没人用。所以你会发现现在几乎所有的单片机比如STM32上面的串口外设都叫USART但大家都习惯叫它UART。因为没人用它的同步功能都是当UART来用的。这就是为什么很多人会把UART和USART混为一谈的原因。本质上在实际应用中你可以认为它们是同一个东西。记住这个结论UART是异步的USART是同步异步的工业上只用异步所以USARTUART。RS232 vs RS485这才是最核心的区别这是最容易搞混的两个东西也是工业现场用得最多的。先纠正第二个最大的误区RS232和RS485不是协议也不是硬件外设它们是物理层电气标准。很多人说RS232协议这句话也是错的。它们只是规定了电信号的传输方式和协议没有任何关系。UART是芯片内部的东西输出的是TTL电平3.3V或者5V。这种电平传输距离非常短最多也就几米而且抗干扰能力很差根本不能用在工业现场。所以我们需要把TTL电平转换成更适合长距离传输的电平标准这就是RS232和RS485的作用。单片机UART外设MAX232电平转换芯片RS232接口MAX485电平转换芯片RS485接口看到没UART是内核RS232和RS485只是不同的外壳。你用UART输出的TTL电平经过MAX232芯片就变成了RS232电平经过MAX485芯片就变成了RS485电平。这就是它们最本质的关系。很多人搞不清就是因为不知道中间还有个电平转换芯片。接下来我从各个维度对比一下RS232和RS485让你一眼就能看明白。对比项RS232RS485电气特性单端信号正负电平表示0和1逻辑1-3V ~ -15V逻辑03V ~ 15V差分信号AB线电压差表示0和1逻辑1A-B 200mV逻辑0A-B -200mV传输距离最大15米9600波特率最大1200米9600波特率传输速率最高115200bps常用9600/19200最高10Mbps常用9600/19200/38400节点数点对点只能接1个主设备和1个从设备总线型最多可接32/128/256个节点接线方式至少3根线TX、RX、GND需要交叉线连接最少2根线A、B建议3根线A、B、GND不需要交叉线抗干扰能力差单端信号容易受干扰强差分信号可以抵消共模干扰通信方式全双工同时收发半双工同一时间只能发或收适用场景短距离、点对点、简单设备比如电脑和单片机通信长距离、多节点、工业现场比如传感器网络、变频器通信这个表格一定要保存好以后再分不清的时候拿出来看一眼。串口通信的完整流程数据是怎么跑起来的很多人只会照着接线图接线根本不知道数据是怎么从一个设备传到另一个设备的。今天我就把这个过程拆解开让你彻底搞懂。串口异步通信的数据是一帧一帧传输的每帧数据的格式如下起始位数据位(5-8位)校验位(可选)停止位(1/1.5/2位)起始位总是低电平告诉接收方我要开始发数据了数据位真正要传输的数据通常是8位也就是一个字节校验位可选用来检查数据传输是否出错常用奇校验、偶校验或者无校验停止位总是高电平告诉接收方这帧数据发完了举个例子我们最常用的串口参数9600波特率8位数据位无校验1位停止位。意思就是每秒传输9600位数据每帧数据有1个起始位8个数据位0个校验位1个停止位10位。所以每秒最多能传输960字节的数据。这里有个非常重要的点收发双方的串口参数必须完全一致。只要有一个参数不一样通信就绝对不通。这是工业现场最常见的问题。很多人调试了半天最后发现只是波特率设错了或者停止位设成了2位。工业现场最常用的串口协议Modbus RTU前面说了RS232和RS485只是物理层标准它们只负责把数据传过去不管数据是什么意思。所以我们需要在上面加一个应用层协议规定数据的格式和含义。工业现场用得最多的就是Modbus RTU协议。可以说Modbus RTU是工业界的通用语言。几乎所有的PLC、变频器、传感器、仪表都支持Modbus RTU协议。Modbus RTU的帧格式非常简单地址码功能码数据区CRC校验1字节1字节N字节2字节地址码从设备的地址范围1-247用来区分总线上的不同从设备功能码告诉从设备要做什么操作比如读数据、写数据数据区具体的数据内容比如要读的寄存器地址和数量CRC校验用来检查数据传输是否出错最常用的功能码只有两个03读保持寄存器06写单个保持寄存器比如主设备要读地址为1的从设备的100号寄存器发出去的帧就是01 03 00 64 00 01 D5 CA从设备返回的帧就是01 03 02 00 0A 79 84表示寄存器100的值是10。就这么简单。Modbus RTU之所以这么流行就是因为它足够简单容易实现而且开放免费。那些年我踩过的串口坑最后分享一些我踩过的串口坑这些都是花钱买不来的经验。RS232交叉线问题。RS232是全双工TX发RX收所以两个设备连接的时候必须TX接RXRX接TXGND接GND。很多人直接直连结果怎么都通信不上。记住公头对母头直连公头对公头或者母头对母头必须交叉。RS485终端电阻问题。RS485总线长度超过100米的时候一定要在总线的两端各加一个120Ω的终端电阻。否则会有信号反射导致通信时好时坏距离越远问题越严重。我曾经因为这个问题在客户现场调试了整整两天。RS485一定要接GND。很多人以为RS485只要接A和B两根线就行这是大错特错。如果不接GND两个设备的地电位不同会产生很高的共模电压轻则通信不稳定重则直接烧MAX485芯片。工业现场一定要接GND血的教训。波特率不要太高。很多人喜欢用115200波特率觉得速度快。但是在工业现场波特率越高传输距离越短抗干扰能力越差。除非特殊情况否则用9600或者19200就足够了稳定最重要。发送数据不要太快。很多人写代码发完一帧数据马上发下一帧结果导致数据丢失。因为串口是低速设备接收方需要时间处理数据。一定要加适当的延时一般10-20ms就够了。接地问题。工业现场的接地非常重要。如果接地不好会产生很大的干扰导致串口通信乱码甚至烧设备。一定要把所有设备的地都接在一起并且可靠接地。总结最后用一句话总结一下这几个东西的关系UART是芯片内部的硬件外设负责并行和串行数据的转换RS232和RS485是物理层电气标准负责把TTL电平转换成适合长距离传输的电平Modbus RTU是应用层协议规定了数据的格式和含义。串口通信看起来简单其实细节非常多。很多人觉得串口没什么技术含量但是真正能把串口玩明白的人在工业界绝对是香饽饽。
从0到1搞懂串口通信:UART、USART、RS232、RS485到底有啥区别?
发布时间:2026/5/22 12:42:04
做工业自动化快十年了见过最多的入门级坑就是串口。刚入行的时候我被这几个名词折磨了整整一个月。一会儿UART一会儿USART一会儿RS232一会儿RS485资料看了一大堆还是分不清谁是谁。接个传感器线接了拆拆了接调试了三天通信就是不通最后发现是把RS232和RS485搞混了差点被师傅骂死。后来做的项目多了才发现90%的人都搞不清这几个东西的区别。甚至很多工作三五年的工程师也只会照着接线图插线出了问题根本不知道怎么排查。今天我就把这些东西彻底讲透从底层原理到实际应用再到那些年我踩过的所有坑全给你说明白。别觉得串口简单工业现场80%的通信问题都是串口问题。把串口搞懂了你就能解决工业自动化一半的通信故障。先搞懂最基础的什么是串口通信在讲各种名词之前先搞明白最根本的问题什么是串口通信串口通信说白了就是一位一位地按顺序传输数据。和它对应的是并口通信就是一次传8位、16位甚至更多位。很多人会问现在都2026年了USB、以太网、Profinet满天飞为什么串口还没死而且在工业界反而越来越吃香答案很简单简单、稳定、便宜、易实现。简单不需要复杂的协议栈两个设备只要三根线就能通信稳定对硬件要求低抗干扰能力强适合恶劣的工业环境便宜一个串口芯片几毛钱一个RS485模块几块钱易实现几乎所有的单片机、PLC、传感器都自带串口不需要额外的硬件你去任何一个工厂随便拆开一个设备里面肯定有串口。小到温度传感器大到变频器、机器人没有不支持串口的。UART vs USART99%的人都搞混了先解决第一个误区UART和USART不是协议是芯片内部的硬件外设。很多人说用UART协议通信这句话是错的。UART根本不是协议它是一个硬件模块全称是通用异步收发传输器Universal Asynchronous Receiver/Transmitter。它的作用只有一个把芯片内部的并行数据转换成串行数据发出去再把收到的串行数据转换成并行数据给芯片。那USART又是什么USART全称是通用同步异步收发传输器Universal Synchronous/Asynchronous Receiver/Transmitter。看到区别了吗多了一个同步。也就是说USART比UART多了一个同步通信模式。同步通信需要额外的时钟线来同步数据收发双方用同一个时钟传输速度更快。但是重点来了在工业界99.9%的情况下我们都只用异步模式。同步模式几乎没人用。所以你会发现现在几乎所有的单片机比如STM32上面的串口外设都叫USART但大家都习惯叫它UART。因为没人用它的同步功能都是当UART来用的。这就是为什么很多人会把UART和USART混为一谈的原因。本质上在实际应用中你可以认为它们是同一个东西。记住这个结论UART是异步的USART是同步异步的工业上只用异步所以USARTUART。RS232 vs RS485这才是最核心的区别这是最容易搞混的两个东西也是工业现场用得最多的。先纠正第二个最大的误区RS232和RS485不是协议也不是硬件外设它们是物理层电气标准。很多人说RS232协议这句话也是错的。它们只是规定了电信号的传输方式和协议没有任何关系。UART是芯片内部的东西输出的是TTL电平3.3V或者5V。这种电平传输距离非常短最多也就几米而且抗干扰能力很差根本不能用在工业现场。所以我们需要把TTL电平转换成更适合长距离传输的电平标准这就是RS232和RS485的作用。单片机UART外设MAX232电平转换芯片RS232接口MAX485电平转换芯片RS485接口看到没UART是内核RS232和RS485只是不同的外壳。你用UART输出的TTL电平经过MAX232芯片就变成了RS232电平经过MAX485芯片就变成了RS485电平。这就是它们最本质的关系。很多人搞不清就是因为不知道中间还有个电平转换芯片。接下来我从各个维度对比一下RS232和RS485让你一眼就能看明白。对比项RS232RS485电气特性单端信号正负电平表示0和1逻辑1-3V ~ -15V逻辑03V ~ 15V差分信号AB线电压差表示0和1逻辑1A-B 200mV逻辑0A-B -200mV传输距离最大15米9600波特率最大1200米9600波特率传输速率最高115200bps常用9600/19200最高10Mbps常用9600/19200/38400节点数点对点只能接1个主设备和1个从设备总线型最多可接32/128/256个节点接线方式至少3根线TX、RX、GND需要交叉线连接最少2根线A、B建议3根线A、B、GND不需要交叉线抗干扰能力差单端信号容易受干扰强差分信号可以抵消共模干扰通信方式全双工同时收发半双工同一时间只能发或收适用场景短距离、点对点、简单设备比如电脑和单片机通信长距离、多节点、工业现场比如传感器网络、变频器通信这个表格一定要保存好以后再分不清的时候拿出来看一眼。串口通信的完整流程数据是怎么跑起来的很多人只会照着接线图接线根本不知道数据是怎么从一个设备传到另一个设备的。今天我就把这个过程拆解开让你彻底搞懂。串口异步通信的数据是一帧一帧传输的每帧数据的格式如下起始位数据位(5-8位)校验位(可选)停止位(1/1.5/2位)起始位总是低电平告诉接收方我要开始发数据了数据位真正要传输的数据通常是8位也就是一个字节校验位可选用来检查数据传输是否出错常用奇校验、偶校验或者无校验停止位总是高电平告诉接收方这帧数据发完了举个例子我们最常用的串口参数9600波特率8位数据位无校验1位停止位。意思就是每秒传输9600位数据每帧数据有1个起始位8个数据位0个校验位1个停止位10位。所以每秒最多能传输960字节的数据。这里有个非常重要的点收发双方的串口参数必须完全一致。只要有一个参数不一样通信就绝对不通。这是工业现场最常见的问题。很多人调试了半天最后发现只是波特率设错了或者停止位设成了2位。工业现场最常用的串口协议Modbus RTU前面说了RS232和RS485只是物理层标准它们只负责把数据传过去不管数据是什么意思。所以我们需要在上面加一个应用层协议规定数据的格式和含义。工业现场用得最多的就是Modbus RTU协议。可以说Modbus RTU是工业界的通用语言。几乎所有的PLC、变频器、传感器、仪表都支持Modbus RTU协议。Modbus RTU的帧格式非常简单地址码功能码数据区CRC校验1字节1字节N字节2字节地址码从设备的地址范围1-247用来区分总线上的不同从设备功能码告诉从设备要做什么操作比如读数据、写数据数据区具体的数据内容比如要读的寄存器地址和数量CRC校验用来检查数据传输是否出错最常用的功能码只有两个03读保持寄存器06写单个保持寄存器比如主设备要读地址为1的从设备的100号寄存器发出去的帧就是01 03 00 64 00 01 D5 CA从设备返回的帧就是01 03 02 00 0A 79 84表示寄存器100的值是10。就这么简单。Modbus RTU之所以这么流行就是因为它足够简单容易实现而且开放免费。那些年我踩过的串口坑最后分享一些我踩过的串口坑这些都是花钱买不来的经验。RS232交叉线问题。RS232是全双工TX发RX收所以两个设备连接的时候必须TX接RXRX接TXGND接GND。很多人直接直连结果怎么都通信不上。记住公头对母头直连公头对公头或者母头对母头必须交叉。RS485终端电阻问题。RS485总线长度超过100米的时候一定要在总线的两端各加一个120Ω的终端电阻。否则会有信号反射导致通信时好时坏距离越远问题越严重。我曾经因为这个问题在客户现场调试了整整两天。RS485一定要接GND。很多人以为RS485只要接A和B两根线就行这是大错特错。如果不接GND两个设备的地电位不同会产生很高的共模电压轻则通信不稳定重则直接烧MAX485芯片。工业现场一定要接GND血的教训。波特率不要太高。很多人喜欢用115200波特率觉得速度快。但是在工业现场波特率越高传输距离越短抗干扰能力越差。除非特殊情况否则用9600或者19200就足够了稳定最重要。发送数据不要太快。很多人写代码发完一帧数据马上发下一帧结果导致数据丢失。因为串口是低速设备接收方需要时间处理数据。一定要加适当的延时一般10-20ms就够了。接地问题。工业现场的接地非常重要。如果接地不好会产生很大的干扰导致串口通信乱码甚至烧设备。一定要把所有设备的地都接在一起并且可靠接地。总结最后用一句话总结一下这几个东西的关系UART是芯片内部的硬件外设负责并行和串行数据的转换RS232和RS485是物理层电气标准负责把TTL电平转换成适合长距离传输的电平Modbus RTU是应用层协议规定了数据的格式和含义。串口通信看起来简单其实细节非常多。很多人觉得串口没什么技术含量但是真正能把串口玩明白的人在工业界绝对是香饽饽。