[其他ST产品] Flash地址空间的数据读取及DAC 实现音频输出

[复制链接]
1922|46
 楼主| 远芳侵古道 发表于 2022-8-23 16:44 | 显示全部楼层
其中点击某一字符右击可选择显示格式
689956304934059c1f.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:44 | 显示全部楼层
继续View->Watch windows->Watch 1打开一个变量观察窗口
6974463049369e36f3.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:46 | 显示全部楼层
717556304938fc7cc9.png
另外View->勾选Periodic Windows Update,开启变量自动更新
48666304939f058b8.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:47 | 显示全部楼层
按如图所示的全速运行按钮或者F5
41887630493fc6ddb5.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:48 | 显示全部楼层
这时就可以看到Watch 1窗口的数组FlashRBuff中的内容与数组FlashWBuff中的内容是一样的
529726304943082823.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:48 | 显示全部楼层
同时在Memory 1窗口中可以看到在FLASH地址0x0800C000区成功写入对应内容

847963049453e3de9.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:50 | 显示全部楼层
断电后再重新上电进行调试,程序停在main入口处时还可以看到Flash对应区间的内容保持上一次写入内容值
250706304947ab91bb.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:50 | 显示全部楼层
三 、DAC

1、 DAC简介

DAC为数字/模拟转换模块,顾名思义,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与ADC相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而ADC把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由DAC输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。

STM32具有片上DAC外设,它的分辨率可配置为8位或12位的数字输入信号,具有两个DAC输出通道,这两个通道互不影响,每个通道都可以使用DMA功能,都具有出错检测能力,可外部触发。
 楼主| 远芳侵古道 发表于 2022-8-23 16:51 | 显示全部楼层
2、DAC功能框图剖析

STM32的DAC模块框图如下:
71348630494fcdf06f.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:51 | 显示全部楼层
整个DAC模块围绕框图下方的 “数字至模拟转换器x” 展开,它的左边分别是参考电源的引脚:VDDA、VSSA及Vref+,其中STM32的DAC规定了它的参考电压Vref+输入范围 为2.4~3.3V。“数字至模拟转换器x” 的输入为 DAC 的数据寄存器 “DORx” 的数字编码,经过它转换得的模拟信号由图中右侧的 “DAC_OUTx” 输出。而数据寄存器 “DORx” 又受“控制逻辑”支配,它可以控制数据寄存器加入一些伪噪声信号或配置产生三角波信号。

图中的左上角为DAC的触发源,DAC根据触发源的信号来进行DAC转换,其作用就相当于DAC转换器的开关,它可以配置的触发源为外部中断源触发、定时器触发或软件控制触发。

STM32的DAC外设有固定的输出通道,分别为PA4和PA5,因此实验时直接使用示波器测量PA4和PA5引脚的输出即可。

关于更多DAC的了解可去 野火 STM32 HAL库开发实战指南第37节:DAC—输出正弦波
 楼主| 远芳侵古道 发表于 2022-8-23 16:52 | 显示全部楼层
四、使用DAC输出周期2kHz的正弦波

本次实验所用到软件及工程下载链接:https://pan.baidu.com/s/1gEATonRXK7km3yf-Mu0eEQ
提取码:1234
1、使用Adobe Audition输出一个周期2khz的正弦波
①选择文件->新建->音频文件
28163049537c56f4.png
 楼主| 远芳侵古道 发表于 2022-8-23 16:52 | 显示全部楼层
②设置好文件名、采样率为2000Hz,选择声道为单声道,位深度为16
5703963049552d07cf.png
 楼主| 远芳侵古道 发表于 2022-8-23 17:00 | 显示全部楼层
③选择效果->生成基本音色
40351630495728a439.png
 楼主| 远芳侵古道 发表于 2022-8-23 17:00 | 显示全部楼层
④将生成基本音色界面进行如下修改,点击确定即可

18896304973430c76.png
 楼主| 远芳侵古道 发表于 2022-8-23 17:01 | 显示全部楼层
⑤点击文件->导出->文件,将其导出为wav文件
33766304975138ee7.png
561246304976528259.png
 楼主| 远芳侵古道 发表于 2022-8-23 17:01 | 显示全部楼层
2、打开软件 WavToC,它可以将一个将WAV文件转化成C语言代码的文件
32039630497761eeb1.png
点击右下角的打开文件
1064963049784d0632.png
 楼主| 远芳侵古道 发表于 2022-8-23 17:02 | 显示全部楼层
找到我们刚刚导出的.wav文件
41333630497a28e87d.png
 楼主| 远芳侵古道 发表于 2022-8-23 17:03 | 显示全部楼层
点击生成代码,便自动生成出了代码
67930630497b437747.png
 楼主| 远芳侵古道 发表于 2022-8-23 17:03 | 显示全部楼层
部分数据如下图所示:
71605630497daca008.png
 楼主| 远芳侵古道 发表于 2022-8-23 17:04 | 显示全部楼层
另外还可以点击试听,试听一下是不是正确的声音,比如这里的正弦波会发出嘟——的声音
58685630497f87757c.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部