本帖最后由 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中断和多机通讯的说明,以及部分代码
你说的静默模式能唤醒,是指多机通讯的唤醒方式么?一是idle唤醒,二是地址匹配唤醒,
我现在用的是方式二,地址匹配,
而我需要的是idle中断,这个和多机通讯是两个东西,目前不能组合着用。。。
一周热门 更多>