RS485基础知识:

工作方式:差分信号
通信模式:半双工 单主多从
节点数:1发32收(有128,256,数量跟驱动芯片有关)
拓扑:    点对点(推荐),线性,总线型,不能使用星型或环型
特征阻抗:120Ω(需要并接120Ω终端电阻)
接收器输入阻抗:≥12KΩ
数据传输速度:最大10Mbps
最大传输距离:1200m
最大差动输出:±6V
最小差动输出:±1.5V
接收器灵敏度:±0.2V
共模电压范围:-7V~±12V
常用IC:SP3485 / MAX485

RS485硬件电路:

1、485基础电路

上图是最基本的RS485电路,R/D为低电平时,发送禁止,接收有效,R/D为高电平时,则发送有效,接收截止。上拉电阻R7和下拉电阻R8,用于保证无连接的SP485R芯片处于空闲状态,提供网络失效保护,提高RS485节点与网络的可靠性,R7,R8,R9这三个电阻,需要根据实际应用改变大小,特别是使用120欧或更小的终端电阻时,R9就不需要了,此时R7,R8使用680欧电阻。正常情况下,一般R7=R8=4.7K,R9不要。

图中钳位于6.8V的管V4,V5,V6,都是为了保护RS485总线的,避免受外界干扰,也可以选择集成的总线保护原件。另外图中的L1,L2,C1,C2为可选安装原件,用于提高电路的EMI性能.

2、带隔离的RS485电路

根本原理与基本电路的原理相似。使用DC-DC器件可以产生1组与微处理器电路完全隔离的电源输出,用于向RS485收发器提供+5V电源。电路中的光耦器件速率会影响RS485电路的通信速率。上图中选用了NEC的光耦PS2501,受其影响,该电路的通讯速率控制在19200bps下。

3、自收发电路1

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

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

发送:发送数据1时,TX为高电平时,三极管导通,DE为低电平,此时收发器处于接收状态,驱动器就变成了高阻态,也就是发送端与AB断开了,此时AB之间的电压就取决于AB的上下拉电阻了,A为高电平、B为低电平,也就成为了逻辑1了。

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

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

4、自收发电路设计2


电路的控制逻辑可通过UART信号波形特点,以及MAX485的收发控制真值表分析明白。


 
接收:在MCU不发送数据的时候,UART_485_TX为高电平,三极管导通,DE=RE =0,按照表1和表2,MX485为接收模式, 对于此MAX485来说,A,B为高阻态,信号由另一端来控制,RO可以正常输出接收到的数据。
发送:在MCU发送数据的时候,当UART_485_TX发送数据0的时候,三极管不导通,DE=RE=1,按照表1和表2,MAX485为发送模式,DI接GND,即DI=0,MAX485将数据0发送出去。当UART_485_TX发送数据1的时候,MAX485为接收模式,A,B为高阻态,但是外面有R10上拉(A=1),R11下拉(B=0),对于远端来说,会接收到A=1,B=0,即接收到差分数据1.
由此可知,此电路是可以正常的收发的。

注意事项:R10,R11在网上有很多电路上面是10K,4.7K,先前也试过,但是实测会发现是有问题的,或者通信速度特别慢。原因是因为上下拉电阻太小,在电平变化的时候,上升沿速度太慢,因此在速率较高时会有问题,改成1K拿示波器实测波形是更好的

接地问题:
RS485是差分传输的,所以很多工程师以为GND地线不重要,经常不接,甚至有些工程为了节约成本用两芯线或者用视频线来传输RS485信号。虽然如果不接地线,在很多场合是能正常工作的,但却埋下了很大的隐患,这有二个原因:
(1)共模干扰问题: RS-485接口采用差分方式传输信号,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但人们往往忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作。因为RS-485是总线方式的传输,总线上有很多的节点,当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。
(2)EMI电磁兼容性问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个信号地这个低阻的返回通道,信号中的共模部分就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。

软件设计:

1、RS485是一种常规的通信总线,它不能够做总线的自动仲裁,也就是不能够同时发送数据以避免总线竞争,所以整个系统的通信效率必然较低,数据冗余量较大,对于速度要求高的应用场所不适应用RS485总线。同时由于RS485总线上通常只有一台主机,所以这种总线方式是典型的集中—分散型控制系统

2、RS485仅定义的物理层传输,是rs232一个拓展,解决串口多机通信问题。所以rs485一般使用场景是,MCU的串口 <---> rs485 < ---> MCU串口;所以通信双方遵循的还是串口协议,比如波特率、数据位、检验位等等。

3、Rs485单主多从设计时,需要软件自定义地址以区分多从机,因为rs485芯片仅工作物理链路层并没有硬件地址区分多个主机,所以需要软件设计时加上地址以便区分不同从机。例如我们定义协议如下: 起始帧 地址帧 指令码 数据 数据长度 检验码;在这个自定义协议下,地址帧一般设置为1~32,我们每次发送和接收数据都带上自己的地址,对主机而言,接收到数据后解析地址,然后根据地址加以区分。

4、一般来说,rs485单主多从设计,很多时候采用的是 modbus协议, modbus协议是一个标准,方便不同485接口设备之间更好对接

RS485通信学习笔记相关推荐

  1. STM32 CAN总线通信学习笔记(一)

    STM32 CAN总线通信学习笔记(一) 一.CAN总线简介 CAN 是控制器局域网络(Controller Area Network, CAN)的简称.CAN采用数据块编码的方式,数据块根据帧的类型 ...

  2. CAN总线通信学习笔记

    CAN总线通信学习笔记 完整笔记链接:https://mubu.com/doc/67Rn6yaozhS CAN总线笔记目录 定义 底层原理 CAN信号传输 发送 接收 CAN总线结构.特点.分类 CA ...

  3. 基于STM32的CAN总线通信学习笔记

    转自:https://blog.csdn.net/ludaoyi88/article/details/53350077 基于STM32的CAN总线通信学习笔记 本文主要简单介绍CAN总线的相关概念,以 ...

  4. C#串口通信学习笔记

    因为参加一个小项目,需要对继电器进行串口控制,所以这两天学习了基本的串口编程.同事那边有JAVA的串口通信包,不过是从网上下载的,比较零乱,难以准确掌握串口通信的流程和内含.因此,个人通过学习网上大牛 ...

  5. 通信学习笔记--5G SA和NSA的技术要点和优劣对比

    以下的学习源自微信公众号:5G通信 5G网络架构的特性 5G网络架构分为 SA 和 NSA. SA即独立组网,是一套全新的5G网络,包括全新的基站和核心网. NSA即非独立组网,是使用现有的4G网络, ...

  6. linux一个进程通知另外一个进程,Linux进程通信学习笔记

    一.为什么需要进程通信 1)数据传输 一个进程需要把它的数据发送给另一个进程. 2)资源共享 多个进程之间共享同样的资源. 3)通知事件 一个进程向另外一个进程发送消息,通知它发生了某事件. 4)进程 ...

  7. Vue3 组件通信学习笔记

    一.父子组件之间通信 父子组件之间如何进行通信呢? 父组件传递给子组件:通过props属性: 子组件传递给父组件:通过$emit触发事件: 1.1 父组件传递给子组件 在开发中很常见的就是父子组件之间 ...

  8. STM32F767串口通信学习笔记

    STM32F767的串口使用,需要先开启串口时钟,再设置对应的IO模式,然后配置一下波特率,数据位长度,奇偶校验位信息就可以使用了. 基础知识  STM32F767IGT6 最多可提供 8 路串口,支 ...

  9. STM32F429IGT6 ETH—LwIP 以太网通信——学习笔记5(PHY:LAN8720A)

    LAN8720A是SMSC公司(以被Microchip公司收购)设计的一个体积小.功耗低.全能型10/100Mbps的以太网物理层收发器.他是针对消费类电子和企业应用而设计的.LAN8720A总共只有 ...

最新文章

  1. ASP.NET虚拟主机的重大安全隐患
  2. 基础篇:如何做一名专业的软件测试工程师
  3. think in java interview-高级开发人员面试宝典(三)
  4. phpstrom查看代码总行数_歪特内推浦发银行总行信息科技部
  5. [bzoj 2555]Substring
  6. *【CodeForces - 280C】Game on Tree(期望模型,期望的线性性)
  7. html5 datepicker使用方法,WdatePicker.js时间日期插件的使用方法
  8. shell命令行快捷键
  9. docker容器和宿主机时间不一致的问题
  10. Javascript面向对象编程与继承机制的设计思想(转)
  11. 苹果cms主动推送php,苹果cmsv10百度主动URL推送教程
  12. Hyperscan中的 NFA模型演化
  13. EBS系统打补丁(Patch)
  14. oracle11g ora12514,Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务...
  15. 基于微信小说平台小程序系统设计与实现 开题报告
  16. python浪漫告白源代码_python七夕浪漫表白源码
  17. CodeForces 319B 栈
  18. 服务器的主要防护手段有哪些
  19. Shell bash和sh区别
  20. CTFHub 工控组态分析 WP

热门文章

  1. 分享 60 个相见恨晚的神器工具
  2. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:07 规则式自然语言处理系统
  3. 5G 时代,优酷推出的帧享究竟是什么?
  4. MySql怎么附加数据库
  5. Android Studio 实现九宫格
  6. Mac使用Python接入东方财富量化接口Choice,调试与获取数据
  7. 20年广西赛题技能要求(服务器)
  8. 蓝桥杯 算法训练 印章
  9. 图片太大怎么压缩变小?
  10. Pascal版2048