ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-31 20:06:24  阅读:374  来源: 互联网

标签:闪存 字节 DAC 代码 Flash 点击 STM32F103C8T6


一、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)管理;编程与擦除的高电压由内部产生。

在执行闪存写操作时,任何对闪存的读操作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操作时,不能进行代码或数据的读取操作。

二、创建STM32CUBEMX工程

芯片选择F103C8
在这里插入图片描述
配置定时器
在这里插入图片描述
打开外部时钟
在这里插入图片描述
配置时钟
在这里插入图片描述
配置PC13为output对应板子上的LED
在这里插入图片描述
设置堆栈大小为4K,导出
在这里插入图片描述

三、KEIL下的配置

1、代码修改。

将flash.c 和flash.h添加到工程中
在这里插入图片描述

在main.c文件中添加部分代码
在这里插入图片描述
添加自己的想输入信息,编译无错即可

2、调试

这里需要用到ST-link
连线方式:
在这里插入图片描述
回到Keil下,在魔法棒Option选项卡进行设置
首先是选择调试器,如果使用的是 ST-Link,在 Debug 选项卡中,请选择ST-Link Debugger
在这里插入图片描述
在选择完调试器之后,点击右边的 Setting 按钮
将程序下载到单片机中

在这里插入图片描述

如果右侧IDCODE有显示的话就是连接成功了。然后点击下载按钮可以将程序下载到我们的板子中
在这里插入图片描述
板子连线如下
在这里插入图片描述

在这里插入图片描述
如图所示成功。
现在点击dubug按钮,进入硬件仿真调试
在这里插入图片描述

View->memory windows->memory 1打开内存观察窗口,并在地址栏中输入:0x800c000,观察将要修改的flash区间区容:
在这里插入图片描述
点击全速运行,可以看到板子上的PC13 LED亮起,然后Memory 1窗口中出现之前存储的数据,证明数据成功写入。断电之后再次上电进行调试,可以看到上次写入的数据还在其中,证明已经将数据写入到flash中
在这里插入图片描述

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

1、DAC简介

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

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

2、使用DAC输出周期2kHz的正弦波

点击左上角的文件,新建,音频文件
采样率2000Hz,声道单声道,位深度16位
在这里插入图片描述
点击效果,生成,音调
设置如下

在这里插入图片描述
点击文件,导出,文件
格式设置如下
在这里插入图片描述
完成

3,截取音乐中的音频

随便找一首音乐,点击截取一段音频
在这里插入图片描述

右键,点击存储选取为
点击更改,配置如下
在这里插入图片描述
点击确定完成。
打开软件WavToC,这是一个将WAV文件转化成C语言代码的文件
点击右下角的打开文件
选择我们刚才生成的wav文件
点击生成代码,便自动生成出代码
在这里插入图片描述
在这里插入图片描述

打开原子哥的DAC输出正弦波的程序
在bsp_dac.c下的函数中,替换内容,就可以输出不同的波形,
在这里插入图片描述

总结

这此实验用AU生成了wav文件,也是参考了大部分的博客,条件有限,也没有用示波器进行观察。但因该是对的。

参考博客

https://blog.csdn.net/m0_58414679/article/details/122221730?spm=1001.2014.3001.5501

标签:闪存,字节,DAC,代码,Flash,点击,STM32F103C8T6
来源: https://blog.csdn.net/John_keen/article/details/122260694

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有