RS-485通讯协议

来源:45. RS-485通讯实验 --- 野火STM32库开发实战指南------基于野火霸天虎开发板 文档

1. RS-485通讯协议简介

与CAN类似,RS-485是一种工业控制环境中常用的通讯协议,它具有抗干扰能力强、传输距离远的特点。RS-485通讯协议由RS-232协议改进而来, 协议层不变,只是改进了物理层,因而保留了串口通讯协议应用简单的特点。

2. RS-485的物理层

从《CAN---通讯实验》章节中了解到,差分信号线具有很强的干扰能力,特别适合应用于电磁环境复杂的工业控制环境中, RS-485协议主要是把RS-232的信号改进成差分信号,从而大大提高了抗干扰特性, 它的通讯网络示意图见图 RS-485通讯网络示意图

对比CAN通讯网络,可发现它们的网络结构组成是类似的,每个节点都是由一个通讯控制器和一个收发器组成,在RS-485通讯网络中, 节点中的串口控制器使用RX与TX信号线连接到收发器上,而收发器通过差分线连接到网络总线,串口控制器与收发器之间一般使用TTL信号传输, 收发器与总线则使用差分信号来传输。发送数据时,串口控制器的TX信号经过收发器转换成差分信号传输到总线上,而接收数据时, 收发器把总线上的差分信号转化成TTL信号通过RX引脚传输到串口控制器中。

RS-485通讯网络的最大传输距离可达1200米,总线上可挂载128个通讯节点,而由于RS-485网络只有一对差分信号线,它使用差分信号来表达逻辑, 当AB两线间的电压差为-6V~-2V时表示逻辑1,当电压差为+2V~+6V表示逻辑0,在同一时刻只能表达一个信号,所以它的通讯是半双工形式的, 它与RS-232通讯协议的特性对比见图 标准对比

RS-485与RS-232的差异只体现在物理层上,它们的协议层是相同的,也是使用串口数据包的形式传输数据。而由于RS-485具有强大的组网功能, 人们在基础协议之上还制定了MODBUS协议,被广泛应用在工业控制网络中。此处说的基础协议是指前面串口章节中讲解的, 仅封装了基本数据包格式的协议(基于数据位),而MODBUS协议是使用基本数据包组合成通讯帧格式的高层应用协议(基于数据包或字节)。 感兴趣的读者可查找MODBUS协议的相关资料了解。

由于RS-485与RS-232的协议层没有区别,进行通讯时,我们同样是使用STM32的USART外设作为通讯节点中的串口控制器, 再外接一个RS-485收发器芯片把USART外设的TTL电平信号转化成RS-485的差分信号即可。

3. RS-485---双机通讯实验

本小节演示如何使用STM32的USART控制器与MAX485收发器,在两个设备之间使用RS-485协议进行通讯,本实验中使用了两个实验板, 无法像CAN实验那样使用回环测试(把STM32 USART外设的TXD引脚使用杜邦线连接到RXD引脚可进行自收发测试, 不过这样的通讯不经过RS-485收发器,跟普通TTL串口实验没有区别),本教程主要以"USART---485通讯"工程进行讲解。

3.1. 硬件设计

V1


双机通讯实验硬件连接图_ 中的是两个实验板的硬件连接。 在单个实验板中,作为串口控制器的STM32从USART外设引出TX和RX两个引脚与RS-485收发器MAX485相连, 收发器使用它的A和B引脚连接到RS-485总线网络中。为了方便使用,我们每个实验板引出的A和B之间都连接了1个120欧的电阻作为RS-485总线的端电阻, 所以要注意如果您要把实验板作为一个普通节点连接到现有的RS-485总线时,是不应添加该电阻的!

由于485只能以半双工的形式工作,所以需要切换状态,MAX485芯片中有"RE"和"DE"两个引脚,用于控制485芯片的收发工作状态的,当RE引脚为低电平时,485芯片处于接收状态,当DE引脚为高电平时芯片处于发送状态。实验板中使用了STM32的PC0直接连接到这两个引脚上,所以通过控制PC0的输出 电平即可控制485的收发状态,在本开发板中,PC0引脚与摄像头使用的引脚共用了,所以使用485时不要同时驱动摄像头。

还要注意的是,为防止干扰,平时我们默认是不给485收发器供电的,使用485的时候一定要把485接线端子旁边的"C/4-5V"排针使用跳线帽与"5V"排针连接起来进行供电;而又由于实验板的RS-232与RS-485通讯实验都使用STM32的同一个USART外设及收发引脚,实验时注意必须要把STM32的 "PA2引脚"与MAX485的"485_D"及"PA3"与"485_R"使用跳线帽连接起来(这些信号都在485接线端子旁边的排针上)。

要实现通讯,我们还要使用导线把实验板引出的A和B两条总线连接起来,才能构成完整的网络。实验板之间A与A连接,B与B连接即可。

相关推荐
demodeom25 分钟前
Win11 + RTX 5080 本地 Coding 模型测试笔记(已弃坑)
笔记
peijiping1 小时前
Agent 工具执行:并行(parallel_tool_calls)和后台(run_in_background)到底有什么区别? (学习笔记)
笔记·学习·ai agent·claude code
Oll Correct1 小时前
Adobe illustrator 案例四:吃豆人 (Pac-Man)图标绘制
笔记·ui·adobe·illustrator
LuminousCPP1 小时前
单链表专题(四)-刷题复盘篇-LeetCode 138 随机链表复制|原地拷贝法突破复杂指针操作
数据结构·笔记·算法·leetcode·链表
萌新小白YXY2 小时前
SAE J1587/SAE J1708 协议笔记
笔记·单片机·嵌入式硬件
IT古董2 小时前
【MES学习笔记系列】MES 推荐书籍与资源
笔记·学习
一米阳光86612 小时前
软考(中级)软件设计师核心笔记(9)算法——时间复杂度与空间复杂度、查找算法、排序算法
笔记·算法·职场发展·软考·软件设计师·中级职称
米饭不加菜2 小时前
常用基本求导公式与法则(超详细推导版——上)
经验分享·笔记
恒锐丰科技韩生2 小时前
率能 SS6635E|3.0~30V 直流双向 H 桥电机驱动 SOP8 玩具电子锁机器人分享
嵌入式硬件·硬件工程
恒锐丰科技林技术员2 小时前
高集成双通道 H 桥驱动芯片 SS6850H:低压直流电机驱动优选方案
嵌入式硬件·硬件工程