打印

求助stm32 32位高低电平输出

[复制链接]
5042|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jspp|  楼主 | 2011-4-8 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要产生100个32bit的高低电平,计时宽度存在两个U16 的数据msb[100],lsb[100],msb保存32bit的高16bit,lsb是低16bit,msb[0]lsb[0]构成第一个低电平,msb[1]lsb[1]构成第二个高电平。要求用DMA方式更新定时器的CCRx或者ARR。
看了AN2592,然后自己试了很多办法,但都不行。有没有好的办法思路阿,要求尽量少的软件干预,尽可能多的硬件自动完成
沙发
juzi311| | 2011-4-8 17:01 | 只看该作者
虽然不懂,支持一下。。。

使用特权

评论回复
板凳
re张风| | 2011-4-8 17:50 | 只看该作者
也没读懂什么意思!

使用特权

评论回复
地板
jspp|  楼主 | 2011-4-8 22:29 | 只看该作者
可能我说的不清楚:
-----            -----------                ----------                -------------
      |_____|            |________|           |_______|
          t1         t2          t3             t4           t5           .......

假设定时器的计时时钟周期是T,tn 的宽度可能是1*T ~ 2^32*T,宽度值保存在数组msb和lsb里,怎么用stm32的16位定时器级联以及DMA机制,在IO输出相应的高低电平波形?
另外,那个应用AN2592里后面的Output compare toggle mode example,实在搞不懂为啥要用一个 通道对TRC做输入捕捉,文档说是为了trigger slave timer,但是对slave timer设置从模式为trigger就可以了啊 ,TRGI就可以启动One Pulse的从定时器了,觉得例子多次一举。

使用特权

评论回复
5
jspp|  楼主 | 2011-4-8 22:34 | 只看该作者
我的这个要求和An2592的区别在,AN2592是一个高低电平是32bit,就是t1+t2的宽度在1~2^32,而且App note里面好像不能连续输出所要的32bit波形,timer2 (slave timer)自动停止后(one pulse mode)怎么重新启动(reset & start)timer3,文中没有说,而我测了几天也没找到很好的办法。

使用特权

评论回复
6
jspp|  楼主 | 2011-4-8 22:40 | 只看该作者
stm32 的定时器功能很多,有些机制很强大,但是实际用起来,总是觉得离完美感觉差那么一点,不爽。
如果TIMx_SMCR的 SMS: Slave mode selection中的reset mode 改为reset&start 或者trigger mode改为reset&start 就好了

使用特权

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

本版积分规则

31

主题

104

帖子

0

粉丝