2012-08-02 63 views
1

我正在编程stm32f2xx的DAC外设。我有一个字节数组(声音)&我想生成采样率= 8K的信号。DAC信号发生器stm32

现在我的问题是: 如何指定采样率?

注: 我GOOGLE了很多。我只使用DMA获得摇摆波的产生和正弦波的产生。我不想使用DMA。

预先感谢帮助... 问候,

+1

考虑发布您的问题在http://electronics.stackexchange.com/ – simon 2012-08-02 14:43:18

回答

3

这是不切合实际的打出来的波形DAC的不使用DMA。您可以使用样本设置DMA,并将DAC设置为使用计时器作为触发器。然后你设置你的计时器以你想要的采样率触发。

1

我同意TJD的观点,即在没有DMA的情况下通常不这样做,但这并非不可能,特别是在低采样率下。

可以使用定时器设置触发每1/8000秒作为固定时基。从那里,中断程序需要将下一个采样加载到DAC中。采样率可以通过改变计时器的时基来改变。

与编写代码将正确的采样移入缓冲区相比,编写代码来配置DMA控制器的工作类似。但是,DMA方法更可靠,可能在采样速率上具有较少的抖动,并且释放内核以执行可能需要的其他代码。实际上,通过TIM/DMA/DAC设置,您可能会暂停内核或进入保持外设时钟运行的休眠模式。

0

是的,我也同意TJD。
使用DMA是有效的,以及释放CPU为其他任务[好]。
管理软件中的时序(带有繁忙循环的核心)[坏]不会产生好的结果。 (所以,使用计时器进行计时[良好])。
现在用于复制,必须奉献CPU做复制一个特定的时间间隔后(从繁忙的环或定时器超时)到DAC寄存器。[衰]

在端我建议,连接DMA和定时器,并在超时时,DMA将数据复制到DAC寄存器[良好]。这个解决方案看起来很难,但实际上安装起来更容易。
[注:写在pov的人试图理解/开始这样的事情]