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决定。

浙公网安备 33010602011771号