找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5342|回复: 2
打印 上一主题 下一主题
收起左侧

stm32 idle中断处理

[复制链接]
跳转到指定楼层
楼主
ID:144503 发表于 2016-10-26 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请注意IDLE中断是只检测到空闲帧时产生的中断。

而空闲帧的定义是:被视为完全由“1"组成的一个完整的数据帧,后面跟着包含?数据的下一帧的开始位

关键是后面半句话,要求有下一帧的开始位,而你的情况恰巧没有下一帧的开始位(传输已经结束),当然不会有中断了。


举例:
如果连续发送一串字符串“123”会发生空闲中断吗?
不会,因为没有下一帧的开始位。
如果进了空闲中断不手动清零,会一直进入空闲中断。

所以用这个IDLEIE来结束DMA方式的接收,是合适的。唯一一个不合适的地方是:如果你发送一个字符串后,将DMA设置好接收传输方式,然后:对方没响应,你一个字符也收不到,这时候,IDLEIE是不会来的,必须有个总超时检测来结束DMA接收方式:因为IDLEIE中断必须要有字符串收到,然后有一个字符的时间没收下一个字符的起始位,才会发生。

另外,1个字符间隔的空闲就结束接收:是默认任何对方发送字节的间隔不大于1个字符间隔,是不符合Modbus-RTU协议的,RTU协议是3.5个字符时间,如果收到"a"后,停了2个字符时间,又收到"b",Modbus-RTU还是认为ab是同一帧的连续字符。

详解:http://www.51hei.com/bbs/dpj-39885-1.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:721186 发表于 2020-12-15 10:24 | 只看该作者
Modbus-RTU的情况,该如何使用这个空闲中断???
回复

使用道具 举报

板凳
ID:519089 发表于 2021-7-14 22:15 | 只看该作者
数据的下一帧的开始位?  这一句好像不需要吧??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表