| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32F1C8T6音频数据读写和DAC播放 -> 正文阅读 |
|
[嵌入式]STM32F1C8T6音频数据读写和DAC播放 |
目录 一、题目1、Flash地址空间的数据读取。stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码4次,将32KB数据写入Flash。并验证写入数据的正确性和读写速率。 2、基于片内Flash的提示音播放程序。 1)实验数据准备:用Adobe audition或goldwave等音频编辑软件录制“您好欢迎光临!”的几秒钟的声音(8khz采样、8bit量化编码的单声道wav格式),确保音频数据尽量小(最大不超64KB)。然后编程将其分批次写入stm32f103c8t6芯片内部flash区域。 2)数字音频还原播放任务:编程读取此段音频,通过stm32f103c8t6自带的DAC通道,转换为模拟音频进行播放,并用示波器观察波形,用耳机/喇叭收听,评判音乐还原效果; 提示:建议先用单音音频(比如2000Hz的正弦波)的wav数据进行实验,通过DAC或PCM音频模块能够基本还原出原始正弦波声音后,再用语音和音乐信号进行实验。 二、FLASH地址空间数据读取2.1FLASH原理? ? ?Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。 ? ? ?市面上 STM32F1 开发板使用的芯片是 STM32F103系列,其 FLASH 容量一般为 512K 字节,属于大容量芯片。 ? ? ?STM32F1 的闪存(Flash)模块:主存储器、信息块、闪存存储器接口寄存器 2.2工具STM32F103C8T6、STlink 2.3创建CUBEMX工程前面的基础步骤还是创建工程,然后选择stm32f103c8,点开开始配置: 定时器配置: 管脚配置: ?设置堆栈大小和工程地址: ?完成这些步骤之后就可以导出了 2.4代码编辑在导出的文件中添加事先准备好的flash.c文件 ?然后在main.c中添加以下代码:
然后找到main函数,在里面添加以下代码:
?然后编译一下,没有错误进行下一步: 2.4烧录程序接线如下图:
连线结果如图所示: 连好线之后,连接电脑然后修改debug里面的数据:? 然后 然后点击下载的按钮就可以将程序下载到我们的板子中了 2.5调试下载好之后就改跳线帽,然后因为要进行调试,所以我们最好设置一个断点便于我们观察,这是是在main.c里的while这里设置的: 一直连接上板子然后进入debug,然后随便选择一个观测窗口进行观测 ?然后在右下角的memory1的窗口中输入我们的存储数据地址0x0800c000 ?然后点击全速运行,这时候就能观测到板子上的pc13led亮起,然后memory1的窗口中出现代码中存储的数据,而且断点之后再次上电,可以看见上次写入的数据还在其中。说明我们已经将数据写入flash中了。 ? ? 三、基于flash的提示音播放6.1生成正弦波数据使用Adobe Audition生成正弦波数据,然后新建一个音频文件: ?然后设置采样率和位深度,八位的八比特采样: 再去插入基本音色,这里是正弦波: 最后导出为wab文件,记住,路径一定要是自己能找得到的,因为之后要去打开 生成wav文件之后,用UltraEdit(这个的下载的时候一定要去官网下载,我以因为这个电脑直接中病毒崩溃了)将其打开,下载好后打开ultraedit然后在里面打开文件: Ctrl+A选择全部然后右键点击选择选择范围,输入12-59列 ? 选中需要的数据了,紧接着右键点击然后十六进制复制选定视图,再将十六进制数赋值到notepad++中: ?输入0x即可,注意是在每一列都需要输入一次 ?然后将内容复制到keil文件对应的位置,将原有的替换掉即可: 这里借用DAC生成正弦波的例程代码 链接:百度网盘 请输入提取码 之后编辑下载看是否能观察到预期的正弦波 参考文献:(76条消息) Flash原理介绍_Reborn Lee-CSDN博客_flash工作原理(76条消息) STM32F103基于片内flash的数据读取与音乐播放_txmnQAQ的博客-CSDN博客 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 4:29:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |