打印
[其他ST产品]

Flash地址空间的数据读取及DAC 实现音频输出

[复制链接]
楼主: 远芳侵古道
手机看帖
扫描二维码
随时随地手机跟帖
21
远芳侵古道|  楼主 | 2022-8-23 16:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
其中点击某一字符右击可选择显示格式

使用特权

评论回复
22
远芳侵古道|  楼主 | 2022-8-23 16:44 | 只看该作者
继续View->Watch windows->Watch 1打开一个变量观察窗口

使用特权

评论回复
23
远芳侵古道|  楼主 | 2022-8-23 16:46 | 只看该作者

另外View->勾选Periodic Windows Update,开启变量自动更新

使用特权

评论回复
24
远芳侵古道|  楼主 | 2022-8-23 16:47 | 只看该作者
按如图所示的全速运行按钮或者F5

使用特权

评论回复
25
远芳侵古道|  楼主 | 2022-8-23 16:48 | 只看该作者
这时就可以看到Watch 1窗口的数组FlashRBuff中的内容与数组FlashWBuff中的内容是一样的

使用特权

评论回复
26
远芳侵古道|  楼主 | 2022-8-23 16:48 | 只看该作者
同时在Memory 1窗口中可以看到在FLASH地址0x0800C000区成功写入对应内容

使用特权

评论回复
27
远芳侵古道|  楼主 | 2022-8-23 16:50 | 只看该作者
断电后再重新上电进行调试,程序停在main入口处时还可以看到Flash对应区间的内容保持上一次写入内容值

使用特权

评论回复
28
远芳侵古道|  楼主 | 2022-8-23 16:50 | 只看该作者
三 、DAC

1、 DAC简介

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

STM32具有片上DAC外设,它的分辨率可配置为8位或12位的数字输入信号,具有两个DAC输出通道,这两个通道互不影响,每个通道都可以使用DMA功能,都具有出错检测能力,可外部触发。

使用特权

评论回复
29
远芳侵古道|  楼主 | 2022-8-23 16:51 | 只看该作者
2、DAC功能框图剖析

STM32的DAC模块框图如下:

使用特权

评论回复
30
远芳侵古道|  楼主 | 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—输出正弦波

使用特权

评论回复
31
远芳侵古道|  楼主 | 2022-8-23 16:52 | 只看该作者
四、使用DAC输出周期2kHz的正弦波

本次实验所用到软件及工程下载链接:https://pan.baidu.com/s/1gEATonRXK7km3yf-Mu0eEQ
提取码:1234
1、使用Adobe Audition输出一个周期2khz的正弦波
①选择文件->新建->音频文件

使用特权

评论回复
32
远芳侵古道|  楼主 | 2022-8-23 16:52 | 只看该作者
②设置好文件名、采样率为2000Hz,选择声道为单声道,位深度为16

使用特权

评论回复
33
远芳侵古道|  楼主 | 2022-8-23 17:00 | 只看该作者
③选择效果->生成基本音色

使用特权

评论回复
34
远芳侵古道|  楼主 | 2022-8-23 17:00 | 只看该作者
④将生成基本音色界面进行如下修改,点击确定即可


使用特权

评论回复
35
远芳侵古道|  楼主 | 2022-8-23 17:01 | 只看该作者
⑤点击文件->导出->文件,将其导出为wav文件

使用特权

评论回复
36
远芳侵古道|  楼主 | 2022-8-23 17:01 | 只看该作者
2、打开软件 WavToC,它可以将一个将WAV文件转化成C语言代码的文件

点击右下角的打开文件

使用特权

评论回复
37
远芳侵古道|  楼主 | 2022-8-23 17:02 | 只看该作者
找到我们刚刚导出的.wav文件

使用特权

评论回复
38
远芳侵古道|  楼主 | 2022-8-23 17:03 | 只看该作者
点击生成代码,便自动生成出了代码

使用特权

评论回复
39
远芳侵古道|  楼主 | 2022-8-23 17:03 | 只看该作者
部分数据如下图所示:

使用特权

评论回复
40
远芳侵古道|  楼主 | 2022-8-23 17:04 | 只看该作者
另外还可以点击试听,试听一下是不是正确的声音,比如这里的正弦波会发出嘟——的声音

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则