我目前正在开发stmG474-re开发板,目标是使用dac1通道2通过高分辨率定时器输出频率为77khz的三角波形,但很难达到所需的更高频率77khz。
生成三角波形不是问题,我现在已经通过多种方法完成了此操作:
然而,使用这些方法中的每一种,我似乎都无法达到所需的高频。使用三角波形时,我的周期被限制为 72 us。这是我在示波器上观察到的情况。使用 DMA 超过约 500kHz 的频率会产生瓶颈,并且 DAC 无法足够快地更新,而是输出恒定值。
我不是使用cubeMX的专家,对嵌入式编程也很陌生,但如果有人能建议以这个频率输出三角波形的方法,那就太好了。 其他要点:
适用于 DAC 1 Out 2 pin PA6
所以我知道你没有费心去阅读文档。
如果你这样做了,你会发现DAC在输出到外部输出时只能花费1Msps。当你想要产生 500khz 时,这是远远不够的。下一个问题是:如何才能生成该频率的波形?
文档再次提供了帮助:当 DAC 输出在内部连接时,可能需要 15Msps。
什么外设最合适?当然是运算放大器。在电压中继器配置中将其配置为最快模式(高功率),并将引脚与其输出连接。
使用DMA传输数据到DMA。配置定时器以在需要时触发传输。将 DMA 配置为循环模式以连续生成。
计算示例:
CLOCK - 170MHZ
10 samples / period.
500khz = 5Msps.
170/5 = 34 ticks / transfer.
按如下方式配置任何计时器:
PRESCALLER = 0
RELOAD REGISTER = 33 (34 - 1)
工作完成