第1章:工业串口通信概述

大家好,我是老张。做嵌入式这些年,我打交道最多的就是串口。说实话,串口通信看起来简单,但里面的门道真不少。今天咱们就从最基础的东西聊起。

1.1 RS232/RS485/RS422标准对比

这三种标准,说白了就是工业设备之间「说话」的规矩。我刚开始做项目时,就吃过接口不匹配的亏——明明线接对了,数据就是读不出来。后来才明白,不同标准有各自的脾气。

特性 RS232 RS485 RS422
传输方式 单端(不平衡) 差分(平衡) 差分(平衡)
最大距离 约15米 约1200米 约1200米
最大节点数 1对1 最多256个 1发10收
信号线数 TX、RX、GND A、B两根线 4根线(T+、T-、R+、R-)
典型应用 调试口、短距设备 工业总线、PLC网络 长距点对多点

我个人习惯这样选型:

  • RS232:调试用,或者设备就在手边。比如我调试单片机时,串口线不超过2米,232完全够用。
  • RS485:工厂里最常用。我在一个自动化产线项目中,用485挂了32个传感器,跑115200波特率,稳得很。
  • RS422:需要全双工且距离远时用。比如控制云台摄像头,既要发指令又要收数据,422就比485方便。
注意:RS232的电压是±12V,而RS485/422是差分信号,电压差只有几伏。千万别直接连!我曾经见过有人把232的TX接到485的A线上,结果烧了接口芯片。

1.2 波特率/数据位/校验位/停止位详解

这些参数,就是串口通信的「握手协议」。两边必须一模一样,否则数据就是乱码。我遇到过最坑的事:客户说设备没反应,我过去一看,波特率设成了9600,设备实际是19200——差了整整一倍。

波特率

说白了就是每秒传多少位。常见的有:

  • 9600:老设备最爱,稳定但慢
  • 115200:现在的主流,速度够用
  • 921600:高速场景,但线长超过1米就容易丢包

你想想看,波特率越高,对线缆和干扰越敏感。我建议:能用115200就别用更高的,除非你确定线缆质量好、距离短。

数据位

通常是8位,因为一个字节就是8位。老设备可能用7位(比如传ASCII码)。我基本只用8位,省心。

校验位

  • 无校验(N):最简单,不检查错误
  • 奇校验(O):1的个数为奇数
  • 偶校验(E):1的个数为偶数

嗯,这里要注意:校验位只能检测奇数个错误。如果两个位同时出错,校验就失效了。所以工业上更常用CRC校验,但那是协议层的事,串口参数里只管奇偶校验。

停止位

通常是1位。老设备可能用2位,给接收端更多时间处理。我一般用1位,除非遇到兼容性问题。

我的经验:调试时先用9600、8N1试试,这是最通用的配置。如果不行,再逐个参数排查。我曾经用这个方法,半小时搞定了别人折腾两天的通信问题。

1.3 PDA串口硬件接口介绍

PDA上的串口,跟电脑上的不太一样。电脑通常是DB9公头,PDA则五花八门。我见过最奇葩的是用耳机接口改的串口——三根线塞进一个3.5mm插孔里。

常见的PDA串口类型:

  • DB9母头:工业PDA常用,结实耐用
  • RJ45接口:有些PDA用网口做串口,需要转接线
  • USB转串口:现在最普遍,但要注意驱动兼容性
  • 蓝牙串口:无线方便,但延迟和稳定性不如有线

我个人的习惯是:能用有线就不用无线。蓝牙串口在实验室里挺好,一到工厂车间,干扰多、距离远,经常断连。有一次在产线上调试,蓝牙串口每隔10分钟断一次,气得我直接换了根USB线。

关键点:无论什么接口,最终都要确认三件事:

  1. 引脚定义(哪根是TX,哪根是RX)
  2. 电平标准(232还是485?)
  3. 波特率等参数

这三样对了,通信就成功了一半。

好了,第一章就聊到这儿。下一章咱们会讲Python怎么操作串口,到时候我会拿一个真实的扫码枪案例来演示。记得准备好你的PDA和串口线,咱们动手干起来。