嵌入式:485 半双工通信延时
1、每一帧收发停止位(或第9位)的延时问题
在RS-485半双工通讯中,一般以单片机的TI,RI信号作收发切换控制信号,发送时,检测TI是否建立起来,当TI为高电平后关闭发送功能转为接收功能,接收时,检测RI是否建立起来,当RI为高电平后,接收完毕,又可以转为发送。因此,必须控制端RE*,DE的信号的有效脉宽应该大于发送或接收一帧信号的宽度。
从上面的时序图可知:单片机在串行口发送数据时,只要将8位数据位传送完毕,TI标志即建立,但此时应发送的第九位数据位(若发送地址帧时)和停止位尚未发出。如果在这时关闭发送控制,势必造成发送帧数据不完整。
接收数据时也同样如此,单片机在接收完8个数据位后就建立起RI信号,但此时还未接收到第九位数据位(若接收地址帧时)和停止位。所以,接收端必须延时大于2位数据位的时间(1位数据位时间=1/波特率),再作应答,否则会发生总线冲突。
总之,发送和接收控制信号应该足够宽,以保证完整地接收一帧数据,任意两个单机的发送控制信号在时间上完全分开,避免总线争端。
注:延时T秒的取值
(1) 传送地址帧时,T>2X(1/波特率),可以选取T=2.5X(1/波特率)。
(2) 传送数据帧时,T>1X(1/波特率),可以选取T=1.5X(1/波特率)。
2、实际的软件流程:
可看到软件流程并没有在 每一帧收发停止位(或第9位)后实现延时,而是在(数据包的)最后一个字节(帧)上延时。这样能保障数据帧的正确(完整性)和稳定性吗?
3、半双工总线收发切换延时问题
为了可靠的工作,在485总线状态切换时需要做适当延时,再进行数据的收发。具体的做法是在数据发送状态下,先将控制端置“1”,延时1ms左右的时间,再发送有效的数据,一包数据发送结束后再延时1ms后,将控制端置“0”。这样的处理会使总线在状态切换时,有一个稳定的工作过程。
参考链接
https://blog.csdn.net/lj9010/article/details/52317761
嵌入式:485 半双工通信延时相关推荐
- 嵌入式学习——串口通信小试
嵌入式学习--串口通信小试 目录 嵌入式学习--串口通信小试 1.了解串口协议和RS-232.485标准,以及RS-232.485电平与TTL电平的区别 1.1 什么是串口协议 1.2 RS-232标 ...
- c#串口通信(三)--半双工通信的数据接收
上文提到了如何简单发送和接收串口数据. 在实际操作中,对于半双工通信(一问一答),如果需要一次发送多个指令,用DataReceived事件判断是否接收完毕,再发送下一条数据,不是很好的选择. 个人采用 ...
- stm32---RS485半双工通信
典型的串口通信标准有 RS232 和 RS485,RS232 是全双工点对点的通信,而 RS485 是半双工通信(2 线制),可以一点对多点进行组网,而且 RS485 是用缆 线两端的电压差值来表示传 ...
- 什么是单工通信、半双工通信、全双工通信?3种通信方式的区别是什么?
串行通信中包括有3种数据传送方式,传送方式研究的是 对象 和方向性. 单工通信:单向传送,只能是一个方向传送. 比如:A传送到传送B,并且只能A传送给B. 全双工通信:双向传送,在某一时刻,双方可以同 ...
- 树莓派python网络通信_Python3使用Socket实现树莓派与计算机半双工通信,实现聊天功能...
项目中需要实现PC与树莓派通信完成控制,寻找一遍后,发现现例子大多比较简单,可以实现一次收发过程,第二次数据发送就会出现问题.观察发现少一个循环,无法保持联通状态,代码修改后可以简单的实现半双工通信, ...
- 单工通信/半双工通信/全双工通信,串行传输/并行传输,同步传输/异步传输的区别
学习通信的时候,这几个名词单工通信/半双工通信/全双工通信,串行传输/并行传输,同步传输/异步传输我一直都很迷,现在我总结一下,也是加深我的记忆了 1.按照信息在信道中的传输方向分为: a.单工通信: ...
- 进程间通讯 --- 管道(半双工通信)
管道: 一个进程输出数据到另一个进程数据输入的通道.(半双工通信:同一时间,只能一端读另一端写,因为只有一条信道) 有名管道(命令管道): 在磁盘上会存在一个管道文件标识,但管道文件不占用磁盘bloc ...
- 单工通信、半双工通信和全双工通信的区别
对于点对点之间的通信,按照消息传送的方向与时间关系,通信方式可分为单工通信.半双工通信及全双工通信三种. 一.单工通信 单工通信(Simplex Communication)是指消息只能单方向传输的工 ...
- 半双工通信和全双工通信的区别
半双工通信和全双工通信的区别 对于点对点之间的通信,按照消息传送的方向与时间关系,通信方式可分为单工通信.半双工通信及全双工通信三种. 单工通信 单工通信(Simplex Communication) ...
最新文章
- pip通过阿里源安装
- sql 分组统计_leetcode-sql面试题十七篇精讲合集
- 通过HTML5 Visibility API检测页面活动状态
- SSD Single shot detection 单发多框检测 实现 多尺度锚框 动手学深度学习v2
- 服务器组态文件己写保护,组态王常见问题集锦(一)
- freyja 将引入另外一项功能大幅提高服务器性能
- JavaScript数组方法slice()
- lol 8.21服务器维护,《LOL》8.16版本维护到几点 8月21日更新维护内容汇总
- WeX5 APP发布及版本升级注意事项
- 超有爱的并查集 6666
- vue在线预览excel
- 多屏互动之Windows与Mac下的非自带的远程桌面应用
- c语言gl函数,R语言:gl()函数
- kodu_Kodu教您的孩子直观地编程自己的视频游戏
- ffmpeg获取音频信息
- 华为杯第一届中国研究生网络安全创新大赛-Bit_QR
- Windows11 安装教程(ultraiso制作启动盘)
- # 7-3 二分法求多项式单根
- Java中使用jedis操作redis(使用maven)
- 题目:以下选项中关于DOM和SAX的说法错误的是()