熬夜请教香水城版主,请教3个问题

beck17   2008-11-13 00:53 楼主
    (1)我用DMA+AD采集交流电压信号,请问怎么采集这个交流信号的频率,可可不可使用定时器2的输入捕获模式进行对频率的计数,怎么做,能给个例子吗?一直不能理解透定时器的各种模式

    (2)如果DMA有了比较繁重的任务,我在用它进行对3个串口的数据进行接收,有没有丢失数据的可能?因为外界传来的数据不等CPU啊。

    (3)关于通讯中的MODBUS的那3.5个字符间隔的实现问题。我看过有个帖子讨论过,您说可以使用UART自身的IDLE检测中断,即在RX线上超过一个字符传送时间而没有检测到启始位时产生的中断,再进一步判断是否有超时。请问发送和接受产生时是不是IDLE都有中断啊?我一直调不同,不知哪里的时钟还是其他设置原因,程序太大不便贴代码了,能给提供个例子吧?

回复评论 (6)

这些问题与你的应用密切相关

简单回答如下

1)如要使用定时器的输入捕获模式,最好先把交流电压信号整流变为方波。

2)每个DMA周期大约需要10个左右CPU周期,依此你可以计算是否可能丢失数据。

3)目前没有例子。
点赞  2008-11-13 11:52

你可以这样处理

1.你用定时器定一个3.5字符间隔时间,计算要根据你的波特率计算
2.当你接收第一个字符以后,定时器启动,并打开中断,并把你的初始值装载
3.接到第二个字符,重加载定时器初始值。
接第三个,也是重加载定时器初始值

等不在接收数据后,定时器溢出,进入定时器中断,说明数据已经接收完毕,在定时器中断里关闭定时器。
点赞  2008-11-13 14:29

谢谢jinjing999,你说的很有道理。

您说的“3.接到第二个字符,重加载定时器初始值。”请问,重加载定时器初始值用不用关定时器,加载后再开定时器呢?
点赞  2008-11-15 23:37

MODBUS的3.5字节时间没有那么严吧!

                                 MODBUS的3.5字节时间没有那么严吧!我试过好多MODBUS设备,采用10MS间隔都可以正常通信,
点赞  2008-11-16 01:20

已经实现,那是相当的准确,10ms的轮询都没误码

                                  
点赞  2008-11-18 21:05

有几路通道可以用输入捕获模式?

(1)我用DMA+AD采集交流电压信号,请问怎么采集这个交流信号的频率,可可不可使用定时器2的输入捕获模式进行对频率的计数

STM32F103RCT6有几路通道,手册上说有一个高级定时器TIM1,对应了五个引脚,是说最多可以测5路么?

点赞  2008-12-14 15:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复