使用STM32微控制器系列中的DAC生成音频和波形之应用实例

发布时间:2024-05-17  

《使用DAC生成正弦波形》

1、说明

本示例分步说明如何生成正弦波形。

正弦波形也称作单频正弦波音,它是一种纯音或绝对音。在确定听觉系统的各种响应时,正弦音一般用作刺激源。

2、准备数字模式的正弦波形

要准备数字模式的波形,需要进行一些数学运算。这里的目标是产生正弦波的 10 个数字模式数据(采样),变化范围为 0 到 2*PI。

1e150cfc-6e25-11ed-8abf-dac502259ad0.png

采样间隔为 (2*PI)/ ns (采样数)。

sin(x) 的结果值在 -1 到 1 之间,经过必要的重新校准后,可以生成 0 和 0xFFF 之间(对应电压范围为 0 V 到 3.3 V)的正向正弦波。

1e3bcc8e-6e25-11ed-8abf-dac502259ad0.png

经过线性转换后,数字输入会转换为 0 到 VREF+ 之间的输出电压。

各 DAC 通道引脚的模拟输出电压通过以下公式确定:

1e543ee0-6e25-11ed-8abf-dac502259ad0.png

因此,可通过以下公式得到模拟正弦波形 ySineAnalog

1e78235a-6e25-11ed-8abf-dac502259ad0.png

此表保存在存储器中,并由 DMA 传输,传输过程由触发 DAC 的相同定时器触发

3、修正正弦波频率

要修正正弦波信号的频率,需要设置定时器触发输出的频率。

所产生正弦波的频率为

1ec5ffee-6e25-11ed-8abf-dac502259ad0.png

因此,如果 TIMx_TRGO 为 1 MHz,则 DAC 正弦波的频率为 10 kHz。

注:要获得高质量的正弦波曲线,建议使用较高的采样数 ns。

1ee13390-6e25-11ed-8abf-dac502259ad0.png

《使用DAC实现音频波形播放器》

1、说明

此应用演示的目的是为 STM32 微控制器提供一种音频播放器解决方案,用于播放 .WAV 文件。

该过程经过优化,需要的外部组件数量最少,最终用户可以灵活选择自己的 .WAV 文件。STM32 中的音频文件通过 MicroSD 存储卡提供。

1f118e1e-6e25-11ed-8abf-dac502259ad0.png

2、音频波形文件规范

本应用假设要播放的 .WAV 文件具有如下格式:

●音频格式:PCM(一种未经压缩的波形数据格式,其中的每个值表示采样时信号的振幅)。

●采样率:8000、11025、22050 或 44100 Hz

●每次采样的位数:8 位(音频采样数据值的范围为 [0-255])。

●通道数:1(单声道)

3、.WAV 文件格式

.WAV 文件格式是存储多媒体文件使用的资源交换文件格式 (RIFF) 规范中的一种。RIFF 文件以一个文件头开始,然后是一系列的数据块。.WAV 文件通常就是一个 RIFF 文件,内含一个“WAVE”数据块,该数据块由以下两个子数据块组成:

1.指定数据格式的 fmt 子数据块

2.包含实际采样数据的 data 子数据块

WAVE 文件格式的开始是 RIFF 头:它指示文件长度。然后,fmt 块描述采样格式,其中包含如下信息:波形音频的格式:(PCM/...),通道数(单声道/立体声),采样率(每秒的采样数:例如,22050)以及采样数据大小(例如,8 位 /16 位)。

最后,数据块包含采样数据。

3、实现音频波形播放器

音频波形播放器的应用以 SPI、DMA、TIM6 和 DAC 外设为基础。

在启动时,此应用首先使用 SPI 与 DOSFS 文件系统的 MicroSD 卡建立连接,解析卡中的内容,并在 USER 文件夹中查找可用的 .wav 文件。找到有效的 .wav 文件后,会通过 SPI 读回,然后使用 CPU 将该数据传输到位于 RAM 内的缓冲区阵列。DMA 用于将数据从 RAM 传输到 DAC 外设。TIM6 用于触发 DAC,将音频数字数据转换为模拟波形。

在播放音频数据之前,会对 WAV 文件头进行解析,以便确定数据的采样率及其长度。

使用采样数据(.WAV 文件中包含的数据)来更新 DAC 输出中的值,借此完成重现音频的任务。该数据以 8 位的形式进行编码(值的范围为 0 到 255)。

DAC 通道 1 由 TIM6 定期触发,触发间隔由 .WAV 文件头的采样率指定。

.WAV 文件从使用 DosFS 文件系统的 MicroSD 存储器中读取。

在演示代码中,处理波形播放器演示的编码文件为:

waveplayer.c

waveplayer.h

使用 WavePlayerMenu_Start() 函数来调用波形播放器演示,以下为相关流程图。

1f40bd42-6e25-11ed-8abf-dac502259ad0.png

在本应用中,协同处理是必不可少的,这样可以同时实现从外部存储器读取波形和将波形写入 DAC 寄存器的过程。

1f78a270-6e25-11ed-8abf-dac502259ad0.png


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>