[应用相关] 使用STM32F103的DAC功能实现音频输出

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



 楼主| 好几遍vh 发表于 2022-1-28 17:13 | 显示全部楼层
准备
由于手动写入函数比较麻烦,而且对于初学者,不知道该把这些函数写在哪里的,可以说对初学者及其不友好。

推荐使用stm32cubemx:直接图形化配置,最后至多加几行代码,即可完成实验,没有安装可自行百度,比较简单

安装下载可以参考下面的链接
链接:STM32CubeMX介绍、下载与安装
https://blog.csdn.net/ybhuangfugui/article/details/52225736
 楼主| 好几遍vh 发表于 2022-1-28 17:13 | 显示全部楼层
输出一个周期2khz的正弦波——基于HAL库
这里由于没有示波器,所以表现形式换为蜂鸣器发声。
 楼主| 好几遍vh 发表于 2022-1-28 17:14 | 显示全部楼层
1.打开cubemx,新建工程
3628261f3b3dd3502a.png
 楼主| 好几遍vh 发表于 2022-1-28 17:15 | 显示全部楼层
2.选择芯片
2965661f3b415dc149.png
 楼主| 好几遍vh 发表于 2022-1-28 17:16 | 显示全部楼层
 楼主| 好几遍vh 发表于 2022-1-28 17:18 | 显示全部楼层
通过STM32F103RB的蜂鸣器原理图,找到对应的管脚,这里使用PA15的tim
 楼主| 好几遍vh 发表于 2022-1-28 17:18 | 显示全部楼层
 楼主| 好几遍vh 发表于 2022-1-28 17:19 | 显示全部楼层
设置蜂鸣器
 楼主| 好几遍vh 发表于 2022-1-28 17:20 | 显示全部楼层
 楼主| 好几遍vh 发表于 2022-1-28 17:21 | 显示全部楼层
到此芯片页面配置完毕,再配置configuration页面,时钟树页面(clock configuration)可以用默认值
 楼主| 好几遍vh 发表于 2022-1-28 17:21 | 显示全部楼层
 楼主| 好几遍vh 发表于 2022-1-28 17:22 | 显示全部楼层
设置2khz的公式:2khz=时钟输入频率(默认8M)/(分频值7+1)/重载值(500),默认占空比50%(比较值500*50%=250)
 楼主| 好几遍vh 发表于 2022-1-28 17:23 | 显示全部楼层
 楼主| 好几遍vh 发表于 2022-1-28 17:24 | 显示全部楼层
时钟设置
8454261f3b65cc75b3.png
 楼主| 好几遍vh 发表于 2022-1-28 17:25 | 显示全部楼层
应用后,返回,进入NVIC

1200361f3b679d2084.png
 楼主| 好几遍vh 发表于 2022-1-29 11:12 | 显示全部楼层
配置完成后,接下来生成keil工程,点击左上角的像螺丝状的图标
599061f4b0a6ee6b0.png
 楼主| 好几遍vh 发表于 2022-1-29 11:13 | 显示全部楼层
然后就是工程文件储存设置,以及相关环境和库的版本选择
2243561f4b0f180eb7.png
 楼主| 好几遍vh 发表于 2022-1-29 11:15 | 显示全部楼层
生成工程文件后,打开

2878161f4b16cc9573.png
 楼主| 好几遍vh 发表于 2022-1-29 11:17 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

252

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部