STM32 DAC 利用DMA和timer进行连续转化
话不多说,直接上配置。
开发环境,CubeMX5.6.1+IAR8.40.2+STM32L476RG
DAC channel1 (PA4)
Timer2触发
详细配置如下:
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的预加载值来调整。