STM32 DAC 利用DMA和timer进行连续转化

话不多说,直接上配置。

开发环境,CubeMX5.6.1+IAR8.40.2+STM32L476RG

DAC channel1 (PA4)

Timer2触发

 

详细配置如下:

DAC:

STM32 DAC 利用DMA和timer进行连续转化

DMA:

STM32 DAC 利用DMA和timer进行连续转化

Timer:

STM32 DAC 利用DMA和timer进行连续转化

 

在初始化的时候,进行了DAC校准:

 HAL_DACEx_SelfCalibrate(&hdac1, &sConfig, DAC_CHANNEL_1);

这个的转化时间,大概是7ms左右。

Timer DAC DMA 初始化后,调用

 HAL_TIM_Base_Start(&htim2);
  HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1, (uint32_t *)Sine12bit, 32,DAC_ALIGN_12B_R);

即可实现连续转化。内部时钟稍有偏差,我们想要精准的输出频率最好还是用外部的晶振,可适当调整Timer的预加载值来调整。