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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 音频数据的Flash读取与DAC播放 -> 正文阅读

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

一、什么是Flash?

Flash 是存储芯片的一种,通过特定的程序可以修改里面的数据。Flash 存储器又称闪存,它结合了ROM 和RAM 的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM 的优势), U 盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash 全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader 以及操作系统或者程序代码或者直接当硬盘使用(U 盘)。

Flash的编程原理都是将1写为0,但不能将0写为1,所以在进行Flash编程前,必须将对应的块擦除,即将该块的每一位都变为1,块内所有字节变为0xFF。

STM32的闪存(Flash)模块主要包括:主存储器、信息块和闪存存储器接口寄存器。

①主存储器。该部分用来存放代码和数据常数(如 const 类型的数据)。对于大容量产品,其被划分为 256 页,每页
2K字节。注意,小容量和中容量产品则每页只有 1K 字节。

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

③闪存存储器接口寄存器。该部分用于控制闪存读写等,是整个闪存模块的控制机构。对主存储器和信息块的写入由内嵌的闪存编程/擦除控制器(FPEC)管理;编程与擦除的高电压由内部产生。在执行闪存写操作时,任何对闪存的读操作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操作时,不能进行代码或数据的读取操作。

二、怎么进行Flash的读取?

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

三、Flash实验

本次实验主要是要通过读取片内Flash的提示音播放波形声音

1.创建CUBEMX工程

配置定时器在这里插入图片描述
打开外部时钟
在这里插入图片描述
配置时钟
在这里插入图片描述
将PC13设置为output在这里插入图片描述
设置堆栈大小为4k,生成文件

2.在keil5中打开文件

将flash.c和flash.h添加到工程中
添加flash.c的时候选第二行
在这里插入图片描述
在main.c中分别添加如下代码(定义一下)

uint8_t FlashWBuff [255];
uint8_t FlashRBuff [255];
uint8_t i;
uint8_t FlashTest[] = “Hello This is Flash Test DEMO”;

将将程序下载到STM32里。
点击进入Debug模式。
点击View->memory windows,选择 memory 1打开内存观察窗口,并在地址栏中输入:0x800c000,观察将要修改的flash区间区容
在这里插入图片描述
点击View->Watch windows,选择Watch 1打开一个变量观察窗口,将变量FlashWBuff 和 FlashRBuff加入到 Watch 1 观察窗口
在这里插入图片描述
全速运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样,而定义好的句子写到了地址0x0800c000中了。
在这里插入图片描述

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

1.生成正弦波

可以用专业的音频处理软件AU等做,我这里为了方便直接用格式工厂转化一下。并输出
在这里插入图片描述
用UltraEdit打开刚才保存的wav文件
在这里插入图片描述

2.将DAC导入程序

打开下载好的DAC输出正弦波的程序,在bsp_dac.c中用上述内容替换框选内容,就可以输出不同的波形。在这里插入图片描述
随后将程序下载到STM32里。
接入同学的喇叭后,正弦波会发出嘟嘟嘟的声音。表明实验还算成功了。
由于没有示波器,最后波形不予展示。

参考资料

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

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:52:13-

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