怎样使stm32f4内部产生正弦波驱动wm8978发出声音

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样使stm32f4内部产生正弦波驱动wm8978发出声音相关的知识,希望对你有一定的参考价值。

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。
STM32的定时器除了TIM6和7。其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出!这里我们仅利用TIM3的CH2产生一路PWM输出。
要使STM32的通用定时器TIMx产生PWM输出,我们会用到3个寄存器,来控制PWM的。这三个寄存器分别是:捕获/比较模式寄存器(TIMx_CCMR1/2)、捕获/比较使能寄存器(TIMx_CCER)、捕获/比较寄存器(TIMx_CCR1~4)。(注意,还有个TIMx的ARR寄存器是用来控制pwm的输出频率)

首先是捕获/比较模式寄存器(TIMx_CCMR1/2),该寄存器总共有2个,TIMx _CCMR1和TIMx _CCMR2。TIMx_CCMR1控制CH1和2,而TIMx_CCMR2控制CH3和4。
其次是捕获/比较使能寄存器(TIMx_CCER),该寄存器控制着各个输入输出通道的开关。
最后是捕获/比较寄存器(TIMx_CCR1~4),该寄存器总共有4个,对应4个输通道CH1~4。4个寄存器都差不多,说的简单一点,这个寄存器就是用来设置pwm的占空比的。
参考技术A 内部,用PWM调制。 参考技术B 用运放做吧

用FPGA产生正弦波

我需要用FPGA产生正弦波,具体要求:
1、正弦波频率5M;
2、峰峰值1-2V可调;
3、输出驱动电流1A。
请问各位大神,选用什么样的DA,以及什么样的放大器可以达到上述要求呢?

1、正弦波的产生可以用DDS或CORDIC算法来实现。
2、幅度的调节可以在DA外用模拟放大器来实现,这比数字实现的失真更小
3、没有任何一款DA能够输出这么大的电流。放大电路之后再加一级功率放大器来实现吧追问

你说的都对,问题是,我以前没有做过,不知道选用什么样的放大器,能给个推荐吗?

追答

这个需要用分立元件来做哦,可以参考一本日本**写的书,叫《晶体管电路设计》,有上下两册,上册是BJT管的,下册是FET管的,里面的电路很实用

参考技术A 使用DDS技术啊。追问

FPGA里面的我已经做好了,现在问题是外面的放大器怎么选

追答

就是放大滤波电路撒。你查哈相关的就可以知道了。

参考技术B 驱动要1A,这个也太大了吧……追问

老师给的指标,没多问

以上是关于怎样使stm32f4内部产生正弦波驱动wm8978发出声音的主要内容,如果未能解决你的问题,请参考以下文章

Audio基于STM32 I2S移植WM8978 Audio Codec驱动

STM32F4xx系列_独立看门口配置

stm32f4单片机怎么读取ps2键盘的按键信息

stm32f4中有5个最重要的时钟源,分别是哪5个

STM32F4 UART HAL 驱动程序

STM32F4 UART HAL驱动程序'将字符串保存在变量缓冲区中'