STM32F103C8T6音频数据的Flash读取与DAC播放
目录
一、Flash地址空间的数据读取
1、Flash简介
2、Flash的硬件实现机制
3、使用到的硬件及软件
4、STM32CubeMX工程配置
5、keil代码
6、STlink调试说明
7、调试
二、基于片内Flash的提示音播放程序
1、使用DAC输出周期2khz的正弦波
2、使用DAC输出数字音频歌曲数据转换为模拟音频波形输出
三、总结
四、参考资料
一、Flash地址空间的数据读取
1、Flash简介
Flash全名叫做Flash Memory,从名字就能看出,是种数据存储设备,存储设备有很多类,Flash属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。
2、Flash的硬件实现机制
Flash的内部存储是MOSFET,里面有个悬浮门(Floating Gate),是真正存储数据的单元。
在Flash之前,紫外线可擦除(uv-erasable)的EPROM,就已经采用了Floating Gate存储数据这一技术了。
典型的Flash内存单元的物理结构
数据在Flash内存单元中是以电荷(electrical charge) 形式存储的。存储电荷的多少,取决于图中的外部门(external gate)所被施加的电压,其控制了是向存储单元中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示,因此,Flash的存储单元的默认值,不是0(其他常见的存储设备,比如硬盘灯,默认值为0),而是1,而如果将电荷释放掉,电压降低到一定程度,表述数字0。
Flash和普通设备相比所具有的特殊性
3、使用到的硬件及软件
STM32F103C8T6、STlink
软件:Keil、STM32CubeMX
4、STM32CubeMX工程配置
定时器配置
RCC
引脚配置
中断配置
系统时钟树
设置堆栈大小,设置为2k或4k
然后导出
5、keil代码
链接:百度网盘 请输入提取码
提取码:wpsg
将事先准备好的flash.c 及flash.h加入到工程中
如果下载源代码,只需要修改main函数中:
编译无误,进行调试
6、STlink调试说明
事先在电脑上下载好响应的ST-Link驱动
回到Keil下,在魔法棒Option选项卡进行设置
首先是选择调试器,如果使用的是 ST-Link,在 Debug 选项卡中,请选择ST-Link Debugger
,如果你使用的是 JLINK,那么需要选择J-LINK/J-Trace Cortex
。
在选择完调试器之后,点击右边的 Setting 按钮,如果看到以下内容说明连接成功
然后点击红框中的箭头,就可以将程序烧录到stm32中。
注意:使用st-link和keil进行烧录会严格检查stm32型号,如果不是对应的型号烧录会报错。
7、调试
点击仿真调试
View->memory windows->memory 1打开内存观察窗口
View->Watch windows->Watch 1打开一个变量观察窗口,将变量FlashWBuff 和 FlashRBuff加入到 Watch 1 观察窗口
全速运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样了
在Memory 1窗口中可以看到在FLASH地址0x0800C000区成功写入对应内容。
断电,重新上电后再次调试,程序刚停在main入口处时还可以看到Flash对应区间的内容保持上一次写入内容值。
二、基于片内Flash的提示音播放程序
1、使用DAC输出周期2khz的正弦波
打开软件Adobe Audition
文件—>新建—>音频文件
效果->生成->音调
文件->导出->设置导出为wav文件
用UltraEdit得到相关数据
用UltraEdit打开刚才保存的wav文件
CTRL+A,接着鼠标右键,选择 十六进制复制选定视图,将内容粘贴到一个新建文件中
在新建文件中,CTRL+A,接着鼠标右键,选择范围输入起始的行号和列号,确定就选中了整个我们需要的内容
可见复制的是11行到59行的数据
复制到notepad++中
Edit编辑->列块编辑->输入0x
这里借用DAC生成正弦波的例程代码
链接:百度网盘 请输入提取码
提取码:706i
将内容复制到keil文件对应的位置,在下图红框中进行替换。
之后,编译下载,看能否观察到正弦波。
2、使用DAC输出数字音频歌曲数据转换为模拟音频波形输出
步骤跟前面差不多,这里不过多赘述
编辑好代码后,烧录,借助音频模块听听看能否还原。
三、总结
通过此次实验对Flash有了一定的了解
四、参考资料
STM32 进阶教程 13 – FLASH的读写操作_张十三的博客-CSDN博客_stm32f103c8t6flash读写
Flash硬件原理 - 轻轻的吻 - 博客园
STM32F103C8T6音频数据的Flash读取与DAC播放相关推荐
- 音频数据的Flash读取与DAC播放
目录 二.Flash地址空间的数据读取 1.flash 2.stm32CubeMX文件创建 3.keil文件配置 4.s-TLINK调试 三.基于片内Flash的提示音播放程序 1.输出2000kHZ ...
- STM32 音频数据的Flash读取与DAC播放
STM32 音频数据的Flash读取与DAC播放 STM32 音频数据的Flash读取与DAC播放 STM32 音频数据的Flash读取与DAC播放 一.题目内容 二.Flash地址空间数据读取 1. ...
- 基于 STM32F103C8T6 对音频数据的 Flash 读取与 DAC 播放
文章内容: STM32F103C8T6 的 Flash 地址空间的数据读取. STM32F103C8T6 自带的 DAC 通道,转换为模拟音频进行播放,并用示波器观察波形,用耳机/喇叭收听,评判音乐还 ...
- 基于 STM32对音频数据的 Flash 读取与 DAC 播放
目录 1 项目准备1.1 具体要求 1.2 项目环境 2 原理简介 2.1 STM32 的内部 FLASH 2.2 STM32 的 DAC 通道2.2.1 何为 DAC 2.2.2 STM32 的 D ...
- STM32之音频数据的Flash读取与DAC播放
文章目录 一. STM32103之内部Flash原理 1. Flash介绍 2. Flash的组成 3. STM32内部框架图 二. SD卡的读写 1. 实验过程 2. 查看hello.txt 3. ...
- 音频数据的Flash读取与DAC的播放
文章目录 一.Flash地址空间的数据读取 1.Flash简介 内部 FLASH 的构成 2.建立工程 3.编辑代码 4.STlink调试仿真 二.基于片内Flash的提示音播放程序 1.使用DAC输 ...
- 音频数据的SD/Flash读取与DAC播放
文章目录 一.简介 1.flash简介 2.DAC简介 二.预备实验 1.问题描述 2.ST-LINK准备 3.Flash地址空间的数据读取 三.基于片内Flash的提示音播放程序 1.使用DAC输出 ...
- STM32利用flash读取音频数据读取与DAC播放
目录 一.博客内容 二.Flash地址空间的读取 2.1 Flash原理 2.2 软.硬件准备 2.3 利用CubeMX建立工程 2.4 工程代码 2.5 ST-Link的使用 2.6 仿真调试 三 ...
- STM32最小板完成音频数据的读取与DAC播放
目录 一.Flash简单介绍 1.Flash操作流程与操作选址 1.1.Flash操作流程 1.2 .如何查找并选定要写入Flash十六进制地址 2.Flash读写等相关原理 2.1.闪存的读取 2. ...
最新文章
- 字符类型(Java)
- perl访问sybase等数据库
- MFC中小笔记(三)
- 计算机软件水平考试调整,全国计算机等级考试调整方案
- [LeetCode] Add Two Numbers
- 5 个给 Linux 新手的最佳包管理器
- C语言中register类型变量
- 《高性能javascript》随笔
- 最强社工必备查询网址汇总
- Nexus下载失败解决方案
- idea设置背景护眼色
- xshell查看hdfs文件目录路径_hdfs的shell操作
- 对硬盘进行分区时,GPT和MBR有什么区别?
- Matlab作图后的各种调整方法——线条、坐标、标题、图例
- Android6.0 usb默认MTP模式的修改方法
- 简述面向过程与面向过程的思想
- 笨方法学python40-42
- 总结XSS与CSRF两种跨站攻击
- 复现 SSL_Anti-spoofing, 使用 wav2vec 2.0 和数据增强的自动说话人认证的欺骗攻击与深度伪造检测
- 【JPG到DWG】图片直转成CAD