音频数据的Flash读取与DAC播放

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

1.Flash原理

不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了 1024K 字节。市面上 STM32F1 开发板使用的芯片是 STM32F103系列,其 FLASH 容量一般为 512K 字节,属于大容量芯片。
Flash的编程原理都是只能将1写为0,而不能将0写为1,所以在进行Flash编程前,必须将对应的块擦除,即将该块的每一位都变为1,块内所有字节变为0xFF。
STM32F1 的闪存(Flash)模块:主存储器、信息块、闪存存储器接口寄存器
①主存储器。该部分用来存放代码和数据常数(如 const 类型的数据)。对于大容量产品,其被划分为 256 页,每页 2K 字节。注意,小容量和中容量产品则每页只有 1K 字节。
②信息块。该部分分为 2 个小部分,其中启动程序代码,是用来存储 ST 自带的启动程序,用于串口下载代码,当 BOOT0 接 V3.3, BOOT1 接 GND 的时候,运行的就是这部分代码。用户选择字节,则一般用于配置写保护、读保护等功能。
③闪存存储器接口寄存器。该部分用于控制闪存读写等,是整个闪存模块的控制机构。对主存储器和信息块的写入由内嵌的闪存编程/擦除控制器(FPEC)管理;编程与擦除的高电压由内部产生。
在执行闪存写操作时,任何对闪存的读操作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操作时,不能进行代码或数据的读取操作。

2.工程配置

1.cube的相关配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生成工程即可,接下来配置keil文件
2.keil的配置
将事先准备好的flash.c 及flash.h加入到工程中
在这里插入图片描述
在main.c文件中添加部分代码
在这里插入图片描述
在这里插入图片描述
然后进行编译调试。其中要用到STlink,根据其相关原理进行连线即可。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
进行编译下载
在这里插入图片描述
在这里插入图片描述
进行仿真调试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
F5全速运行
在这里插入图片描述
在这里插入图片描述
可以看一下起始位置的数据0x08000000
在这里插入图片描述

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

1.使用DAC输出周期2khz的正弦波
生成单音正弦波
文件—>新建—>音频文件
在这里插入图片描述

效果->生成基本音色
在这里插入图片描述
在这里插入图片描述

文件->导出->设置导出为wav文件即可

用UltraEdit得到相关数据
用UltraEdit打开刚才保存的wav文件

在这里插入图片描述
复制到notepad++中,Edit编辑->列块编辑->输入0x
在这里插入图片描述
将内容复制到keil文件对应的位置,在下图红框中进行替换。
在这里插入图片描述
在这里插入图片描述
编辑好后编辑好代码,借助耳机或者音频模块看是否与原来一样。

三、总结

本次实验很难,又放在了最后,有些实验结果,没做出来,希望可以理解。

四、参考

https://blog.csdn.net/qq_46467126/article/details/122098829?spm=1001.2014.3001.5501.
https://blog.csdn.net/zhanglifu3601881/article/details/96632971.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值