DAC简介
数字/模拟转换模块(DAC)是12位数字输入,电压输出的数字/模拟转换器。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。
配置流程
- 初始化时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);
- 初始化GPIO
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AIN;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
- 初始化DAC参数
DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽/幅值选择器,在使用波形发生器的时候才会使用
DAC_InitStruct.DAC_OutputBuffer=DAC_OutputBuffer_Disable;//是否使用输出缓冲 可以提高驱动力但是此时DAC将不能输出0V
DAC_InitStruct.DAC_Trigger=DAC_Trigger_None;//触发模式 不使用/定时器/外部触发/软件
DAC_InitStruct.DAC_WaveGeneration=DAC_WaveGeneration_None;//是否使用波形发生器 不使用/噪声/三角波
DAC_Init(DAC_Channel_1,&DAC_InitStruct);
DAC_Cmd(DAC_Channel_1,ENABLE);//使能DAC
- 配置DAC输出
void Set_DAC_Out(float voltage)
{
DAC_SetChannel1Data(DAC_Align_12b_R,voltage*4095/3.3);
}