打印

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

[复制链接]
2585|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kbgyzp|  楼主 | 2008-11-13 00:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    (1)我用DMA+AD采集交流电压信号,请问怎么采集这个交流信号的频率,可可不可使用定时器2的输入捕获模式进行对频率的计数,怎么做,能给个例子吗?一直不能理解透定时器的各种模式

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

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

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

简单回答如下

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

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

3)目前没有例子。

使用特权

评论回复
板凳
jinjing999| | 2008-11-13 14:29 | 只看该作者

你可以这样处理

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

等不在接收数据后,定时器溢出,进入定时器中断,说明数据已经接收完毕,在定时器中断里关闭定时器。

使用特权

评论回复
地板
kbgyzp|  楼主 | 2008-11-15 23:37 | 只看该作者

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

您说的“3.接到第二个字符,重加载定时器初始值。”请问,重加载定时器初始值用不用关定时器,加载后再开定时器呢?

使用特权

评论回复
5
wqb202| | 2008-11-16 01:20 | 只看该作者

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

MODBUS的3.5字节时间没有那么严吧!我试过好多MODBUS设备,采用10MS间隔都可以正常通信,

使用特权

评论回复
6
kbgyzp|  楼主 | 2008-11-18 21:05 | 只看该作者

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

使用特权

评论回复
7
171795276| | 2008-12-14 15:08 | 只看该作者

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

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

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

473

帖子

1

粉丝