news 2026/5/21 11:53:45

STM32_DAC

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32_DAC
简介

DAC(Digital-to-Analog Converter,数模转换器)是将数字信号转换为模拟信号的外设,广泛应用于音频输出、波形生成、电机控制等场景。STM32F407 系列芯片配备了 2 个 DAC 通道(DAC1 和 DAC2),支持 12 位分辨率,支持多种触发方式,可输出稳定的模拟电压。本文从 DAC 的基本原理出发,详细讲解 STM32F407 DAC 的配置方法、代码实现、波形生成以及实际应用案例,帮助你快速掌握 DAC 的使用技巧。

一、DAC核心概念与分类
1.1 基本概念

DAC 是将数字信号转换为模拟信号的外设,其主要特点包括:

  • 双通道:支持 2 个独立的 DAC 通道
  • 12 位分辨率:可输出 0-4095 级模拟电压
  • 多种触发方式:支持软件触发、定时器触发、外部触发等
  • 波形生成:支持噪声波形、三角波波形生成
  • DMA 支持:支持 DMA 传输,实现连续输出

关键参数

  • 分辨率:12 位,输出范围 0-4095
  • 输出电压范围:0-VREF+(通常为 0-3.3V)
  • 更新速率:最高可达 1MSPS
  • 触发方式:软件触发、定时器触发、外部触发
1.2 STM32F407 的 DAC 资源

STM32F407 系列芯片配备了 2 个 DAC 通道:

DAC 通道引脚触发源适用场景
DAC1PA4软件触发、TIM2、TIM4、TIM5、TIM6、TIM7、TIM8、EXTI9主要DAC通道
DAC2PA5软件触发、TIM2、TIM4、TIM5、TIM6、TIM7、TIM8、EXTI9辅助DAC通道

关键特性

  • 支持 12 位分辨率
  • 支持左右对齐
  • 支持多种触发方式
  • 支持噪声波形生成
  • 支持三角波波形生成
  • 支持 DMA 传输
  • 支持双 DAC 同步转换
二、DAC工作原理
2.1 基本工作原理

DAC 的基本工作原理是将数字信号转换为模拟信号。

工作流程

  1. CPU 或 DMA 将数字数据写入 DAC 数据保持寄存器
  2. DAC 数据保持寄存器将数据传输到 DAC 数据寄存器
  3. DAC 数据寄存器将数字数据转换为模拟电压
  4. 模拟电压通过 DAC 输出引脚输出
2.2 触发方式

DAC 支持多种触发方式:

软件触发

  • 通过软件写入 DAC 数据寄存器触发转换
  • 适用于手动控制输出电压的场景

定时器触发

  • 通过定时器事件触发转换
  • 适用于周期性输出模拟电压的场景

外部触发

  • 通过外部中断触发转换
  • 适用于外部事件触发输出模拟电压的场景
2.3 波形生成

DAC 支持两种波形生成:

噪声波形生成

  • 生成伪随机噪声波形
  • 可用于音频效果、信号测试等场景

三角波波形生成

  • 生成三角波波形
  • 可用于信号测试、电机控制等场景
三、DAC配置与代码实现
3.1 标准库配置步骤

以 DAC1 为例,使用标准库配置 DAC 的基本步骤:

  1. 使能 DAC 时钟和 GPIO 时钟
  2. 配置 GPIO 为模拟模式
  3. 配置 DAC 基本参数
  4. 使能 DAC
  5. 配置 DMA(可选)
3.2 代码实现(DAC1,软件触发)
#include"stm32f4xx.h"/** * @brief 初始化DAC1 * @param 无 * @retval 无 */voidDAC1_Init(void){GPIO_InitTypeDef GPIO_InitStructure;DAC_InitTypeDef DAC_InitStructure;// 1. 使能时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);// 2. 配置GPIOGPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;// 模拟模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);// 3. 配置DAC1DAC_InitStructure.DAC_Trigger=DAC_Trigger_None;// 软件触发DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None;// 无波形生成DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;DAC_InitStructure.DAC_OutputBuffer=DAC_OutputBuffer_Enable;// 使能输出缓冲DAC_Init(DAC_Channel_1,&DAC_InitStructure);// 4. 使能DAC1DAC_Cmd(DAC_Channel_1,ENABLE);}/** * @brief 设置DAC1输出电压 * @param value: 数字值(0-4095) * @retval 无 */voidDAC1_SetVoltage(uint16_tvalue){// 设置DAC1数据寄存器DAC_SetChannel1Data(DAC_Align_12b_R,value);}/** * @brief 获取DAC1输出电压 * @param 无 * @retval 数字值(0-4095) */uint16_tDAC1_GetVoltage(void){// 获取DAC1数据寄存器returnDAC_GetDataOutputValue(DAC_Channel_1);}/** * @brief 将电压值转换为DAC数字值 * @param voltage: 电压值(0-3300mV) * @retval 数字值(0-4095) */uint16_tVoltage_To_DAC(uint16_tvoltage){if(voltage>3300)voltage=330
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 18:59:36

基于JLink接口定义的工业控制器烧录操作指南

以下是对您提供的技术博文进行 深度润色与专业重构后的终稿 。全文已彻底去除AI痕迹,采用资深嵌入式系统工程师第一人称视角写作,语言自然、逻辑严密、节奏紧凑,兼具教学性、工程实操性与行业洞察力。文中所有术语、参数、流程均严格依据SE…

作者头像 李华
网站建设 2026/5/21 12:07:54

进阶技巧:混合数据集提升Qwen2.5-7B通用性实战

进阶技巧:混合数据集提升Qwen2.5-7B通用性实战 在完成基础微调后,你是否遇到过这样的问题:模型记住了“我是CSDN迪菲赫尔曼开发的”,但回答专业问题时却频频出错?或者能流畅写诗,却不会解数学题&#xff1…

作者头像 李华
网站建设 2026/5/21 3:03:37

无需编程!SenseVoiceSmall + WebUI 实现富文本转录

无需编程!SenseVoiceSmall WebUI 实现富文本转录 你是否遇到过这样的场景:会议录音里夹杂着笑声、突然响起的掌声、背景音乐,还有说话人情绪起伏带来的语气变化——而传统语音识别工具只给你干巴巴的一行文字? 这次我们不写代码…

作者头像 李华
网站建设 2026/5/20 14:18:09

告别驱动安装难题:Windows系统Android调试工具自动配置指南

告别驱动安装难题:Windows系统Android调试工具自动配置指南 【免费下载链接】Latest-adb-fastboot-installer-for-windows A Simple Android Driver installer tool for windows (Always installs the latest version) 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/5/21 11:58:37

开源AI绘图模型趋势分析:Z-Image-Turbo+弹性GPU部署教程

开源AI绘图模型趋势分析:Z-Image-Turbo弹性GPU部署教程 1. 当前开源AI绘图模型的发展脉络 过去两年,开源图像生成模型正经历一场静默却深刻的范式迁移。从Stable Diffusion早期依赖庞大参数量和长推理步数,到如今Z-Image-Turbo这类模型以“…

作者头像 李华
网站建设 2026/5/21 11:43:31

开源漫画工具Tachiyomi完全指南:从入门到精通

开源漫画工具Tachiyomi完全指南:从入门到精通 【免费下载链接】website Official website for the Tachiyomi app. 项目地址: https://gitcode.com/gh_mirrors/website72/website Tachiyomi是一款专为Android设备设计的开源漫画工具,通过自定义漫…

作者头像 李华