OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3430|回复: 13

请教下stm32的串口,idle中断 \ 多机通讯 能不能同时使用???标题搞长长长长长长长长长长长长长长长长长长

[复制链接]

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
发表于 2019-1-21 09:57:30 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 thinkabout4451 于 2019-1-21 09:57 编辑

需求是这样的,一主带8从,通讯的速率非常的高(使用f4单片机,6m的波特率、总线上主机几乎一直轮询),
所以如果用普通的串口中断肯定不行,因为从机就会一直不停的中断,基本也干不了别的事了。

所以现在一个比较好的想法,是idle中断+dma,然后使用stm32的多机通讯,使用地址匹配方式,
这样的话从机只需要响应和自己相关的数据,

昨天使用103的开发板+pc的串口助手简单测试下,简单测试先不加入dma:

1,单独测试多机通讯是没有问题的,地址匹配后,后面的数据都会收到,地址不匹配的话,
串口助手再发数据,stm32没反应,直到下次再收到匹配的地址。

2,单独测试idle中断也是没有问题的,连续的数码流的话,会触发一次idle中断。

3,把这两个整合起来测试就不行了,会收不到idle中断(如果这时也打开接收中断USART_IT_RXNE),那是可以响应rxne中断的。

从原理上来看,idle应该和多机通讯并不冲突才对。有没有大侠知道这个问题所在的。。下面的图是文档中的idle中断和多机通讯的说明,以及部分代码

1.png

2.png

3.png

4.png








最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
 楼主| 发表于 2019-1-21 09:57:31 | 显示全部楼层
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2019-1-21 09:57:31 | 显示全部楼层
本帖最后由 林光华ing 于 2019-1-22 09:00 编辑
thinkabout4451 发表于 2019-1-21 16:14
你说的静默模式能唤醒,是指多机通讯的唤醒方式么?一是idle唤醒,二是地址匹配唤醒,
我现在用的是方式 ...

我又看了一下手册,发现好像貌似大概真的不能同时使用地址检测与空闲中断。。。
回复

使用道具 举报

0

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
286
金钱
286
注册时间
2018-12-31
在线时间
12 小时
发表于 2019-1-21 10:05:16 | 显示全部楼层
我来顶一下吧!
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
 楼主| 发表于 2019-1-21 10:08:34 | 显示全部楼层

谢谢帮顶
回复

使用道具 举报

3

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2018-5-26
在线时间
106 小时
发表于 2019-1-21 10:50:32 | 显示全部楼层
楼主是232通讯还是485通讯?
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2015-3-2
在线时间
36 小时
发表于 2019-1-21 11:00:09 | 显示全部楼层
Idel中断的判断条件是在一个数据周期内没有新的数据到来,然后硬件触发idel中断。所以我觉得楼主可以在Host端,在每个不同的数据包发送之间加一个小小的延时,延时时间具体要根据波特率来定
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
 楼主| 发表于 2019-1-21 11:03:01 | 显示全部楼层
SJL128549 发表于 2019-1-21 10:50
楼主是232通讯还是485通讯?

测试先用的232,
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
 楼主| 发表于 2019-1-21 11:07:34 | 显示全部楼层
飞羽无痕 发表于 2019-1-21 11:00
Idel中断的判断条件是在一个数据周期内没有新的数据到来,然后硬件触发idel中断。所以我觉得楼主可以在Host ...

这个理解,单独测试idle也是没有问题的,我用串口助手每次其实就发送几个字节,
比如发送了5个字节,是可以收到5次rxne中断和1次idle中断,

问题是开了多机通讯后,发送5个字节,第一个是匹配的地址的话,也是可以收到
5次rxne中断的,但是没有idle中断了,

按分析,我发送完5个字节,不再发了,肯定会有idle电平的。。。。此时如果继续再
发送5个字节(不带地址的),依然可以收到5次rxne中断,因为之次的地址匹配过了,
设备处于wake状态了,除非下一次收到一个不匹配的地址会进入mute状态。

所有的分析都是通的,除了多机通讯后收不到idle
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2019-1-21 14:28:22 | 显示全部楼层
本帖最后由 林光华ing 于 2019-1-21 14:36 编辑

手册里不是说,idlei在静默模式能唤醒,但不会在SR寄存器置位吗。。。或许你的上位机发多了一些东西。。。
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
 楼主| 发表于 2019-1-21 16:12:52 | 显示全部楼层
林光华ing 发表于 2019-1-21 14:28
手册里不是说,idlei在静默模式能唤醒,但不会在SR寄存器置位吗。。。或许你的上位机发多了一些东西。。。

应该和发送多少无关吧,没注意到你说的不会在sr寄存器置位是啥意思,文档里有提到?
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
 楼主| 发表于 2019-1-21 16:14:50 | 显示全部楼层
林光华ing 发表于 2019-1-21 14:28
手册里不是说,idlei在静默模式能唤醒,但不会在SR寄存器置位吗。。。或许你的上位机发多了一些东西。。。

你说的静默模式能唤醒,是指多机通讯的唤醒方式么?一是idle唤醒,二是地址匹配唤醒,
我现在用的是方式二,地址匹配,

而我需要的是idle中断,这个和多机通讯是两个东西,目前不能组合着用。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-1-22 01:24:13 | 显示全部楼层
帮顶
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
 楼主| 发表于 2019-1-22 10:17:42 | 显示全部楼层
林光华ing 发表于 2019-1-22 08:35
我又看了一下手册,发现好像貌似大概真的不能同时使用地址检测与空闲中断。。。

哪一段,  能帮忙贴个图分析下不,我看了几遍,也没看到明确的说明。。。
只是看到说mute模式被唤醒后,可以触发rxne位,但也没说不能触发idle中断
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 04:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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