STM32-DAC篇(基于f103)

上传者: 52706451 | 上传时间: 2024-08-21 14:08:35 | 文件大小: 416KB | 文件类型: PDF
### STM32-DAC篇(基于f103) #### 一、基础知识 **1.1 什么是DAC?** DAC,全称为Digital-to-Analog Converter(数字/模拟转换器),是一种能够将数字信号转换成模拟信号的电子器件。在STM32微控制器中,DAC模块用于将数字信号转换为模拟电压输出,适用于需要模拟输出的应用场景,如控制模拟设备或信号处理。 **1.2 DAC的特性参数** - **分辨率**:指的是DAC能够分辨的最小电压变化量,通常以二进制位数表示,例如8位、12位等。 - **建立时间**:表示将一个数字量转换为稳定模拟信号所需的时间。 - **精度**:是指DAC输出的实际电压与其理论值之间的差异程度。 - **参考电压**:DAC输出电压是相对于参考电压的一定比例,参考电压的选择直接影响到输出电压的范围。 **1.3 STM32各系列DAC的主要特性** - STM32系列微控制器中,不同的型号拥有不同特性的DAC模块,例如: - F1/F4/F7/H7等系列都内置有DAC模块。 - 某些系列支持双通道DAC输出。 - 不同系列支持不同的分辨率(如8位或12位)。 #### 二、DAC的工作原理 **2.1 DAC框图简介** - 在F1/F4/F7/H7等STM32系列中,DAC框图基本相同,主要包括以下几个部分: - 数据输入寄存器:用于存储待转换的数据。 - 数模转换器:完成数字到模拟信号的转换。 - 输出缓冲:保持输出信号的稳定性。 - 触发源:决定转换何时进行。 **2.2 参考电压/模拟部分电压** - DAC供电电源:VSSA、VDDA(2.4V≤VDDA≤3.6V) - DAC输出电压范围:VREF–≤VOUT≤VREF+(即0V≤VOUT≤3.6V) **2.3 DAC数据格式** - 8位模式:只支持右对齐,使用寄存器`DHR8Rx`或`DHR8RD`。 - 12位模式:支持左对齐和右对齐,使用寄存器`DHR12Rx`、`DHR12RD`或`DHR12Lx`、`DHR12LD`。 **2.4 触发源** - 三种触发转换的方式:自动触发、软件触发、外部事件触发。 - `TENx`位置0:禁止触发。 - `TSELx[2:0]`:选择外部事件触发源。 - `SWTRIGx`位:选择软件触发。 **2.5 DMA请求** - 当`DMAENx`位置1时,会产生DMA请求,使得DHRx的数据转移到DORx。 - 在12位模式下,数据加载到DORx后,模拟输出电压将经过时间`VSETTLING`后可用。 #### 三、DAC输出实验 **3.1 实验简要** - 本节主要介绍如何通过STM32的DAC输出特定的模拟电压。 - 实验中将使用12位右对齐模式,通过DAC1通道1(PA4)输出预设电压。 - 通过ADC1通道1 (PA1)采集输出电压,并显示ADC转换的数字量及换算后的电压值。 **3.2 DAC寄存器介绍** - `TEN1`位置0:关闭通道1触发(即自动)。 - `BOFF1`位置1:关闭输出缓冲。 **3.3 DAC输出实验配置步骤** 1. **初始化DAC**:使用`HAL_DAC_Init()`。 2. **DAC MSP初始化**:使用`HAL_DAC_MspInit()`来配置NVIC、CLOCK、GPIO等。 3. **配置DAC相应通道相关参数**:使用`HAL_DAC_ConfigChannel()`。 4. **启动D/A转换**:使用`HAL_DAC_Start()`。 5. **设置输出数字量**:使用`HAL_DAC_SetValue()`。 6. **读取通道输出数字量**(可选):使用`HAL_DAC_GetValue()`。 **3.4 编程实战:DAC输出实验** - 实验目标:使用12位右对齐模式通过DAC1通道1(PA4)输出预设电压。 #### 四、DAC输出三角波实验 **4.1 实验简要** - 本实验将通过STM32的DAC输出三角波。 - 使用12位右对齐模式,通过DAC1通道1(PA4)输出三角波。 - 通过DS100示波器查看波形。 **4.2 编程实战:DAC输出三角波实验** - 实验配置步骤与上一节相似,但需要编写特定的程序来生成三角波形。 #### 五、DAC输出正弦波实验 **5.1 实验简要** - 本实验将通过STM32的DAC输出正弦波。 - 使用12位右对齐模式,通过DAC1通道1(PA4)输出正弦波。 - 通过DS100示波器查看波形。 **5.2 DAC输出正弦波实验配置步骤** 1. **初始化DMA**。 2. **将DMA和ADC句柄联系起来**。 3. **初始化DAC**。 4. **DAC MSP初始化**。 5. **配置DAC相应通道相关参数**。 6. **启动DMA传输**。 7. **配置定时器溢出频率并启动**。 8. **配置定时器触发DAC转换**。 9. **停止/启动DAC转换**。 **5.3 产生正弦波序列函数介绍** - 为了生成正弦波形,可以编写一个函数`void dac_sine_wave(uint16_t maxval, uint16_t dt, uint16_t samples, uint16_t n)`,该函数根据给定的最大值、采样间隔、采样点数等参数生成正弦波序列。 #### 六、PWM DAC实验 **6.1 PWM DAC应用背景** - 在某些应用中,当需要多个DAC输出通道而STM32只提供了两个时,可以通过PWM加RC滤波器的方式来低成本地实现更多的DAC输出。 - 这种方法适用于精度要求不高的场合。 **6.2 编程实战:PWM DAC实验** - 通过配置定时器生成PWM信号,再通过RC滤波器平滑PWM信号得到近似的模拟电压输出。 #### 七、课堂总结 - 本文详细介绍了STM32的DAC模块的基本概念、工作原理以及如何通过编程实现不同的DAC输出实验。 - 通过这些实验,读者可以更深入地理解DAC的工作机制,并掌握如何利用STM32的DAC模块实现模拟输出功能。 - 对于希望进一步了解或实践DAC应用的开发者来说,这些内容提供了宝贵的指导。

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明