单片机]RS-485半双工延时问题 http://www.chinafix.com.cn/thread-137012-1-1.html

RS485半双工切换为什么要加延时(非尾字不能发的问题)?

http://bbs.21ic.com/icview-317805-1-1.html


使用RS-485要注意的一个问题
为了让主机可以比较“从容”地切换到接收状态,从机接收到报文后不应该马上回答,而要至少等待双方约定的一个时间(比如2-5ms),这其实也应当是RS-485通信的一个参数。
使用全双工RS-422就没有这个问题。
有一些RS232到RS485的接口转换器需要用RTS信号来控制发送和接收状态切换,由于PC机很难像单片机那样精确地判断最后一位从移位寄存器发出去了(单片机对有的UART可以用中断,或者笨笨地定时+查询标志等方法),所以经常发生下位机收不好最后一个字节或者上位机收不好第一各字节的情况。有人采取上位机正常报文后面加无用字符(比如0xFF)的办法来凑合。
虽然现在有RS232到RS485的收发自动切换的转接器,但它内部其实是用单稳态触发器来实现的,为了适应不同波特率,切换仍然有一个延迟,波特率较高的时候下位机回答太快仍然有可能第一个字节出错。
所说的20ms只是一个举例,根据波特率等情况当然可以适当改变。但是,正规的RS485规约应该要规定这个帧间空闲间隔的(比如IEC870-5规定是33bit)。
实际通信的实时性主要由轮询的间隔以及超时的处理来决定,附加几毫秒的延时并不很重要。实际使用RS485通信最常遇到倒就是收发切换的问题,要想解决好,一是上位机从发到收的切换要尽量快(尽可能使用UART硬件自动控制RTS、发送完成中断或者精确定时),二是下位机要略位“宽容”一点。

RS485半双工切换为什么要加延时(非尾字不能发的问题)? [复制链接]   未结帖(20)

lzwujucong 当前离线
最后登录
2012-7-8
在线时间
4小时0分
注册时间
2011-2-21
阅读权限
10
精华
0
积分
6
帖子
2
本月在线
0小时0分
  • 串个门
  • 加好友
  • 打招呼
  • 发消息

lzwujucong

实习生

实习生, 积分 6, 距离下一级还需 44 积分
积分
6
帖子
2
本月在线
0小时0分

专家等级:

结帖率:0%

电梯直达

1#

lzwujucong 发表于 2012-3-19 18:47:30 | 只看该作者 | 倒序浏览 | 返回版面

0

在网上看到很多即时切换的原理图,这个需要硬件的支持,我现在在试RS485通讯,等待最后一个字发完后,切换成接收,这里必需要有2~5ms的延时时间才正确,按我的理解脚位设置低电频后应该已经退出总线了。这个延时到底是总线上的需要还是哪里的需要?

相关帖子

  • 延时的问题
  • 有关延时的问题
  • ucos中的延时问题
  • 延时电路的问题
  • 延时函数问题
  • 请高手帮忙解决延时问题
  • 延时程序问题
  • 延时函数好像有点问题
  • 双工通信问题
  • verilog非阻塞赋值的仿真/综合问题 -下

模块电源《常见故障分析》免费下载!——广州金升阳科技有限公司 在线观看泰克最新测试设备介绍     玩转C2000,抽取数码相机赢大奖!

分享0 收藏0 举报

sxiaoguang 当前离线
最后登录
2012-3-23
在线时间
6小时15分
注册时间
2007-3-22
阅读权限
20
精华
0
积分
890
帖子
281
本月在线
0小时0分
  • 串个门
  • 加好友
  • 打招呼
  • 发消息

sxiaoguang

初级技术员

初级技术员, 积分 890, 距离下一级还需 -790 积分
积分
890
帖子
281
本月在线
0小时0分

专家等级:

结帖率:0%

2#

sxiaoguang 发表于 2012-3-19 20:39:26 | 只看该作者 | 返回版面

检测停止位???

举报

lzwujucong 当前离线
最后登录
2012-7-8
在线时间
4小时0分
注册时间
2011-2-21
阅读权限
10
精华
0
积分
6
帖子
2
本月在线
0小时0分
  • 串个门
  • 加好友
  • 打招呼
  • 发消息

lzwujucong

实习生

实习生, 积分 6, 距离下一级还需 44 积分
积分
6
帖子
2
本月在线
0小时0分

专家等级:

结帖率:0%

3#

lzwujucong 发表于 2012-3-20 13:41:26 | 只看该作者 | 返回版面

可以确定停止位已经发送完成,软件控制收发切换的,必需有个时间延时,实际上测试如果不加切换延时会造成接收都是乱码,弄不明白为什么需要这个延时。

举报

sjnh 当前离线
最后登录
2013-2-26
在线时间
609小时40分
注册时间
2004-6-21
阅读权限
90
精华
0
积分
2351
帖子
388
本月在线
3小时30分
  • 串个门
  • 加好友
  • 打招呼
  • 发消息

sjnh

初级工程师

初级工程师, 积分 2351, 距离下一级还需 649 积分
积分
2351
帖子
388
本月在线
3小时30分

专家等级:

结帖率:100%

4#

sjnh 发表于 2012-3-21 13:23:47 | 只看该作者 | 返回版面

不用加延时,我一直这样用了10年了,没出现问题
你说的延时是不是这个原因:
如S3C44B0X没有移位完成中断,只有缓冲区空中断,产生中断时,还有一个字节的数据在移位寄存器中正在输出,所以要加延时判断是否完成输出,只有完成最后一个位后才能切换方向
而这个延时时间根据bps能计算出来

举报

chunyang 当前离线
最后登录
2013-2-26
在线时间
1905小时10分
注册时间
2002-11-26
阅读权限
150
精华
25
积分
139608
帖子
28442
本月在线
5小时0分
  • 串个门
  • 加好友
  • 打招呼
  • 发消息

chunyang

超级版主

积分
139608
帖子
28442
本月在线
5小时0分

专家等级:

结帖率:98%

5#

chunyang 发表于 2012-3-21 23:13:53 | 只看该作者 | 返回版面

最好加延时,因为485内电路切换本身需要时间,总线上的分布电容会延长这一时间,特别是对那些总线没有静态偏置或偏置量不足时的情况。
二姨家最好的广告位招租啦
有技术问题请在论坛里发帖,站内信、QQ、邮件等仅供业务或私人用途使用,不对技术问题单独解答。
欢迎访问 春阳频道

举报

sjnh 当前离线
最后登录
2013-2-26
在线时间
609小时40分
注册时间
2004-6-21
阅读权限
90
精华
0
积分
2351
帖子
388
本月在线
3小时30分
  • 串个门
  • 加好友
  • 打招呼
  • 发消息

sjnh

初级工程师

初级工程师, 积分 2351, 距离下一级还需 649 积分
积分
2351
帖子
388
本月在线
3小时30分

专家等级:

结帖率:100%

6#

sjnh 发表于 2012-3-22 09:07:24 | 只看该作者 | 返回版面

最好加延时,因为485内电路切换本身需要时间,总线上的分布电容会延长这一时间,特别是对那些总线没有静态偏置或偏置量不足时的情况。 chunyang 发表于 2012-3-21 23:13

你说的延时是接收设备接收完数据然后返回时加延时吧?这个是要加的
不然按你说的切换需要时间,如果再加延时不更慢了

举报

jeaper 当前离线
最后登录
2013-2-5
在线时间
45小时20分
注册时间
2008-8-29
阅读权限
50
精华
0
积分
338
帖子
108
本月在线
0小时15分
  • 串个门
  • 加好友
  • 打招呼
  • 发消息

jeaper

资深技术员

资深技术员, 积分 338, 距离下一级还需 162 积分
积分
338
帖子
108
本月在线
0小时15分

专家等级:

结帖率:100%

7#

jeaper 发表于 2012-3-30 13:03:35 | 只看该作者 | 返回版面

这个延时应该是由发送到接收状态切换时加的。因为485总线默认在接收状态,发送只是在需要的时候进行。

【RS-485收发切换】使用RS-485要注意的一个问题相关推荐

  1. RS485 硬件自收发切换的实现

    RS485抗噪音抗干扰能力强.传输距离远.支持多点通信,是工控行业首选串行接口.485规定的电气特性为2线,半双工多点通信.采用两线差分信号传输数据,具有抗共模干扰的能力.由于是半双工模式,因此通讯时 ...

  2. 海思3559 485收发

    根据原理图,控制485状态的是GPIO12_2管脚 查找Hi3559AV100_PINOUT_CN.xlxs文档,发现这个管脚功能是复用的, 需将其功能设为GPIO12_2 首先编译himm 调用hi ...

  3. 485通讯的校验和_232/485转CAN 智能协议转换器

    ▼更多精彩推荐,请关注我们▼ 一.产品概述 SG_CAN_Modbus是一款用于CAN-Bus现场总线与RS-232总线或RS-485总线之间数据转换的协议型转换器,支持标准Modbus  RTU协议 ...

  4. 串口232,485转以太网模块 串口232,485转以太网模块 TCP/IP 串口协议转换模块

    串口232,485转以太网模块 串口232,485转以太网模块 TCP/IP 串口协议转换模块                                                      ...

  5. CC1101魔幻的收发切换机制

    调试了好几天的CC1101收发切换,终于成功,记录一下. 切记,一切都要靠自己,其他人都不可靠,包括你看完我这篇博客,也还是要自己好好研究实验.(给技术支持打电话,人家只管硬件问题,软件自己搞~~没招 ...

  6. 本篇文章使用vue结合element-ui开发tab切换vue的不同组件,每一个tab切换的都是一个新的组件。

    本篇文章使用vue结合element-ui开发tab切换vue的不同组件,每一个tab切换的都是一个新的组件. 1.vue如何使用element-ui 上一篇文章已经分享了如何在vue中使用eleme ...

  7. dsp28335 sci中用fifo完成485收发通信_STM32学习笔记—CAN总线收发数据常见问题分析

    CAN,Controller Area Network(控制器局域网络),在汽车电子.工业控制领域的应用比较多,通常用于局域组网. 这是第9篇学习分享文章,<STM32学习笔记>之CAN总 ...

  8. 【RS码1】系统RS码编码原理及MATLAB实现(不使用MATLAB库函数)

    关注公号[逆向通信猿]更精彩!!! 基础知识 要想搞懂本节知识,需要先熟悉掌握以下前几篇博客 [多元域乘法]多项式乘法电路原理及MATLAB详解 [多元域除法]多项式除法电路原理及MATLAB详解 R ...

  9. c语言485通讯源程序,51单片机485通信实验C语言源代码实现

    #include #include sbit RS485=P3^7;   //定义485的使能脚 bit SendFlag; unsigned int ReData,SenData; /******* ...

最新文章

  1. 【干货】大数据和人工智能.pdf
  2. 写给第十七届,来自十六届的感想与建议
  3. php 怎么获取meta标签,php – 通过jQuery获取META描述
  4. require js define 函数
  5. C# Win32 API 应用
  6. 2022版全球及中国电梯行业投资建议与盈利价值分析报告
  7. cookie和session原理
  8. 微软100题第20题
  9. java指定存入arraylist值_Java高效打印出0000-9999之间所有的值存到arraylist集合中
  10. 汇编proto、proc、invoke伪指令与函数声明、函数定义、函数调用
  11. 博弈论分析题_博弈论习题及参考答案
  12. asterisk 服务器文档,用 Asterisk 搭建自己的免费 VoIP 服务器
  13. C#chart控件初始化
  14. 删除控制面板java无效图标_win7系统删除控制面板中无效的图标的操作方法
  15. 基于QT开发的线性代数初学者的矩阵计算器设计
  16. 无源微波器件--耦合线定向耦合器
  17. BUG处理:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buil
  18. PS图片转3D(PS与AE交互)
  19. Linux (redhat)封装虚拟机镜像
  20. Android Fragment 实现状态栏透明(沉浸式)

热门文章

  1. 关于电子资料和纸质资料的竞争
  2. H - Identity Card
  3. 夯实Java基础系列18:深入理解Java内部类及其实现原理
  4. 一文看懂Linux网络管理
  5. ADS2021学习笔记(一)
  6. android 打印 demo
  7. 有钱人的非主流与穷人的非主流!
  8. 中国信通院推出了一个“APP签名服务系统,可防篡改、可追溯、第三方认证“的初步了解
  9. 神船 K650D-i5 显卡驱动问题的一个记录
  10. 输入框显示表情图标-vue篇