STM32 —— 常用串口通信协议

STM32 —— 常用串口通信协议

对于串口通信来说,有很多比较常用的通信协议,这里只介绍在 STM32 中比较常用,会用到的一些协议

RS-232

RS-232(又称EIA RS-232)是常用的串行通信接口标准之一,由美国电子工业协会(EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定。

它具有信号线少、灵活的波特率选择、采用负逻辑传送和传送距离较远等特点。

在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称 EIARS-232-C )是目前最常用的一种串行通讯接口。(“RS-232-C”中的“-C”只不过表示RS-232的版本,所以与“RS-232”简称是一样的)

它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个 25 个脚的 DB-25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来 IBM 的 PC 机将 RS232 简化成了 DB-9 连接器,从而成为事实标准。而工业控制的 RS-232 口一般只使用 RXD、TXD、GND 三条线

公母接口如下:

image

串口协议标准

RS-232C 标准(协议)的全称是 EIA-RS-232C 标准,其中 EIA (Electronic Industry Association)代表美国电子工业协会,RS(recommended standard)代表推荐标准,232 是标识号,该标准对串行通信的物理接口及逻辑电平都做了规定,其输出的电平称为 RS232 电平,C 代表 RS232 的最新一次修改(1969),在这之前,有 RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有EIARS-422A、EIA RS-423A、EIARS-485。这里只介绍 EIA RS-232C(简称232,RS232)。例如,目前在 IBM PC 机上的 COM1、COM2 接口,就是 RS-232C 接口。

最简单的 RS232 通信由三条数据线组成,即 TXD、RXD 和 GND。RS232 采用负逻辑电平,即 -15V ~ -3V 代表逻辑 “1” ,+ 3V ~ +15V 代表逻辑 “0” 。这里的电平,是 TxD 线(或者 RxD 线)相对于 GND 的电压。

串口的引脚定义

9 芯 信号方向来自 缩写 描述 备注
1 调制解调器 CD 载波检测 — —
2 调制解调器 RXD 接收数据(终端到计算机) RS-232 接收
3 PC TXD 发送数据(计算机到终端) RS-232 发送
4 PC DTR 数据中断准备好 — —
5 GND 信号地 RS-232 接地
6 调制解调器 DSR 通讯设备准备好 — —
7 PC RTS 请求发送 — —
8 调制解调器 CTS 允许发送 — —
9 调制解调器 RI 响铃指示器 — —

两个串口连接时,接收数据针脚与发送数据针脚相连,彼此交叉,信号地对应相接即可

最大通讯距离及速率

协议最初规定设备最大速率为 20kbps,对于 16550A UART 最大速率为 1.5Mbps。码元畸变小于4%的情况下,DTE 和 DCE 之间最大传输距离为 15m(50 英尺)。可见这个最大的距离是在码元畸变小于 4% 的前提下给出的。为了保证码元畸变小于 4% 的要求,接口标准在电气特性中规定,驱动器的负载电容应小于 2500pF。对于普通导线,其电容值约为 170pF/m,则允许距离 L=2500pF/(170pF/m)=15m。当速率下降时,传输距离会成倍增加,下表是 Texas Instruments 在不同速率下对应的传输线缆长度:

速率(bps) 最大线缆长度(m)
19200 15.24
9600 152.4
4800 304.8
2400 914.4

硬件链接

9线式连接示意图:

image

5线式连接示意图:

image

3线式连接示意图:

image

串口缺点

  1. 接口的信号电平值较高,易损坏接口电路的芯片,又因为与 TTL 电平不兼容故需使用电平转换电路方能与 TTL 电路连接。

  2. 传输速率较低,在异步传输时,波特率为 20Kbps ;因此在 CPLD 开发板中,综合程序波特率只能采用 19200 ,也是这个原因。

  3. 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。

  4. 传输距离有限,最大传输距离标准值为 50 英尺,实际上也只能用在 15 米左右。

RS-485

串口协议标准

电子工业协会(EIA)于1983年制订并发布 RS-485 标准,并经通讯工业协会(TIA) 修订后命名为 TIA/EIA-485-A,所以 TIA/EIA-485-A 才是真正的名字,因为人们已经叫习惯 RS-485 了,所以后续也一直沿用 RS-485 这个叫法。

RS-485 标准是为弥补 RS-232 通信距离短、速率低等缺点而产生的。RS-485 标准只规定了平衡发送器和接收器的电特性,而没有规定接插件、传输电缆和应用层通信协议。

RS-485 标准与 RS-232 不一样,数据信号采用差分传输方式(Differential Driver Modc),也称作平衡传输,它使用一对双绞线,将其中一线定义为 A,另一线定义为 B,如图所示:

image

特性

1)采用差分信号进行传输,增加了抗噪声能力,减少噪声辐射带来的干扰
2)支持长距离传输,最长可以达到 4000 英尺(约1219米)
3)传输速率较高,在 40 英尺内,速率可高达 10Mbps
4)同一总线可以连接多个驱动器和接收器
5)共模电压范围大,允许的最大共模电压可达到 -7V - 12V

串口引脚定义

电路原理图:

image

该原理图是一个基本的RS-485电路,采用的是Sipex公司的SP3485芯片,是一款低功耗的,工作电压为3.3V的芯片

微处理器的标准串行口通过 RXD 直接连接 SP3485 芯片的 RO 引脚,通过 TXD 直接连接 SP485R 芯片的 DI 引脚

让该芯片处于发送模式还是接收模式的选择位是 DE/!RE ,一般情况下把这两个引脚接在一起,只用微处理器的一个引脚控制

U9 是 TVS 管,环境恶劣时可加,做保护作用,平时实验可以不加

R25 是上拉电阻,R27 下拉,默认状态下将 A 拉高,B 拉低,如果不加电阻,那默认情况下是不稳定的,会对单片机的引脚造成干扰

芯片内部图:

image

收发器内部是一个接收器(上半部分)加一个发送器(下半部分),然后就是引脚功能

RO:接收器输出

RE:接收器输出使能(低电平有效)

DE:发送器输出使能(高电平有效)

DI:发送器输入

GND:接地连接

A:发送器输出/接收器输入反相

B:发送器输出/接收器输入反相

Vcc:正极电源(+3.3V<VCC<+3.60V)

电平信号

RS-485 采用的是差分信号的方式进行传输,通过 AB 两根线的电压差作为电平信号,差分信号对外界因素的干扰反映到两根线上影响是一样的,两根线的电压差不变,信号传递也就不会受干扰,因此会有更强的抗噪声干扰能力。

image

RS-485 差分线路包括以下2个信号:

A:非反向(non-inverting)信号

B:反向(inverting)信号

逻辑1:线路B信号电压比线路A高。一般 +2V ~ +6V

逻辑0:线路A信号电压比线路B高。一般 -2V ~ -6V

根据 RS485 总线的相关标准,当RS485总线差分电压大于 +200mV 时,RS485 收发器输出高电平;当 RS485 总线差分电压小于 -200mV 时,RS485 收发器输出低电平;当 RS485 总线上的电压在 -200mV~+200mV 之间时,RS485 收发器可能输出高电平也可能输出低电平

因此,为了防止 RS-485 总线上的差分电压处于 -200mV~+200mV 之间,就需要利用上拉下拉电阻来钳位总线上电压差值。上下拉电阻的阻止一般选用 4.7K ,实际需要多大的电阻,需要根据实际线路负载和电路情况计算选值

工作方式

RS-485 总线可以设计成两种通信方式:半双工与全双工

半双工

只允许数据在总线上单向的传输,即每次收发只能有其中一个。半双工总线的连接方式如下:

image

全双工

允许数据在总线上双向的传输,即每次收发能同时进行。全双工总线的连接方式如下:

image

TTL

详见我的另一篇博客:STM32 USB 转 TTL

RS-232、RS-485 、 TTL 与 CAN 总线 硬件框图与电平对比

RS-232 电平

全双工(逻辑 0:+3V–+15V 逻辑 1:-3V-- -15V )

硬件框图如下,RS-232 用于 MCU 与 PC 机之间通信:

image

0 和 1 表示如下图:

image

RS-485 电平

半双工、(逻辑1:+2V–+6V 逻辑0: -6V—2V)这里的电平指AB 两线间的电压差。

硬件框图如下:

image

0 和 1 表示如下图:

image

TTL 电平

全双工(逻辑1: 2.4V–5V 逻辑0: 0V–0.5V)全双工(逻辑1: 2.4V–5V 逻辑0: 0V–0.5V)

硬件框图如下,TTL用于两个MCU间通信

image

0 和 1 表示如下图:

image

CAN 总线 电平

逻辑1:-1.5V–0V 逻辑0:+1.5V–+3V)这里的电平指CAN_High、CAN_Low 两线间的电压差

硬件框图如下:

image

0 和 1 表示如下图:

image

总结

从单片机软件编程角度来说,RS232 、RS-485 最终结果都是转换为 TTL 电平方式与单片机通信( CAN 收发器把差分信号转化为 TTL –> CAN 控制器(MCU))。其目的都是提高通信质量,提高抗干扰能力。

TTL 、RS232 是逻辑电平信号。RS-485 、CAN 为差分信号

参考文档

  1. STM32通信串口RS232

  2. 带你认识RS232通讯

  3. stm32常见通信方式(TTL、RS232、RS485、CAN)总结

  4. RS-232详解

  5. 浅谈RS-485协议

  6. RS-485接口协议详解

posted @ 2022-10-19 18:10  ppqppl  阅读(2125)  评论(0编辑  收藏  举报