音频数据的Flash读取与DAC播放
原理介绍
flash
在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写
好应用程序后,使用下载器把编译后的代码文件烧录到该内部 FLASH 中,由于 FLASH 存
储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部 FLASH 中加载代码并
运行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uQbyBtmA-1640943853238)(音频数据的Flash读取与DAC播放/image-20211231121500865.png)]](https://img-blog.csdnimg.cn/2dffec8c7a34496caeb4cad966bdd688.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k7k4N7K6-1640943853239)(音频数据的Flash读取与DAC播放/image-20211231122753889.png)]](https://img-blog.csdnimg.cn/e5876f2c05124dee90dea715662c1e7f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
DAC
DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对
应的模拟电压输出,它的功能与 ADC 相反。在常见的数字信号系统中,大部分传感器信号
被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计
算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器
件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
STM32 具有片上 DAC 外设,它的分辨率可配置为 8 位或 12 位的数字输入信号,具有
两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错
检测能力,可外部触发。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ubSaq2Pg-1640943853240)(音频数据的Flash读取与DAC播放/image-20211231122911381.png)]](https://img-blog.csdnimg.cn/8c8d4a6d173f40d1a414845e9f132488.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
flash读取
配置cubmax
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFvEsDvC-1640943853240)(音频数据的Flash读取与DAC播放/image-20211231123718251.png)]](https://img-blog.csdnimg.cn/b90df032e2fe46bfb113dc8f4bca92fb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SwnqXoUU-1640943853241)(音频数据的Flash读取与DAC播放/image-20211231123754170.png)]](https://img-blog.csdnimg.cn/fc66b5a0e1444e93bdf50ce3cdb0928a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAUkwPxI-1640943853241)(音频数据的Flash读取与DAC播放/image-20211231123832742.png)]](https://img-blog.csdnimg.cn/a97b1239833441529907d5a676945013.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J8arRi0R-1640943853242)(音频数据的Flash读取与DAC播放/image-20211231124141131.png)]](https://img-blog.csdnimg.cn/43676e6c053848b096e7f93d442d86d1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
工程代码修改
将falsh.c和falsh.h文件加入工程中
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RVW9QpMD-1640943853242)(音频数据的Flash读取与DAC播放/image-20211231135105940.png)]](https://img-blog.csdnimg.cn/751feb640d074257a2ffc1306ef07a43.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_15,color_FFFFFF,t_70,g_se,x_16)
在main.c中添加代码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uHYCiZcm-1640943853242)(音频数据的Flash读取与DAC播放/image-20211231134834842.png)]](https://img-blog.csdnimg.cn/38a2ff94f0ca4f32ae80cc2d4032796d.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4lordqVD-1640943853243)(音频数据的Flash读取与DAC播放/image-20211231140222818.png)]](https://img-blog.csdnimg.cn/cc773c71f9494fbb8d2262d430528968.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAFSlgSa-1640943853243)(音频数据的Flash读取与DAC播放/image-20211231140249032.png)]](https://img-blog.csdnimg.cn/87cb3942116947209c7c12c2abd21be1.png)
stlink调试
ST-LINK | STM32F103 |
---|
SWCLK/TCK | SWCLK/TCK | SWDIO/TMS | SWDIO/TMS | GND | GND | VCC | VCC |
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KFPGFC2T-1640943853243)(音频数据的Flash读取与DAC播放/image-20211231145712603.png)]](https://img-blog.csdnimg.cn/b3925a3b3e26481eb3bc9e9f5fab2423.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j8rbCFgX-1640943853244)(音频数据的Flash读取与DAC播放/image-20211231150125830.png)]](https://img-blog.csdnimg.cn/edd034c820154ef485bf8980711a9f5f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
若IDCODE显示出来,连接成功
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BPT8dgbH-1640943853244)(音频数据的Flash读取与DAC播放/image-20211231145746754.png)]](https://img-blog.csdnimg.cn/102dac2aa8d4499dab902bc0d123a4f4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
点击load
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OUK9icoH-1640943853244)(音频数据的Flash读取与DAC播放/image-20211231153550666.png)]](https://img-blog.csdnimg.cn/d4f51a4310b04eaea16262f33d814329.png)
完成烧录
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ipQMY4iE-1640943853245)(音频数据的Flash读取与DAC播放/image-20211231153513482.png)]](https://img-blog.csdnimg.cn/042e969466ff4a8787c1c168cc329f07.png)
点击调试
添加memory1、watch1和watch2查看变量变化情况
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rbaJskEr-1640943853245)(音频数据的Flash读取与DAC播放/image-20211231160445871.png)]](https://img-blog.csdnimg.cn/8116725b2d15458eba341b0a1121f4b2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8BOsIH8-1640943853245)(音频数据的Flash读取与DAC播放/image-20211231161422383.png)]](https://img-blog.csdnimg.cn/d0c6610656454af7b28e15882d9b3231.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
点击全速运行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1cPp08qr-1640943853246)(音频数据的Flash读取与DAC播放/image-20211231160542407.png)]](https://img-blog.csdnimg.cn/5c542848e8c34bbe97c891e7410e5343.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MmUi26dk-1640943853246)(音频数据的Flash读取与DAC播放/image-20211231161403070.png)]](https://img-blog.csdnimg.cn/9ca5570d1e074da499100a5e330f1f04.png)
看出内容一样
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nEXtXAQ5-1640943853246)(音频数据的Flash读取与DAC播放/image-20211231155834997.png)]](https://img-blog.csdnimg.cn/3b96d0d5dc97415bb6dfb10827454b44.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CmcfyvkC-1640943853246)(音频数据的Flash读取与DAC播放/image-20211231155847231.png)]](https://img-blog.csdnimg.cn/1a1e49e4777c49dd9984b0b9814649e2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
基于 Flash 的提示音 DAC 播放
使用 DAC 产生 2khz 周期的正弦波输出
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-46ZlnRUc-1640943853247)(音频数据的Flash读取与DAC播放/image-20211231163154461.png)]](https://img-blog.csdnimg.cn/ea6c29e36f284f05ae07ba9cf7bb6962.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
修改参数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F13MX1qC-1640943853247)(音频数据的Flash读取与DAC播放/image-20211231163321018.png)]](https://img-blog.csdnimg.cn/e7a99ea2239e4e8f8db0b08ac120c9c1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_17,color_FFFFFF,t_70,g_se,x_16)
点击效果->生成基本音色
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q6uGsgWQ-1640943853247)(音频数据的Flash读取与DAC播放/image-20211231163747968.png)]](https://img-blog.csdnimg.cn/f97d9e65ac5644fcb0cb94665f1324c7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
修改参数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zs0xfK6Y-1640943853247)(音频数据的Flash读取与DAC播放/image-20211231163939493.png)]](https://img-blog.csdnimg.cn/39571e5084994ad7b423eecf24d8d8d7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
点击如下,输出文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLjtM5UD-1640943853248)(音频数据的Flash读取与DAC播放/image-20211231164009000.png)]](https://img-blog.csdnimg.cn/b8d6873636094195a037d661073a5d96.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
点开UltraEdit ,打开刚才au输出的wav文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBHLBYnz-1640943853248)(音频数据的Flash读取与DAC播放/image-20211231164325246.png)]](https://img-blog.csdnimg.cn/3ca43806ce2841abad9b8c509b565b23.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
点击Ctrl+a 全选,鼠标右键,16进制复制选定视图,将其复制到新的文件下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9DLFlg8-1640943853248)(音频数据的Flash读取与DAC播放/image-20211231165646926.png)]](https://img-blog.csdnimg.cn/cd9fded4f20746fa91574fa87f9db806.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
Ctrl+a,鼠标右键,选择范围,输入起始列号和结束列号
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LseK4QDU-1640943853248)(音频数据的Flash读取与DAC播放/image-20211231165306629.png)]](https://img-blog.csdnimg.cn/77301c97dc984e9fa9c795b7ebd3f52b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
复制到notepad++
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kTFA1IcO-1640943853249)(音频数据的Flash读取与DAC播放/image-20211231165337482.png)]](https://img-blog.csdnimg.cn/b13ef930c2f84ef28b375ea6461bf371.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
在野火提供的样例程序——DAC 输出正弦波中添加数据
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZK2cHKe-1640943853250)(音频数据的Flash读取与DAC播放/image-20211231173034809.png)]](https://img-blog.csdnimg.cn/89a5fea1b730469a9fdbf88d7ad50aa9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
编译无误,即可烧录,用示波器得到波形
使用 DAC 输出数字音频歌曲数据转换为模拟音频波形输出
将歌曲转化为wav后,在au中打开,选择存储选区,完成后,步骤和上面一样用示波器得到波形
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BLhVBHrO-1640943853250)(音频数据的Flash读取与DAC播放/image-20211231173810268.png)]](https://img-blog.csdnimg.cn/792e8d1326154687a64a5e764b9ab5ae.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZ2ppc2g=,size_20,color_FFFFFF,t_70,g_se,x_16)
总结
本次学习对内部flash和DAC有了更多的了解,同时对声音的处理也有了粗略的了解。
|