基于STM32的FALSH读写与DAC功能播放音频

一、FLASH读写

1、FLASH原理

STM32F1 的闪存(Flash)模块由:主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。下面我们就来介绍下这些组成部分:

①主存储器。该部分用来存放代码和数据常数(如 const 类型的数据)。对于大容量产品,其被划分为 256 页,每页 2K 字节。注意,小容量和中容量产品则每页只有 1K 字节。从上图可以看出主存储器的起始地址就是0X08000000, BOOT0、BOOT1 都接 GND 的时候,就是从 0X08000000 开始运行代码的。

②信息块。该部分分为 2 个小部分,其中启动程序代码,是用来存储 ST 自带的启动程序,用于串口下载代码,当 BOOT0 接 V3.3, BOOT1 接 GND 的时候,运行的就是这部分代码。用户选择字节,则一般用于配置写保护、读保护等功能,这里我们不做介绍,大家可以百度了解。

③闪存存储器接口寄存器。该部分用于控制闪存读写等,是整个闪存模块的控制机构。对主存储器和信息块的写入由内嵌的闪存编程/擦除控制器(FPEC)管理;编程与擦除的高电压由内部产生。

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

2、创建工程

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3、代码修改

添加flash.c和flash.h
在这里插入图片描述添加代码

#include "flash.h"

在这里插入图片描述

uint8_t FlashWBuff [255];
uint8_t FlashRBuff [255];

在这里插入图片描述
在这里插入图片描述

4、配置keil

在这里插入图片描述进入debug
在这里插入图片描述
在view中打开窗口
在这里插入图片描述
在这里插入图片描述
在watch1添加变量FlashWBuff 和 FlashRBuff
在这里插入图片描述
在Memory1中输入地址0x800c000观察
在这里插入图片描述

二、DAC功能输出音频

1、DAC介绍

数字/模拟转换模块(DAC)是12位数字输入,电压输出的数字/模拟转换器。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+ 以获得更精确的转换结果。

DAC主要特征

● 2个DAC转换器:每个转换器对应1个输出通道

● 8位或者12位单调输出

● 12位模式下数据左对齐或者右对齐

● 双DAC通道同时或者分别转换

● 每个通道都有DMA功能

● 外部触发转换

● 输入参考电压VREF+

DAC管脚

注意: 一旦使能DACx通道,相应的GPIO引脚(PA4或者PA5)就会自动与DAC的模拟输出相连(DAC_OUTx)。为了避免寄生的干扰和额外的功耗,引脚PA4或者PA5在之前应当设置成模拟输入(AIN)。

使能DAC通道
将DAC_CR寄存器的ENx位置’1’ 即可打开对DAC通道x 的供电。经过一段启动时间tWAKEUP,DAC通道x 即被使能。

注意: ENx位只会使能DAC通道x的模拟部分,即便该位被置’0’,DAC通道x的数字部分仍然工作。

使能DAC输出缓存
DAC集成了2个输出缓存,可以用来减少输出阻抗,无需外部运放即可直接驱动外部负载。每个DAC通道输出缓存可以通过设置DAC_CR寄存器的BOFFx位来使能或者关闭。

DAC输出电压
数字输入经过DAC被线性地转换为模拟电压输出,
其范围为0到VREF+ 。
任一DAC通道引脚上的输出电压满足下面的关系:
DAC输出 = VREF x (DOR / 4095) 。

DAC数据格式
根据选择的配置模式,数据按照下文所述写入指定的寄存器:

─ 8位数据右对齐:用户须将数据写入寄存器DAC_DHR8Rx[7:0]位(实际是存入寄存器DHRx[11:4]位)
─ 12位数据左对齐:用户须将数据写入寄存器DAC_DHR12Lx[15:4]位(实际是存入寄存器DHRx[11:0]位)
─ 12位数据右对齐:用户须将数据写入寄存器DAC_DHR12Rx[11:0]位(实际是存入寄存器DHRx[11:0]位)

2、使用DAC输出正弦波

1、使用Audition新建
设置采样率
在这里插入图片描述
2、效果->生成->音调
设置频率
在这里插入图片描述3、导出wav文件
在这里插入图片描述4、截取音频
在这里插入图片描述在这里插入图片描述在这里插入图片描述5、使用WavToC,将WAV文件转化成C语言代码的文件
打开刚才生成的wav文件
在这里插入图片描述在这里插入图片描述在代码在工程中替换
由于没有示波器与音频模块,无法进行测试

三、参考

https://blog.csdn.net/lushoumin/article/details/87694389
https://blog.csdn.net/zhanglifu3601881/article/details/96632971
https://blog.csdn.net/baidu_37366055/article/details/98069127
https://blog.csdn.net/xwmrqqq/article/details/112386810

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值