打印

PWM输入捕获出现问题,还望各位大虾指教??

[复制链接]
3448|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lovelijing|  楼主 | 2011-5-23 14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
你好,我在做一个产品用到了ST的SWIM通信协议,因为要知道信号的低电平的长度,所以我用到STM32的PWM输入捕获来获得,但是由于SWIM协议通信速度很快,而我又用C编程写程序源码如下:
“ TIM4->CCER |= 0x0011;     //输入捕捉使能  CC1E=1  CC2E=1
    while(!(TIM4->SR&0x0002));  //等待捕捉结束
    dat[0] = TIM4->CCR1;
while(!(TIM4->SR&0x0002));  //等待捕捉结束
    dat[1] = TIM4->CCR1;”
    这样会有时捕获不到波形而导致程序死机,个人分析是由于信号速度发的太快,而STM32F103C8的主频有限(才72M)错过了一次捕获造成死机,请各位大虾帮忙分析分析,难道要换主控芯片?但是我看STlink也用到了这个协议,但是ST选的也是STM32F103C8这个芯片啊?
沙发
香水城| | 2011-5-24 10:54 | 只看该作者
如果认为速度不够,请尝试使用DMA传输捕获的数据。

使用特权

评论回复
板凳
airwill| | 2011-5-24 13:09 | 只看该作者
为什么不直接使用 PWM 捕获功能.
该模式是输入捕获模式的一个特例,除下列区别外,操作与输入捕获模式相同:
●  两个ICx信号被映射至同一个TIx输入。
●  这2个ICx信号为边沿有效,但是极性相反。
这样可以交给中断去完成了. 楼主不妨看一下定时器的 PWM 输入功能

使用特权

评论回复
地板
lovelijing|  楼主 | 2011-5-25 15:29 | 只看该作者
我用的就是PWM输入捕获功能啊,DMA传输会很快?

使用特权

评论回复
5
zhiyonghe| | 2011-5-25 17:30 | 只看该作者
DMA传输不经过“大脑”肯定比经过的快:lol

使用特权

评论回复
6
lovelijing|  楼主 | 2011-6-18 11:20 | 只看该作者
说明: MCU:STM32F103系列.使用TIMER4的CH2的PWM输入模式.使用CC2触发一次DMA传送,DMA传送中一次TIM4_CCR1中的值到指定的内存中.DMA为单次模式,指定完成一定数量的数据传送.
问题:
1.STM32F103系列TIMx_CCR1,TIMx_CCR2是16位寄存器;使用DMA传送TIMx_CCR1,TIMx_CCR2中值时,应该设置DMA传送几位数据,WORorHALF_WORDorBYTE?
2.用STM32F103的PWM输入模式+DMA测量PWM信号的占空比,这个方法是否可行?
3.在TIM4中断配置中应该比之前多配置些什么(之前我已用寄存器配置成功PWM输入捕获不过不是用DMA传输的)?

使用特权

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

本版积分规则

0

主题

21

帖子

2

粉丝