单片机]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总线默认在接收状态,发送只是在需要的时候进行。