STM32之485通信

1、RS-232/422/485协议描述

    RS-232通讯的最大传输距离在不增加缓冲器的情况下可以达到15m左右,传输距离较短,所以RS-485与RS-422通讯方式就诞生了。

    RS-232、RS-422与RS-485最初都是由电子工业协会订制并发布的,RS-422是由RS-232发展过来的,主要是解决RS-232传输距离短和速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mbps,在速率低于100kbps时传输距离可以延长到4000英尺(大约1219米),并允许在一条平衡总线上连接到最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范。之后为了扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围。

    RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议。由于PC上的串行数据通讯是通过UART芯片来处理的,其通讯协议也规定了串行数据单元的格式(8-N-1格式):1位逻辑0的起始位,6/7/8位数据位,1位可选择的奇偶校验位,1/2位逻辑1的停止位。基于PC的RS-232、RS-422与RS-485标准均采用同样的通讯协议。

    RS-232、RS-422与RS-485通讯方式的区别见表1.1。

标准

RS-232

RS-422

RS-485

工作方式

单端

差分

差分

节点数

单对单

1发10收

1发32收

最大传输电缆长度

15m

1219m

1219m

最大传输速率

20kbps

10Mbps

10Mbps

最大驱动输出电压

+/-25V

-0.25V~+6V

-7V~+12V

发送器输出信号电平(负载最小值)

负载

+/-5V~+/-15V

±2.0V

±1.5V

发送器输出信号电平(空载最大值)

空载

+/-25V

±6V

±6V

发送器负载阻抗

3K~7K

100

54

摆率(最大值)

30V/μs

N/A

N/A

接收器输入电压范围

±15V

-10V~+10V

-7V~+12V

接收器输入门限

±3V

±200mV

±200mV

接收器输入电阻(Ω

3K~7K

4K(最小)

≥12K

发送器共模电压

--

-3V~+3V

-1V~+3V

接收器共模电压

--

-7V~+7V

-7V~+12V

2、RS-232标准

    RS-232被定义为一种在低速率、近距离串行通讯的单端标准。RS-232采取不平衡传输方式,即所谓的单端通讯。

    RS-232的电气标准:

(1)电平为逻辑“0”时:+3V~+15V;

    (2)电平为逻辑“1”时:-3V~-15V;

    未定义区:-3V~+3V。在此区域内的信号处理将由通讯接口的RS-232收发器决定。

3、RS-422/485标准

    RS-422/485标准与RS-232标准不一样,数据信号采样差分传输方式,也称平衡传输。

    由于RS-422/485标准在电气特性上非常相近,但是在传输方式上也有所区别。

(1)RS-485标准

电子工业协会(EIA)于1983年制定了 RS-485标准,之后经TIA修订后命名为TIA/EIA-485-A,习惯的称之为RS-485标准。

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

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

图1.1 RS-485发送器的示意图

通常情况下,发送发送器A、B之间的正电平在+2~+6V,是一个逻辑状态;负电平在-2~-6V,是另一个逻辑状态。另有一个信号地C。在RS-485器件中,一般还有一个“使能”控制信号。“使能”信号用于控制发送发送器与传输线的切断与连接,当“使能”端起作用时,发送发送器处于高阻状态,称作“第三态”,它是有别于逻辑“1”与“0”的第三种状态。

对于接收发送器,也作出与发送发送器相对的规定,收发端通过平衡双绞线将A-A、B-B对应相连,当在接收端A-B之间有大于+200mV的电平时,输出为正逻辑电平;小于 -200mV时,输出为负逻辑电平 。在接收发送器的接收平衡线上,电平范围通常在200mV至6V之间,具体见图1.2。

图1.2

    定义逻辑1(正逻辑电平)为B>A的状态,逻辑0(负逻辑电平)为A>B的状态,A、B之间的压差不小于200mV.

    RS-485标准的最大传输距离约为1219米,最大传输速率为10Mbps

    通常RS-485网络采用平衡双绞线作为传输媒体,平衡双绞线的长度与传输速率成反比,只有在20kbps速率以下,才可能使用规定最长的电缆长度,只有在很短的距离下才能获得最高速率传输,一般来说,15米长双绞线最大传输速率仅为1Mbps。

    注意:并不是所有的RS-485收发器都能够支持高达10Mbps的通讯速率,如果采用光电隔离方式,则通讯速率一般还会受到光电隔离器件响应速度的限制。

    RS-485网络采用直线拓扑结构,需要安装2个终端匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般取值为120Ω),在短距离或低波特率数据传输时可不需终端匹配电阻,即一般在300米以下、19200bps不需终端匹配电阻,终端匹配电阻安装在RS-485传输网络的两个端点,并联连接在A-B引脚之间。

    RS-485标准通常被用于作为一种相对经济、具有相同高噪声抑制、相对高的传输速率、传输距离远、宽共模范围的通信平台。

4、RS-485芯片引脚连接说明

(1)引脚说明

     

   

管脚

名称

描述

1

RO

接收器输出

2

RE

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

3

DE

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

4

DI

发送器输入

5

GND

地连接

6

A

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

7

B

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

8

VCC

正电源电压(+3.0V<VCC<+3.60V)

(2)连接简图

5、SP3485芯片功能分析

       发送器:SP3485的发送器输出是差分输出,满足RS-485和RS-422标准,空载时输出电压的大小为0V~+3.3V。即使在差分输出连接了54Ω负载的条件下,发送器仍可保证输出电压大于1.5V。SP3485有一根使能控制线(高电平有效)。DE上的逻辑高电平将使能发送器的差分输出。如果DE为低,则发送器输出呈现三态。

       接收器:SP3485接收器的输入是差分输入,输入灵敏度可低至±200mV。接收器的输入电阻通常为15KΩ(最小为12KΩ)。-7V~+12V的宽共模方式范围允许系统之间存在大的零电位偏位。SP3485的接收器有一个三态使能控制脚,如果RE为低,接收器使能,反之接收器禁止。

6、RS-485接口电路

       RS-485接口电路的主要功能是:将来自微处理器的发送信号TX通过“发送器”转换成通讯网络中的差分信号,也可以将通讯网络中的差分信号通过“接收器”转换成被微处理器接收的RX信号。任一时刻,RS-485收发器只能够工作在“接收”或“发送”两种模式之一,因此,必须为RS-485接口电路的附加保护措施也是必须重点考虑的环节。

       基本的RS-485电路:微处理器的标准串行接口通过RXD直接连接SP3485芯片的RO引脚,通过TXD直接连接SP3485芯片的DI引脚。

       由微处理器输出的 R/D 信号直接控制 SP485R 芯片的发送器/接收器使能:R/D 信号为“1”,则SP485R芯片的发送器有效,接收器禁止,此时微处理器可以向RS-485总线发送

数据字节;R/D 信号为“0”,则 SP485R 芯片的发送器禁止,接收器有效,此时微处理器

可以接收来自 RS-485 总线的数据字节。此电路中,任一时刻 SP485R 芯片中的“接收器”

和“发送器”只能够有1个处于工作状态。

连接至A引脚的上拉电阻R7、连接至B引脚的下拉电阻R8用于保证无连接的SP485R

芯片处于空闲状态,提供网络失效保护,以提高RS-485节点与网络的可靠性。

如果将 SP485R 连接至微处理器 80C51 芯片的 UART 串口,则 SP485R 芯片的 RO 引脚不需要上拉;否则,需要根据实际情况考虑是否在RO引脚增加1个大约10K的上拉电阻。

 

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32的RS485通信例程是指在STM32系列单片机上实现RS485通信功能的代码示例。RS485是一种常用的工业通信协议,它可以实现多个设备之间的点对点或者多点通信,并且具有抗干扰性能强的特点。 在STM32的开发环境下,编写RS485通信例程可以通过以下步骤实现: 1. 配置串口:首先需要配置STM32的串口模块,选择一个可用的串口通道,并初始化串口的参数,包括波特率、数据位、停止位、校验位等。 2. 配置GPIO:由于RS485通信需要控制发送和接收模式的切换,所以需要配置对应的GPIO引脚。通常需要一个控制发送和接收模式的引脚,以及一个用于接收和发送数据的引脚。 3. 编写发送函数:编写发送数据的函数,通过设置相应的寄存器,将待发送的数据写入串口的数据寄存器,并触发发送。 4. 编写接收函数:编写接收数据的函数,通过读取串口的数据寄存器,获取接收到的数据。 5. 实现半双工模式切换:由于RS485是一种半双工通信协议,在发送数据之前需要将串口模式切换到发送模式,发送完成后再切换回接收模式。 6. 实现多点通信:如果需要在多个设备之间进行通信,可以使用地址识别的方式,通过RS485总线上设备的地址来进行通信。 以上是实现RS485通信的基本步骤,根据具体的需求和硬件配置,可以在此基础上进行相应的功能扩展和优化。在编写完整的RS485通信例程之后,可以通过调试和测试来验证其正确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值