STM32实现DAC功能输出音频波形
目录
- 一、DAC简介
- 二、输出周期为2kHz的正弦波
- 三、音频信号输出
- 四、参考资料
一、DAC简介
DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与 ADC相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC把电压模拟信号转换成易于计算机存储、处理的数字编码,由计 算机处理完成后,再由 DAC输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器 件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
STM32具有片上 DAC外设,它的分辨率可配置为 8位或 12位的数字输入信号,具有两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错检测能力,可外部触发。
功能框图:
DAC通道模块:
- 图中
VDDA
和VSSA
为DAC 模块模拟部分的供电,而Vref+
则是 DAC 模块的参考电压。DAC_OUTx
就是 DAC的输出通道(DAC_OUT1
对应PA4 ,DAC_OUT2 PA5
引脚)。当 DAC 的参考电压为Vref+
的时候,DAC 的输出电压是线性的从0~Vref+
,12 位模式下 DAC 输出电压与Vref+
以及DORx
的计算公式如下: DACx 输出电压=Vref*(DORx/4095)- DAC的控制寄存器
DAC_CR
的低 16 位用于控制通道 1,而高 16 位用于控制通道 2。- DAC 输出是受
DORx
寄存器直接控制的,但是DORx
寄存器不能被直接写入数据,而是通过DHRx
间接的传给DORx
寄存器,实现对 DAC 输出的控制。前面我们提到,STM32F4
的 DAC 支持 8/12 位模式,8 位模式的时候是固定的右对齐的,而 12 位模式又可以设置左对齐/右对齐。
单 DAC 通道 x,总共有 3 种情况:
① 8 位数据右对齐:用户将数据写入DAC_DHR8Rx
[7:0]位(实际存入 DHRx[11:4]位)。
② 12 位数据左对齐:用户将数据写入DAC_DHR12Lx
[15:4]位(实际存入 DHRx[11:0]位)。
③ 12 位数据右对齐:用户将数据写入DAC_DHR12Rx
[11:0]位(实际存入 DHRx[11:0]位)。STM32F4
的 DAC集成了两个输出缓存器,通过DAC_CR
的BOFFx位控制,可使能或禁止各通道的输出缓冲器,但做的有些不好,如果使能的话,虽然输出能力强一点,但是输出没法到 0,在不使用输出缓存时可设置该位为 1。
二、输出周期为2kHz的正弦波
1.打开DAC\Project\RVMDK(uv5)\BH-STM32
,找到如下函数:
2.通过如下公式计算出,周期频率位为2kHz大约需要采集1800个点:
3.找到.m文件,用matlab
打开,对代码进行修改:
4.运行:
5.将dac_sinWave
中的数据复制到uint16_t Sine12bit
,周期32改成3600:
6.编译,成功后烧录到板子上,连接示波器,通过调频得到结果:
三、音频信号输出
1.通过 Adobe Audition 截取生成一段音频文件,打开AU,在文件里打开下载的歌曲:
2.设置参数,然后导出:
3.通过WavToC工具,将wav音频文件转为c语言代码程序:
4.将生成的数据替换工程中的波形数据:
5.烧录程序,通过示波器显示:
四、参考资料
Adobe Audition 2020中文版.
STM32F103使用TIM DMA DAC实现播放WAV音乐.
STM32实现DAC功能输出音频波形相关推荐
- STM32F103的DAC功能实现音频输出
本次实验主要内容:用Adobe audition或goldwave等音频编辑软件录制"您好欢迎光临!"的几秒钟的声音(8khz采样.8bit量化编码的单声道wav格式),确保音频数 ...
- STM32F103使用DAC功能输出三角波
在DAC的主要特征中可以看出,DAC内部还带有波形发生器. DAC 主要特征 2个DAC转换器:每个转换器对应1个输出通道 8位或者12位单调输出 12位模式下数据左对齐或者右对齐 同步更新功能 噪声 ...
- STM32通过DAC输出音频波形
文章目录 一.音频及代码获取 二.代码部分 三.总结 四.参考文献 一.音频及代码获取 打开Adobe Audition,新建一个音频文件 采样率8khz,单声道,8bit 点击效果-->生成基 ...
- STM32F103使用DAC功能输出正弦波
在DAC的主要特征中可以看出,DAC内部带有波形发生器. DAC 主要特征 2个DAC转换器:每个转换器对应1个输出通道 8位或者12位单调输出 12位模式下数据左对齐或者右对齐 同步更新功能 噪声波 ...
- 嵌入式实验(四):用STM32输出PWM波形/DAC功能完成波形输出
0 实验目标 用STM32F103输出一路PWM波形,建议采用定时器方法.野火和网上大多数资源采用此方法,有完整源码.用示波器观察输出波形. 用STM32F103的DAC功能完成以下波形输出,用示波器 ...
- 详细介绍Audition输出一个周期2khz的正弦波(循环)。将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。
详细介绍Audition输出一个周期2khz的正弦波(循环).将一段数字音频歌曲数据转换为模拟音频波形输出(循环) 序 言 1)STM32 的 DAC简介 2)DAC基本原理 2)DAC数字信号格式 ...
- 基于STM32的DAC音频输出
基于STM32的DAC音频输出 一.DAC 1.1 DAC简介 1.2 DAC功能框图剖析 二.使用DAC输出周期2kHz的正弦波 2.1 使用Adobe Audition输出一个周期2khz的正弦波 ...
- STM32配置DAC输出固定电压和方波
STM32F103VCT6自带两个12位DAC,DAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了.ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.1 ...
- STM32输出PWM波形
简单介绍一下PWM PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编 ...
最新文章
- rsyslog的学习
- js获取已知scripts中是否存在某变量_JS全局变量是如何工作的?
- android 动画动态消失,Android属性动画——没有什么动画是一个AnimSet不能解决的...
- 【开源项目】QT OPENGL 与 shader 绘制展示视频代码实例 OPenGL直接显示YUV数据
- 交换排序之冒泡排序(java实现)
- Android:解决魅族5在Logcat下不输出Log.v()日志
- 巧妇难为无米之炊 走出软件测试的困境
- 从程序员小仙飞升上神,java技术开发要如何实现?
- 【NOIP2000】【Luogu1019】单词接龙
- 团体程序设计天梯赛-练习集-L1-046. 整除光棍
- 5款精美APP原型设计模板,触手可得
- 全国地址邮编.sql
- python列表常见的5种去重方法
- php 的一元二次方程_php扩展 求解一元二次方程
- 六键无冲和全键无冲哪个好_键盘冷知识:全键无冲到底是什么?
- Docker推送镜像到自己的阿里云卡住,也不报错
- 电脑WiFi图标不见了?!怎么办......≡ (▔﹏▔) ≡
- 策略产品的进修之路—了解策略和策略产品
- C编译错误,运行错误以及常见问题。
- Matlab sum( ) 函数
热门文章
- lambda学习视频和stream学习视频(Java8 Lambda表达式视频教程)-Java爬虫-网络购物的正确打开方式
- 云主机和物理机的区别
- 显卡lol测试软件,GPU测试:能够轻松应对主流游戏_惠普 ENVY X360 15-bp107TX_笔记本评测-中关村在线...
- springBoot发送邮件附件名称乱码的解决
- 阿福卡专属流量包 开通 取消 方法
- 关联规则与强关联规则计算
- 联网常见通信协议与通讯协议梳理- 通讯协议
- 解决ubuntu无法显示中文拼音
- Shell 脚本的详细解读 (三)
- 数据分析中常见的存储方式