1.STM32G474 DAC 简介
DAC模块是一个12位电压输出数模转换器。DAC可配置为8位或12位模式,并可与DMA控制器一起使用。在12位模式下,数据可以左对齐或右对齐。DAC最多有两个输出通道,每个通道都有自己的转换器。在双DAC通道模式下,当两个通道组合在一起进行同步更新操作时,转换可以独立完成,也可以同时完成。当DAC输出从输出pad断开连接到片上外设时,DACx_OUTy引脚可作为通用输入/输(GPIO)。DAC输出缓冲器可以选择启用以允许高驱动输出电流。
2.STM32G474 DAC主要特点
- 多达4个DAC接口,每个接口最多2个输出通道
- 12位模式的左或右数据对齐
- 同步更新功能
- 噪声波和三角波的产生
- 锯齿波
- 双DAC通道独立或同时转换
- 每个通道的DMA能力,包括DMA欠运行错误检测
- 双数据DMA能力,减少总线活动
- 转换的外部触发器
- DAC输出通道缓冲/非缓冲模式
- 缓冲抵消校准
- 缓冲偏移校准每个DAC输出都可以从DACx_OUTy输出引脚断开
- DAC输出连接到芯片外围设备
- 采样和保持模式为低功率运行在停止模式
- 输入基准电压,VREF
3 CubeMX配置(基于NUCLEO-G474RE)
3.1 DAC配置 (三角波 Triangular-wave )
3.2 定时器配置
由于DAC使用的是Timer 6 触发,配置Timer 6
将定时器频率设置为 4095 *2 = 8190 Hz,这样出来的三角波的频率就是1Hz;主要是为了方便观察波形。
4 代码
开启定时器和DAC
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start(&htim6);
HAL_DAC_Start(&hdac1,DAC_CHANNEL_1);
/* USER CODE END 2 */
获取DAC输出的数据,这里我没有做其他操作,直接while循环一直获取。其中dac1_val为全局变量,方便CubeMonitor观看波形。
dac1_val=HAL_DAC_GetValue(&hdac1,DAC_CHANNEL_1);