11、DAC

1 DAC基本情况

1.1 DAC简介

Digtal-to-Analog Converter(DAC),即数字/模拟转换器,负责将数字信号转换为模拟的电压信号。

1.2 DAC特性参数

分辨率:表示模拟电压的最小增量,常用二进制位数表示

建立时间:表示一个数字量转换为稳定模拟量所需时间

精度:转换器实际特性曲线与理想特性曲线的最大偏差

1.3 DAC主要参数(F1)

输出类型:电压输出型

分辨率:8/12位

时钟频率:36MHz(APB1)

建立时间:3微秒

供电电压:VSSA:0v,VDDA:2.4~3.6V

参考电压:VREF-:0V,VREF+:一般3.3V

输出通道:PA4、PA5

2 DAC工作原理

2.1 DAC数据格式

DAC支持8位模式和12位模式,其中8位模式只能使用右对齐,12位模式可以使用左对齐或右对齐。

2.2 触发源

DAC有三种触发转换方式:自动触发、软件触发和外部事件触发

2.3 输出电压

12位:DAC输出电压=(DORx/4096)·VREF+

8位:DAC输出电压=(DORx/256)·VREF+

3 DAC配置

3.1 DAC相关寄存器

寄存器

作用

位

功能

CR

控制DAC

0

0:失能DAC通道1

1:使能DAC通道1

1

0:使能输出缓冲器

1:失能输出缓冲器

2

0:禁用触发

1:使能触发

3 ~ 5

选择触发事件

12

0:禁用DMA模式

1:使能DMA模式

DAC_DHR12R1

储存数据

0 ~ 11

储存DAC通道1的12位右对齐数据

3.2 DAC配置步骤

1、初始化DAC:HAL_DAC_Init()

2、DAC MSP初始化:HAL_DAC_MspInit()

3、配置DAC通道参数:HAL_DAC_ConfigChannel()

4、启动D/A转换:HAL_DAC_Start()

5、设置输出数字量:HAL_DAC_SetValue()

6、读取通道输出数字量(可选):HAL_DAC_GetValue()

3.3 DAC相关函数

1、DAC初始化函数HAL_DAC_Init(),原型为

HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac)

其中初始化结构体hdac中的关键成员如下

DAC寄存器基地址:Instance

DAC工作状态:State

DAC锁定对象:Lock

通道1的DMA处理句柄:DMA_Handle1

通道2的DMA处理句柄:DMA_Handle2

2、DAC通道参数配置函数HAL_DAC_ConfigChannel(),原型为

HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef* hdac, DAC_ChannelConfTypeDef* sConfig, uint32_t Channel)

其中Channel为要配置的通道,可选值有DAC_CHANNEL_1或DAC_CHANNEL_2,sConfig为通道配置结构体,其关键成员如下

DAC触发源选择:DAC_Trigger

DAC通道输出缓冲区开关:DAC_OutpuBuffer

3、设置输出数据量函数HAL_DAC_SetValue(),函数原型为

HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef* hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data)

其中Data存放要写入的数字值,Alignment为数据对齐方式,可选值为

12位右对齐:DAC_ALIGN_12B_R

12位左对齐:DAC_ALIGN_12B_L

8位右对齐:DAC_ALIGN_8B_R

3 PWM

3.1 PWM简介

在实际应用中,对于DAC的需求往往高于两路,而外扩DAC则会使成本大幅增加,因此在精度要求不高的常昊可以使用PWM+RC滤波器的方法替代DAC输出。

PWM指的是周期固定,占空比可调的数字信号,可被分解为一个直流分量和一个占空比固定但是平均幅度为0的方波。

3.2 PWM配置步骤

1、生成PWM:配置MCU定时器,产生PWM波

2、搭建RC滤波器:利用RC滤波器将PWM方波平滑为直流

3.3 PWM参数

ARR:自动重装载寄存器的值

CRRx:捕获/比较寄存器x的值

PWM波的周期由ARR决定,占空比由CRRx决定。

posted @ 2026-08-19 15:53  老鼠学32  阅读(14)  评论(0)    收藏  举报