【嵌入式开发-RS-485】
嵌入式开发-RS-485
- ■ RS-485 连接方式
- ■ RS-485 半双工通讯
- ■ RS-485 的特点
- ■ UART硬流控
- ■ RS-485
- 1. 全双工、半双工接线
- 2. 拓扑结构
- 3. RS-485收发器
- 3.1 发送模式(TX)
- 3.2 接收模式(RX)
- 4. RS-485数据链路
- 5. RS-485常用电路
- 6. CH340芯片USB转RS485参考电路
■ RS-485 连接方式
■ RS-485 半双工通讯
一线定义为A
一线定义为B
RS-485传输方式:半双工通信、(逻辑1:+2V ~ +6V 逻辑0:-6V ~ -2V)这里的电平指AB 两线间的电压差。
■ RS-485 的特点
- 电气特性:逻辑“1”通常由两线间的电压差为+(2-6)V表示,而逻辑“0”由两线间的电压差为-(2-6)V表示。
- 传输速率:数据最高传输速率可达10Mbps。
- 抗干扰性:采用平衡驱动器和差分接收器的组合,增强了抗共模干扰能力。
- 传输距离:最大传输距离可达1200米。
- 多点通信:允许在总线上连接多达32个设备,实现多点通信。
■ UART硬流控
如果有RX,TX,CTS,RTS 四个信号,则多半是支持硬流控的UART;
RTS | CTS |
---|---|
RTS (Require ToSend,发送请求) : | 为输出信号,用于指示本设备准备好可接收;发送请求低电平有效,低电平说明本设备可以接收数据。 |
CTS (Clear ToSend,发送清除): | 为输入信号,有效时停止发送。 发送允许 用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。 |
编程思路
编号 | 说明 |
---|---|
1 | 模块与MCU之间的串口是用硬件流控CTS、RTS两个IO口进行发送接收的通知和控制。 |
2 | 这两个IO常态高位,置低触发。 |
3 | 当模块可以接收数据时,模块会置低本机RTS(MCU为CTS)信号通知MCU可以发送数据。 |
4 | 当MCU可以接收数据时,MCU要置低其RTS(模块为CTS)信号通知模块可以发送数据 |
■ RS-485
1. 全双工、半双工接线
DB9 | 输出信号 | RS-422全双工接线 | RS-485半双工接线 |
---|---|---|---|
1 | T/R+ | 发(A+) | RS-485(A+) |
2 | T/R- | 发(B-) | RS-485(B-) |
3 | RXD+ | 收(A+) | 空 |
4 | RXD- | 收(B-) | 空 |
5 | GND | 地线 | 地线 |
2. 拓扑结构
3. RS-485收发器
RO 一 接收器输出
RE 一 接收器输出使能(低电平有效)
DE — 驱动器输出使能(高电平有效)
DI 一 驱动器输入
3.1 发送模式(TX)
DE:发送器输出使能(高电平有效)
引脚DE为逻辑高时,差分输出A和B遵循数据输入DI 处的逻辑状态。
数据流向: MCU_TX -> DI -> 内部驱动器 -> A/B差分输出
3.2 接收模式(RX)
RE:接收器输出使能(低电平有效)
数据流向: A/B差分信号 -> 内部接收器 -> RO -> MCU_RX
4. RS-485数据链路
当DIR=0时,接收电路使能,发送电路禁止DE=0,对总线而言相当于高阻;
当DIR=1时,接收电路使能,发送电路禁止DE=1,对总线A/B信号取决于DI的信号。
5. RS-485常用电路
1)使能信号RE和DE可采用一个GPIO控制,节省资源,
GPIO25 输出高电平,RE=DE=0V, 进入接收模式;
GPIO25 输出低电平,RE=DE=3.3V,进入发送模式。
2)有一些电路中会在A上加上拉,B上加下拉电阻,
主要原因是:RS-485总线在idle状态,电平是不固定的,即电平在-200mV~+200mV之间,收发器可能输出高也可能输出低,UART在空闲时需要保持高电平的,如果此时收发器输出一个低电平,对UART来说是一个start bit,会导致通信异常,