一、DAC简介
DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与 ADC相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC把电压模拟信号转换成易于计算机存储、处理的数字编码,由计 算机处理完成后,再由 DAC输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器 件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。 STM32具有片上 DAC外设,它的分辨率可配置为 8位或 12位的数字输入信号,具有两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错检测能力,可外部触发。
二、建立CubeMX工程
选择芯片 定时器配置 管脚配置,对应外设c8t6本身设计好的PC13 LED灯 对应的GPIO设置(默认就好了) 设置堆栈大小
三、keil编写
工程源码链接(主:flash.h文件需要自己重新加入到路径中) 链接:https://pan.baidu.com/s/11Tn8TocHT8qithneDyKFIQ 提取码:pmvn 将事先准备好的flash.c 及flash.h加入到工程中 在main.c文件中添加部分代码 编译无误,进行调试
四、STlink调试说明
在电脑上下载好响应的ST-Link驱动,上电,可以看到STLink在电脑上显示出来了 可以说明ST-Link 驱动已经安装完成。接下来只需要在 mdk 工程里面配置一下 ST-Link即可。 回到Keil下,在魔法棒Option选项卡进行设置 首先是选择调试器,如果使用的是 ST-Link,在 Debug 选项卡中,请选择ST-Link Debugger,如果你使用的是 JLINK,那么需要选择J-LINK/J-Trace Cortex。 将程序下载到单片机中
在view下打开memory1窗口 打开watch1窗口 将变量FlashWBuff 和 FlashRBuff加入到 Watch1 在memory1中输入要观察的地址0x800c000 运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样 定义好的句子写到了地址0x0800c000中了
四、基于片内Flash的提示音播放程序
一、使用DAC输出周期2khz的正弦波
建议先用单音音频(比如2000Hz的正弦波)的wav数据进行实验,通过DAC或PCM音频模块能够基本还原出原始正弦波声音后,再用语言/音乐信号进行实验。 生成单音正弦波 文件—>新建—>音频文件 导出注意格式 用UltraEdit得到相关数据 用UltraEdit打开刚才保存的wav文件 右键选择区间选定我们要的部分然后去note++里面把每一行开头加上0x,结果部分如下图 这里借用DAC生成正弦波的例程代码 链接:https://pan.baidu.com/s/18zsQG5mZXbjafPuAJEUkMg 提取码:706i 将内容复制到keil文件对应的位置,在下图红框中进行替换。
二、使用DAC输出数字音频歌曲数据转换为模拟音频波形输出
选择一段音频 然后后续步骤基本都相同了就不在截图了(记得改采集率)
|