当前位置: 首页 > news >正文

RS485和Modbus

UART协议中,空闲状态为高电平,也就是1,

 R25和R27,

 

485收发器

特性MAX485 (美信)SSP485 (国产替代)AZRS3080 (安格)
供电电压+5V+5V+3.3V ~ +5.5V
静态电流300μA (接收模式)120μA (接收模式)150μA (接收模式)
传输速率2.5Mbps10Mbps20Mbps
总线负载能力32 Unit Loads32 Unit Loads128 Unit Loads
ESD防护±15kV (HBM)±8kV (HBM)±25kV (HBM)
工作温度-40°C ~ +85°C-40°C ~ +85°C-40°C ~ +125°C
半/全双工半双工半双工半双工
故障保护开路/短路检测接收器开路保护总线开路/短路/空闲保护
封装SOIC-8, DIP-8SOP-8DFN-8, SOP-8
关键优势工业验证,高可靠性低成本,高速宽压、高温、超高ESD

 RO接单片机的RX引脚,当芯片的A-B>200mV时,芯片通过RO给单片机输出高电平;当芯片的A-B<-200mV时,芯片通过RO给单片机输出低电平。

DI接单片机的TX引脚

485电路中,一般接在RE和DE上的电平是同步变化的,作用就是切换485芯片的工作模式(接受模式/发送模式),DE、RE都接高时,处于发送模式,DI起作用;DE、RE都接低时,处于接收模式,RO起作用

 485芯片右侧的电路,上下拉电阻的右侧电路为防护电路;为什么要有上下拉电阻,空闲状态:通过上下拉电阻使得A-B>200mV,即对用逻辑1,即对应UART中的高电平,空闲状态

在A上加上拉,B上加下拉电阻,主要原因是:RS-485总线在空闲(idle)状态时,电平是不固定的,即电平在-200mV~+200mV之间,收发器可能输出高也可能输出低,UART在空闲时需要保持高电平的,如果此时收发器输出一个低电平,对UART来说是一个start bit,会导致通信异常。(所以RX需要加上上拉)其中:

                     ① A上加上拉,B上加下拉,接反数据通信也可能出错。

                     ② 某些收发器内部集成上下拉电阻,则外部不需要再添加。

RS-485标准定义信号阈值的上下限为±200mV。即当A-B>200mV时,总线状态应表示为“1”;当A-B<-200mV时,总线状态应表示为“0”。但当A-B在±200mV之间时,则总线状态为不确定,所以我们会在A、B线上面设上、下拉电阻,以尽量避免这种不确定状态。

上图中,TX、RX 引脚均需要上拉电阻,这一点特别重要。

接收:默认没有数据时,TX 为高电平,三极管Q1 导通,RE 为低电平使能,RO 收数据有效, RS485 为接收态。

发送:发送数据 1 时,TX 为高电平时,三极管导通,DE 为低电平(RE也为低电平),此时收发器处于接收状态,驱动器(也就是这个芯片,因为是在讨论此芯片的发送功能,所以也叫驱动器)就变成了高阻态(也就是说此芯片电阻无穷大),也就是发送端(芯片)与A\B断开了,此时 A\B 之间的电压就取决于 A\B 的上下拉电阻了,A 为高电平、B 为低电平,也就成为 RS485 的逻辑 1 了。

发送数据 0 时,TX 为低电平,三极管截止,DE 为高电平,驱动器使能,此时正好 DI 接地,也就是低电平,驱动器也就会驱动输出 B 为 1,A 为 0,也就是所谓的 RS485 的逻辑 0 了。

理解自收发的作用,关键是要理解 RE 和 DE 的作用,尤其是 DE 为 0 时,驱动器与 A\B 之间就是高阻态,也就是断开状态,而且 A/B 都要有上下拉电阻。然后就有了逻辑 0-1 间的切换。所以很巧妙,但这里也有一个很明显的 Bug,只适用于“半双工”,如果是全双工就不行了,因为 TX 为 1 时,接收使能,此时从机如果回复数据就乱了。

MAX485高阻态模式本质

当 DE=0(发送使能关闭)时,MAX485的驱动器输出级进入高阻态(High-Z),此时:

  1. 驱动器与A/B总线物理断开(等效开关断开)

  2. A/B线电平完全由外部电路决定

  3. 接收器是否工作取决于 RE引脚(RE=0时接收使能)

⚠️ 误区纠正:
TX引脚电平不影响总线!TX仅在DE=1时有效。


二、各状态真值表(核心逻辑)

控制引脚总线状态等效电路总线电平来源
DE=1驱动器激活内部MOSFET导通由TX信号通过反相器驱动
DE=0驱动器高阻态MOSFET关断→A/B悬空完全由外部上下拉电阻决定
RE=0接收器激活差分比较器工作可读取A-B电压差
RE=1接收器高阻态比较器关闭RO引脚无输出

 

http://www.lryc.cn/news/595609.html

相关文章:

  • 完整的 SquareStudio 注册登录功能实现方案:已经烧录到开发板正常使用
  • 感知机-梯度下降法
  • OpenCV中特征匹配算法GMS(Grid-based Motion Statistics)原理介绍和使用代码示例
  • 使用相机不同曝光时间测试灯光闪烁频率及Ai解释
  • Trae开发uni-app+Vue3+TS项目飘红踩坑
  • hot100回归复习(算法总结1-38)
  • GoLang教程005:switch分支
  • 零拷贝技术(Zero-Copy)
  • 【C语言进阶】结构体练习:通讯录
  • 暑期算法训练.5
  • stm32内存分析
  • OpenAI Codex CLI与 Google Gemini CLI 比较
  • 深度解析 HTML `loading` 属性:优化网页性能的秘密武器
  • 基于LangChain构建企业级AI智能体:从架构设计到行业落地实战
  • 深度学习 ---神经网络以及数据准备
  • ASP .NET Core 8高效集成Redis缓存实战
  • 【黑马SpringCloud微服务开发与实战】(四)微服务02
  • 前端之学习后端java小白(一)之SDKMAN及helloword
  • 如何用 LUKS 和 cryptsetup 为 Linux 配置加密
  • 【爬虫】05 - 爬虫攻防
  • 前后端分离项目进阶1---前端
  • 耐看点播网页入口 - 追最新电视剧,看热门电影|官网
  • c语言 进阶 动态内存管理
  • 3x3矩阵教程
  • 一次 POI 版本升级踩坑记录
  • 二维码扫描登录流程详解
  • 对理性决策模型的剖析及应用路径
  • Java学习 ------BIO模型
  • 【VASP】VASP 机器学习力场(MLFF)实战
  • C++ <继承> 详解