串口通信入门:RS232/RS485基础、波特率、数据位、停止位、校验位
说实话,很多刚接触上位机开发的朋友,一上来就被这几个参数搞晕了。我当年第一次调XY2-100的串口时,也为此熬夜查资料。其实串口通信没那么玄乎,说白了就是两台设备之间约好一套“说话规则”——什么电压算1、什么电压算0,每秒说几个字,每个字包含几个比特,说完一句话要不要做个标记。
1. RS232与RS485——不同的“方言”
物理层标准决定了硬件怎么连接。RS232和RS485就像两个人用不同的音量讲话:
- RS232:单端信号,一根线传数据,另一根接地。电压范围+3~+15V表示逻辑0,-3~-15V表示逻辑1。抗干扰能力弱,传输距离15米左右。适合短距离、一对一通信。
- RS485:差分信号,两根线(A、B)同时传,靠电压差判断逻辑。抗干扰能力强,最远可以到1200米,而且支持多节点组网。
我在一个仓储机器人项目里用过RS485,现场电机启动时,RS232的数据经常丢包,换成RS485后一切正常。嗯,很多PLC和工业仪表都偏爱RS485,XY2-100也不例外。
2. 波特率——说话的语速
波特率就是每秒传输的符号数,单位是bps(bits per second)。常见的值有9600、19200、115200等。
注意:发送端和接收端的波特率必须完全一致,哪怕差一点点都会导致乱码。有些国产设备标称9600,实际可能跑在9602附近,这就得用逻辑分析仪去校准了。
3. 数据位——每个字包含多少比特
数据位是一帧中真正传输信息的比特数量。常见的是8位(一字节)或7位(ASCII字符)。
- 8位:最常用,直接传输一个字节(0~255),适合二进制数据。
- 7位:常用于纯ASCII文本,比如一些老式传感器。
4. 停止位——句号的作用
数据位传输完后,需要一段停止时间来标识帧结束。停止位就是1位或2位的高电平。
- 1位停止位:默认配置,效率高。
- 2位停止位:给接收端更多处理时间,适用于低速设备或长距离通信。
一般在XY2-100通信中,我们使用1位停止位就够了。除非你的布线上有严重干扰,可以考虑2位。
5. 校验位——检查数据是否被篡改
校验位是一种简单的检错机制。可选无校验(None)、奇校验(Odd)、偶校验(Even)。还有Mark和Space,不过很少用。
- 无校验:不附加额外比特,性能最高。适合信噪比好的环境。
- 奇校验:数据中1的个数加上校验位,使得总数为奇数。
- 偶校验:总数为偶数。
我习惯在调试阶段先用无校验,等通信调通了再决定是否加校验。因为加了校验后,如果发送方和接收方共识不一致,反而会报错。
6. 参数配置速查表
下表是XY2-100最常用的串口参数组合,直接复制粘贴即可:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 接口标准 | RS485 | 差分信号,抗干扰,支持多节点 |
| 波特率 | 9600 / 115200 | 长距离用9600,短距离用115200 |
| 数据位 | 8 | 二进制数据传输 |
| 停止位 | 1 | 标准配置 |
| 校验位 | None | 通信稳定时可不加 |
7. 教你如何一步一步匹配参数
在实际项目中,我建议按照这个流程来配置(也是下面这张SVG图的思路):
- 确认物理层:读设备手册,确定用RS232还是RS485。
- 尝试常用波特率:从115200开始,不行就降到9600。
- 固定数据位和停止位:8N1(8数据位,无校验,1停止位)是万能钥匙。
- 发送简单测试帧:比如向XY2-100发送0x55(二进制01010101),看回传是否一致。
- 若失败,逐项微调:先改校验位,再改停止位,最后改数据位。
8. 本章核心结构
下面这张图帮你理清串口参数配置的全链路关系:
从图中可以看到,物理层、时序、帧格式三者汇合最终形成串口配置。在实际写代码前,先把这几个参数理清楚,比盲猜要高效得多。
好了,串口基础就讲到这里。记住这四个核心参数(波特率、数据位、停止位、校验位)和两种物理层标准,后面写代码时就心里有底了。