(1)我用DMA+AD采集交流电压信号,请问怎么采集这个交流信号的频率,可可不可使用定时器2的输入捕获模式进行对频率的计数,怎么做,能给个例子吗?一直不能理解透定时器的各种模式
(2)如果DMA有了比较繁重的任务,我在用它进行对3个串口的数据进行接收,有没有丢失数据的可能?因为外界传来的数据不等CPU啊。
(3)关于通讯中的MODBUS的那3.5个字符间隔的实现问题。我看过有个帖子讨论过,您说可以使用UART自身的IDLE检测中断,即在RX线上超过一个字符传送时间而没有检测到启始位时产生的中断,再进一步判断是否有超时。请问发送和接受产生时是不是IDLE都有中断啊?我一直调不同,不知哪里的时钟还是其他设置原因,程序太大不便贴代码了,能给提供个例子吧?
这些问题与你的应用密切相关
简单回答如下
1)如要使用定时器的输入捕获模式,最好先把交流电压信号整流变为方波。
2)每个DMA周期大约需要10个左右CPU周期,依此你可以计算是否可能丢失数据。
3)目前没有例子。
你可以这样处理
1.你用定时器定一个3.5字符间隔时间,计算要根据你的波特率计算
2.当你接收第一个字符以后,定时器启动,并打开中断,并把你的初始值装载
3.接到第二个字符,重加载定时器初始值。
接第三个,也是重加载定时器初始值
等不在接收数据后,定时器溢出,进入定时器中断,说明数据已经接收完毕,在定时器中断里关闭定时器。
谢谢jinjing999,你说的很有道理。
您说的“3.接到第二个字符,重加载定时器初始值。”请问,重加载定时器初始值用不用关定时器,加载后再开定时器呢?
MODBUS的3.5字节时间没有那么严吧!
MODBUS的3.5字节时间没有那么严吧!我试过好多MODBUS设备,采用10MS间隔都可以正常通信,
有几路通道可以用输入捕获模式?
(1)我用DMA+AD采集交流电压信号,请问怎么采集这个交流信号的频率,可可不可使用定时器2的输入捕获模式进行对频率的计数
STM32F103RCT6有几路通道,手册上说有一个高级定时器TIM1,对应了五个引脚,是说最多可以测5路么?