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

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

1.Flash简介

在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部 FLASH 中,由于 FLASH 存储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部 FLASH 中加载代码并运行。
在这里插入图片描述

内部 FLASH 的构成

在这里插入图片描述
①主存储器
一般我们说 STM32 内部 FLASH 的时候,都是指这个主存储器区域,它是存储用户应用程序的空间,芯片型号说明中的 256K FLASH、512K FLASH 都是指这个区域的大小。
主存储器分为 256 页,每页大小为 2KB,共 512KB。这个分页的概念,实质就是FLASH 存储器的扇区,与其它 FLASH 一样,在写入数据前,要先按页(扇区)擦除。
注意上表中的主存储器是本实验板使用的 STM32VET6 型号芯片的参数,即
STM32F1 大容量产品。若使用超大容量、中容量或小容量产品,它们主存储器的页数量、页大小均有不同,使用的时候要注意区分。
②系统存储区
系统存储区是用户不能访问的区域,它在芯片出厂时已经固化了启动代码,它负责实现串口、USB 以及 CAN 等 ISP 烧录功能。
③选项字节
选项字节用于配置 FLASH 的读写保护、待机/停机复位、软件/硬件看门狗等功能,这部分共 16 字节。可以通过修改 FLASH 的选项控制寄存器修改。

2.建立工程

用STM32cubeMX建立工程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接着我们进入生成的工程中。

3.编辑代码

首先我们下载需要的文件。
百度网盘下载链接:flash.c和flash.h文件源码
提取码:pmvn
将flash.h复制到该文件夹下:
在这里插入图片描述
添加flash.c:
在这里插入图片描述
开始修改main.c:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.STlink调试仿真

百度网盘下载链接:STlink官方驱动
提取码:ykpz
下载后安装驱动。
设备接线情况:
在这里插入图片描述
点击load直接烧录进去,然后运行并且全速运行。然后运行到这里。
在这里插入图片描述在view里面打开memory查看内存变化,输入0x800c000查找,可以看到我代码中我写入的语句被成功写入到flash内存中。
在这里插入图片描述
通过view打开watch查看两个数组的内容,发现成功变为一致。
在这里插入图片描述
在这里插入图片描述
断电后再接电重写,可以发现同样的位置写入的东西一致,之后的FF说明数据没有继续覆盖写入。
在这里插入图片描述
在这里插入图片描述

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

1.使用DAC输出周期2khz的正弦波

先建立一个正弦音频。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们用UE打开刚刚的wav。CTRL+A,接着鼠标右键,选择 十六进制复制选定视图,将内容粘贴到一个新建文件中,在新建文件中,CTRL+A,接着鼠标右键,选择范围输入起始的行号和列号(列号12-58),确定就选中了整个我们需要的内容复制到notepad++中。
在这里插入图片描述
Edit编辑->列块编辑->输入0x 一列一列加不要急。
在这里插入图片描述
百度网盘下载链接:例程源码
提取码:706i
在这里插入图片描述
在这里插入图片描述
编译下载后有设备的话就能看是否是正弦波形了。

2.数字音频还原播放

打开我们的下好的mp3文件,先转化为wav。
在这里插入图片描述
按照上面同样的步骤,同样用例程并且修改编译,烧录进我们的开发板,如果有音频设备就能尝试一下能不能播放出音乐。

三、总结

本次实验由于设备和时间原因做的非常粗糙,心里面是很想真实地实验一下,但是实在是心有余而力不足。

四、参考链接

STM32 进阶教程 13 – FLASH的读写操作
【嵌入式22】STM32F1C8T6音频数据的Flash读取与DAC播放

版权声明:本文为CSDN博主「虎纹大猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48912898/article/details/122219081

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

1.Flash简介

在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部 FLASH 中,由于 FLASH 存储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部 FLASH 中加载代码并运行。
在这里插入图片描述

内部 FLASH 的构成

在这里插入图片描述
①主存储器
一般我们说 STM32 内部 FLASH 的时候,都是指这个主存储器区域,它是存储用户应用程序的空间,芯片型号说明中的 256K FLASH、512K FLASH 都是指这个区域的大小。
主存储器分为 256 页,每页大小为 2KB,共 512KB。这个分页的概念,实质就是FLASH 存储器的扇区,与其它 FLASH 一样,在写入数据前,要先按页(扇区)擦除。
注意上表中的主存储器是本实验板使用的 STM32VET6 型号芯片的参数,即
STM32F1 大容量产品。若使用超大容量、中容量或小容量产品,它们主存储器的页数量、页大小均有不同,使用的时候要注意区分。
②系统存储区
系统存储区是用户不能访问的区域,它在芯片出厂时已经固化了启动代码,它负责实现串口、USB 以及 CAN 等 ISP 烧录功能。
③选项字节
选项字节用于配置 FLASH 的读写保护、待机/停机复位、软件/硬件看门狗等功能,这部分共 16 字节。可以通过修改 FLASH 的选项控制寄存器修改。

2.建立工程

用STM32cubeMX建立工程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接着我们进入生成的工程中。

3.编辑代码

首先我们下载需要的文件。
百度网盘下载链接:flash.c和flash.h文件源码
提取码:pmvn
将flash.h复制到该文件夹下:
在这里插入图片描述
添加flash.c:
在这里插入图片描述
开始修改main.c:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.STlink调试仿真

百度网盘下载链接:STlink官方驱动
提取码:ykpz
下载后安装驱动。
设备接线情况:
在这里插入图片描述
点击load直接烧录进去,然后运行并且全速运行。然后运行到这里。
在这里插入图片描述在view里面打开memory查看内存变化,输入0x800c000查找,可以看到我代码中我写入的语句被成功写入到flash内存中。
在这里插入图片描述
通过view打开watch查看两个数组的内容,发现成功变为一致。
在这里插入图片描述
在这里插入图片描述
断电后再接电重写,可以发现同样的位置写入的东西一致,之后的FF说明数据没有继续覆盖写入。
在这里插入图片描述
在这里插入图片描述

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

1.使用DAC输出周期2khz的正弦波

先建立一个正弦音频。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们用UE打开刚刚的wav。CTRL+A,接着鼠标右键,选择 十六进制复制选定视图,将内容粘贴到一个新建文件中,在新建文件中,CTRL+A,接着鼠标右键,选择范围输入起始的行号和列号(列号12-58),确定就选中了整个我们需要的内容复制到notepad++中。
在这里插入图片描述
Edit编辑->列块编辑->输入0x 一列一列加不要急。
在这里插入图片描述
百度网盘下载链接:例程源码
提取码:706i
在这里插入图片描述
在这里插入图片描述
编译下载后有设备的话就能看是否是正弦波形了。

2.数字音频还原播放

打开我们的下好的mp3文件,先转化为wav。
在这里插入图片描述
按照上面同样的步骤,同样用例程并且修改编译,烧录进我们的开发板,如果有音频设备就能尝试一下能不能播放出音乐。

三、总结

本次实验由于设备和时间原因做的非常粗糙,心里面是很想真实地实验一下,但是实在是心有余而力不足。

四、参考链接

STM32 进阶教程 13 – FLASH的读写操作
【嵌入式22】STM32F1C8T6音频数据的Flash读取与DAC播放

版权声明:本文为CSDN博主「虎纹大猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48912898/article/details/122219081

生成海报
点赞 0

虎纹大猫

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

将音频编解码器添加到嵌入式系统的 5 个技巧

嵌入式系统播放音频的能力正在成为一个相当普遍的功能。音频为用户提供了很好的反馈,但如今有如此多的高保真音频可用,使用哔哔声和啁啾声不再削减它。开发人员当然可以使用分立组件和 DAC 从系统中获得不错的音频&#xff0