STM32F1C8T6音频数据读写和DAC播放 |
您所在的位置:网站首页 › Audition生成正弦波 › STM32F1C8T6音频数据读写和DAC播放 |
目录 一、题目 二、FLASH地址空间数据读取 2.1FLASH原理 2.2工具 2.3创建CUBEMX工程 2.4代码编辑 2.4烧录程序 2.5调试 三、基于flash的提示音播放 6.1生成正弦波数据 参考文献: 一、题目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 软件:Keil、STM32CubeMX 2.3创建CUBEMX工程前面的基础步骤还是创建工程,然后选择stm32f103c8,点开开始配置: 定时器配置: 管脚配置: 设置堆栈大小和工程地址: 完成这些步骤之后就可以导出了 2.4代码编辑在导出的文件中添加事先准备好的flash.c文件 然后在main.c中添加以下代码: #include "flash.h" uint8_t FlashWBuff [255]; uint8_t FlashRBuff [255];然后找到main函数,在里面添加以下代码: uint8_t i; uint8_t FlashTest[] = "ab ab ab";然后编译一下,没有错误进行下一步: 接线如下图: J-linkSTM32SWCLK/TCKSWCLK/TCKSWDIO/TMSSWDIO/TMSGNDGNDVCCVCC连线结果如图所示: 连好线之后,连接电脑然后修改debug里面的数据: 然后 然后点击下载的按钮就可以将程序下载到我们的板子中了 下载好之后就改跳线帽,然后因为要进行调试,所以我们最好设置一个断点便于我们观察,这是是在main.c里的while这里设置的:
然后在右下角的memory1的窗口中输入我们的存储数据地址0x0800c000 然后点击全速运行,这时候就能观测到板子上的pc13led亮起,然后memory1的窗口中出现代码中存储的数据,而且断点之后再次上电,可以看见上次写入的数据还在其中。说明我们已经将数据写入flash中了。 三、基于flash的提示音播放 6.1生成正弦波数据 使用Adobe Audition生成正弦波数据,然后新建一个音频文件: 然后设置采样率和位深度,八位的八比特采样: 再去插入基本音色,这里是正弦波: 最后导出为wab文件,记住,路径一定要是自己能找得到的,因为之后要去打开 生成wav文件之后,用UltraEdit(这个的下载的时候一定要去官网下载,我以因为这个电脑直接中病毒崩溃了)将其打开,下载好后打开ultraedit然后在里面打开文件: Ctrl+A选择全部然后右键点击选择选择范围,输入12-59列
选中需要的数据了,紧接着右键点击然后十六进制复制选定视图,再将十六进制数赋值到notepad++中: 输入0x即可,注意是在每一列都需要输入一次 然后将内容复制到keil文件对应的位置,将原有的替换掉即可: 这里借用DAC生成正弦波的例程代码 链接:百度网盘 请输入提取码 提取码:706i 之后编辑下载看是否能观察到预期的正弦波 (76条消息) Flash原理介绍_Reborn Lee-CSDN博客_flash工作原理(76条消息) STM32F103基于片内flash的数据读取与音乐播放_txmnQAQ的博客-CSDN博客 (76条消息) 【嵌入式22】STM32F1C8T6音频数据的Flash读取与DAC播放_噗噗的罐子博客-CSDN博客 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |