在使用DAC时,不能直接对上述DORx寄存器写入数据,任何输出到DAC通道x的数据都必须写入到DHRx寄存器中(包含DHR8Rx、DHR12Lx等,根据数据对齐方向和分辨率的情况写入到对应的寄存器中)。
数据被写入到DHRx寄存器后,DAC会根据触发配置进行处理,若使用硬件触发,则DHRx中的数据会在3个APB1时钟周期后传输到DORx,DORx随之输出相应的模拟电压到输出通道;若DAC设置为外部事件触发,可以使用定时器(TIMx_TRGO)、EXTI_9信号或软件触发(SWTRIGx)这几种方式控制数据DAC转换的时机,例如使用定时器触发,配合不同时刻的DHRx数据,可实现DAC输出正弦波的功能。
DAC初始化结构体
typedef struct
{
uint32_t DAC_Trigger; // DAC触发方式
uint32_t DAC_OutputBuffer; // 是否使能输出缓冲器
} DAC_ChannelConfTypeDef;
DAC_Trigger
配置DAC的触发模式,当DAC产生相应的触发事件时,才会把DHRx寄存器的值转移到DORx寄存器中进行转换。触发模式有:
定时器触发模式(DAC_TRIGGER_T2/4/6/7_TRGO),使用定时器2/4/6/7控制DHRx寄存器的数据按时间转移到DORx寄存器中进行转换,利用这种方式可以输出特定的波形;
DAC_TRIGGER_EXT_