《使用DAC生成正弦波形》
1、说明
本示例分步说明如何生成正弦波形。
正弦波形也称作单频正弦波音,它是一种纯音或绝对音。在确定听觉系统的各种响应时,正弦音一般用作刺激源。
2、准备数字模式的正弦波形
要准备数字模式的波形,需要进行一些数学运算。这里的目标是产生正弦波的 10 个数字模式数据(采样),变化范围为 0 到 2*PI。
采样间隔为 (2*PI)/ ns (采样数)。
sin(x) 的结果值在 -1 到 1 之间,经过必要的重新校准后,可以生成 0 和 0xFFF 之间(对应电压范围为 0 V 到 3.3 V)的正向正弦波。
经过线性转换后,数字输入会转换为 0 到 VREF+ 之间的输出电压。
各 DAC 通道引脚的模拟输出电压通过以下公式确定:
因此,可通过以下公式得到模拟正弦波形 ySineAnalog
此表保存在存储器中,并由 DMA 传输,传输过程由触发 DAC 的相同定时器触发
3、修正正弦波频率
要修正正弦波信号的频率,需要设置定时器触发输出的频率。
所产生正弦波的频率为
因此,如果 TIMx_TRGO 为 1 MHz,则 DAC 正弦波的频率为 10 kHz。
注:要获得高质量的正弦波曲线,建议使用较高的采样数 ns。
《使用DAC实现音频波形播放器》
1、说明
此应用演示的目的是为 STM32 微控制器提供一种音频播放器解决方案,用于播放 .WAV 文件。
该过程经过优化,需要的外部组件数量最少,最终用户可以灵活选择自己的 .WAV 文件。STM32 中的音频文件通过 MicroSD 存储卡提供。
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() 函数来调用波形播放器演示,以下为相关流程图。
在本应用中,协同处理是必不可少的,这样可以同时实现从外部存储器读取波形和将波形写入 DAC 寄存器的过程。