基于 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 的 DAC 模块

3 Flash 地址空间的数据读取

3.1 利用 CubeMX 创建工程

STLink 连接并烧录

将一段数字音频歌曲数据转换为模拟音频波形输出

5 总结


 

1 项目准备
1.1 具体要求

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

    基于片内 Flash 的提示音播放程序。
    1)实验数据准备:用 Adobe audition 或 goldwave 等音频编辑软件录制“您好欢迎光临!”的几秒钟的声音(8khz 采样、8bit 量化编码的单声道wav格式),确保音频数据尽量小(最大不超 64KB)。然后编程将其分批次写入 STM32F103C8T6 芯片内部 Flash 区域。
    2)数字音频还原播放任务:编程读取此段音频,分别通过 STM32F103C8T6 自带的 DAC 通道,转换为模拟音频进行播放,并用示波器观察波形,用耳机/喇叭收听,评判音乐还原效果;
    提示:
    建议先用单音音频(比如 2000Hz 的正弦波)的 wav 数据进行实验,通过 DAC 或 PCM 音频模块能够基本还原出原始正弦波声音后,再用语音和音乐信号进行实验。

1.2 项目环境

软件准备:

    STM32CubeMX
    Keil 5
    Adobe audition 2022
    UltraEdit
    notepad++

2 原理简介

硬件准备:

    STM32F103C8T6 核心板
    STlink(安装链接:https://pan.baidu.com/s/1XeKTh1VNQo4JapX7HpGjsw 提取码:luha )

2.1 STM32 的内部 FLASH

    在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部 FLASH 中,由于 FLASH 存储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部 FLASH 中加载代码并运行。
    STM32 的内部框架图
  

 

2.2 STM32 的 DAC 通道
2.2.1 何为 DAC

    DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与 ADC 相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
    STM32 具有片上 DAC 外设,它的分辨率可配置为 8 位或 12 位的数字输入信号,具有两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错检测能力,可外部触发。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值