打印

stm32f4 dac输出三角波频率设置?

[复制链接]
8931|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
KC_CEC|  楼主 | 2013-8-23 17:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

1、幅度的确定:
根据手册可以看出,DAC具有三角波输出功能,其幅度由寄存器MAMP决定。
也就是库中所使用的:DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_TriangleAmplitude_1023;
问题1:改变幅度值,周期也一样跟着变了。看了半天没有看出规律
2、周期的确定:
参考ST提供的历程,我也是用TIM6触发DAC,手册上说触发功能会延迟3个APB1周期,我的TIM6与ST历程中一样是42M。
它里面注释了一句:TIM6 Update event occurs each 37.5MHz/256 = 16.406 KHz   
问题2:这个37.5M是怎么算出来的?
3、工作方式确定:
由手册上翻译得到DAC_DHR寄存器为三角波的直流偏置,经过示波器也验证了这一点
也就是库中所使用的:DAC_SetChannel2Data(DAC_Align_12b_R,500);
问题3:手册说:计数值和DAC_DHR中的值之和放入DAC_DOR寄存器中,然后计数值自加与幅度设定值靠拢,然后重装。
但是我不管怎么调整TIM6计数值,周期最大就245HZ,后来直接用了ST历程加在开发板上,周期根本没有上面注释的16.406K,
这里不太理解。
沙发
乌月明星稀| | 2013-8-26 21:55 | 只看该作者
我测试过,在低幅值输出时,可以达到10K以上。另外,STM32你还可以倍频到128M。幅值越大,他的周期肯定越大啦。因为每个时钟节拍才步进1格,如果是满幅值输出时,要步进4095*2个定时器时钟节拍。明白没?

使用特权

评论回复
板凳
airwill| | 2013-8-27 09:10 | 只看该作者
我这里的三角波就是用这个功能生成的.
https://bbs.21ic.com/icview-433388-1-1.html
改变幅度值,周期也一样跟着变

使用特权

评论回复
地板
KC_CEC|  楼主 | 2013-8-28 12:11 | 只看该作者
乌月明星稀 发表于 2013-8-26 21:55
我测试过,在低幅值输出时,可以达到10K以上。另外,STM32你还可以倍频到128M。幅值越大,他的周期肯定越大 ...

不是太明白,我用TIM6做触发(APB1是TIM6的时钟源对于TIM6来说是84M),那么我将其分频84倍,也就是步进为1us,将其溢出时间就定位1us。
好了,现在波形幅值为1024,起始值为500,这样算的话从底到顶也应该是500us的样子,但是我用示波器测出来是2ms。

使用特权

评论回复
5
KC_CEC|  楼主 | 2013-8-28 14:29 | 只看该作者
现在基本上搞懂了,是我理解错误,现在总结如下:
1、DAC可以自己产生三角波,其频率是通过其触发定时器和DAC的输出幅度而确定的。
具体计算如下:
假设定时器溢出时间为1us,波形幅度定位1024 那么三角波的频率就为:1/(1us*1024*2)≈500HZ
所以要提高频率的方法要么是加快定时器溢出频率,要么减小幅度输出。
但这里有一个问题:理论上自动重装定时器是可以定为0的,也就是一个定时周期就溢出,但是实际测出至少为1,为0的话就没有输出了!
2、DAC_DHR寄存器是用了控制波形直流偏移的,不会改变周期。
那么结贴了!

使用特权

评论回复
6
王1123| | 2013-10-4 20:27 | 只看该作者
37.5M怎么算出来的啊?楼主

使用特权

评论回复
7
hustjitiejun| | 2013-10-10 17:12 | 只看该作者
不能太快吧,DA的转换时间限制了定时器的溢出时间,不能太短,1us可能是极限了

使用特权

评论回复
8
jizhendong1994| | 2017-1-11 21:55 | 只看该作者
楼主可否把生成三角波的代码发一下

使用特权

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

本版积分规则

20

主题

169

帖子

1

粉丝