在stm板上以77khz的速率从DAC输出引脚输出三角波

问题描述 投票:0回答:1

我目前正在开发stmG474-re开发板,目标是使用dac1通道2通过高分辨率定时器输出频率为77khz的三角波形,但很难达到所需的更高频率77khz。

生成三角波形不是问题,我现在已经通过多种方法完成了此操作:

  • 来自 DAC 的内置 stm 三角波发生器,以 HRTIM 作为触发器
  • 将数组写入 DMA 并使用该数组(此方法更可取,因为我计划将来生成自定义波形
  • 使用定时器中断以所需的速率手动更新 DAC 输出,并在中断处理程序中计算 dac 值。

然而,使用这些方法中的每一种,我似乎都无法达到所需的高频。使用三角波形时,我的周期被限制为 72 us。这是我在示波器上观察到的情况。使用 DMA 超过约 500kHz 的频率会产生瓶颈,并且 DAC 无法足够快地更新,而是输出恒定值。

我不是使用cubeMX的专家,对嵌入式编程也很陌生,但如果有人能建议以这个频率输出三角波形的方法,那就太好了。 其他要点:

  • 使用锯齿波形发生器时,这似乎可以毫无问题地达到所需的频率。
  • HCLK 工作在 170MHz,PCLK1 也工作在 170MHz
  • 适用于 DAC 1 Out 2 pin PA6。
  • 这里的大部分工作都是通过cubeMX IDE进行配置完成的。
  • 有关三角波形发生器的更多信息:根据手册,内部三角计数器在每个触发事件后递增三个 dac_hclk 时钟周期
embedded stm32 dac stm32cubemx cubemx
1个回答
0
投票

适用于 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)

工作完成

© www.soinside.com 2019 - 2024. All rights reserved.