IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于STM32音频数据的Flash读取与DAC播放 -> 正文阅读

[嵌入式]基于STM32音频数据的Flash读取与DAC播放

实验内容

1.Flash地址空间的数据读取。
stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码4次,将32KB数据写入Flash。并验证写入数据的正确性和读写速率。

2.基于片内Flash的提示音播放程序。
1)实验数据准备:用Adobe audition或goldwave等音频编辑软件录制“您好欢迎光临!”的几秒钟的声音(8khz采样、8bit量化编码的单声道wav格式),确保音频数据尽量小(最大不超64KB)。然后编程将其分批次写入stm32f103c8t6芯片内部flash区域。
2)数字音频还原播放任务:编程读取此段音频,分别通过 (a)stm32f103c8t6自带的DAC通道,转换为模拟音频进行播放,并用示波器观察波形,用耳机/喇叭收听,评判音乐还原效果;
提示:建议先用单音音频(比如2000Hz的正弦波)的wav数据进行实验,通过DAC或PCM音频模块能够基本还原出原始正弦波声音后,再用语音和音乐信号进行实验。

一、Flash地址空间的数据读取

(一)、创建CubeMX工程

工程源码链接(主:flash.h文件需要自己重新加入到路径中)
链接: https://pan.baidu.com/s/18os4zjSZZH1_qTXHQFniyg
提取码: p36a

1.打开STM32CUBEMX,选择ACCESS TO MCU SELECTCR创建新项目

注:若STM32CUBEMX未曾下载依赖包,请参考:
https://blog.csdn.net/qq_48273416/article/details/121012116

在这里插入图片描述
2.在Pat Number那输入自己的芯片,我选择的是stm32F103C8, 选中你要的芯片的封装类型,然后点击Start Project
在这里插入图片描述
3.进入如下界面后,在System Core中点击SYS,在Debug那里选择Serial Wire,以及下方选项如图选择
在这里插入图片描述
4.进入上面的RCC,HSE那里设为Crystal/Ceramic Resonator
在这里插入图片描述
5.鼠标右击设置管脚,对应外设c8t6本身设计好的PC13 LED灯
在这里插入图片描述

6.设置GPIO
在这里插入图片描述
7.中断配置
在这里插入图片描述
8.进入Project Manager界面输入你的项目名称和你项目保存的地址,将IDE那项改为MDK-ARM,调节堆栈的大小,堆栈大小为4k或2k

注:项目保存的地址不能有中文,否则可能会出错

在这里插入图片描述

(二)、编辑代码

1.将事先准备好的flash.c 及flash.h加入到工程中
在这里插入图片描述
2.在main.c文件中添加代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.编译无误,进行调试
在这里插入图片描述

(三)、STlink调试

1.连线方式如下:

ST-LINKSTM32
SWCLK/TCKSWCLK/TCK
SWDIO/TMSSWDIO/TMS
GNDGND
VCCVCC

2.进入debug
在这里插入图片描述
3.View->memory windows->memory 1打开内存观察窗口,并在地址栏中输入:0x800c000,观察将要修改的flash区间内容:
在这里插入图片描述
4.View->Watch windows->Watch 1打开一个变量观察窗口,将变量FlashWBuff 和 FlashRBuff加入到 Watch 1 观察窗口:
在这里插入图片描述
5.全速运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样了
在这里插入图片描述
在这里插入图片描述
6.最后在Memory 1窗口中可以看到在FLASH地址0x0800C000区成功写入对应内容在这里插入图片描述
7.断电,重新上电后再次调试,程序刚停在main入口处时还可以看到Flash对应区间的内容保持上一次写入内容值
在这里插入图片描述

二、基于片内Flash的提示音播放程序

(一)、使用DAC输出周期2khz的正弦波

1.文件—>新建—>音频文件
在这里插入图片描述
2.效果->生成->音调
在这里插入图片描述
3.文件->导出->设置导出为wav文件
在这里插入图片描述
4.用UltraEdit打开刚才保存的wav文件
在这里插入图片描述
5.CTRL+A,接着鼠标右键,选择 十六进制复制选定视图,将内容粘贴到一个新建文件中,再在新建文件中,CTRL+A,接着鼠标右键,选择范围输入起始的行号和列号,确定就选中了整个我们需要的内容
在这里插入图片描述
6.这里借用DAC生成正弦波的例程代码

链接: https://pan.baidu.com/s/18br7p37b3tgbOIV9m3YV0w
提取码: xt5i

7.将内容复制到keil文件对应的位置,在下图红框中进行替换
在这里插入图片描述
8.最后编译下载,看能否观察到预期的正弦波

(二)、使用DAC输出数字音频歌曲数据转换为模拟音频波形输出

1.使用Audition截取一段喜欢的音乐,选择文件->打开,找到对应的音乐,选中一段,然后右键,选择存储选区,接着更改采用类型
在这里插入图片描述
在这里插入图片描述
2.使用UltraEdit得到相关数据,方法同使用DAC输出周期2khz的正弦波基本一致
3.使用notepad++添加相关内容,方法同使用DAC输出周期2khz的正弦波基本一致,借助音频模块听听看能否还原。

三、总结

本次实验不算很复杂,但过程比较繁琐,操作过程中需细致谨慎,通过本实验了解到了片内flash可以不借助外部设备即可实现存放功能,以及本次实验对于我们了解DAC有着重要的意义,这对于以后我们进一步学习使用stm32,有着比较好的帮助。

四、参考文献

https://blog.csdn.net/qq_46467126/article/details/122098829
https://blog.csdn.net/qq_47538417/article/details/122230944

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:06:15  更:2022-01-01 14:06:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:22:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码