VDDA 和 VSSA 为 DAC 模块模拟部分的供电,而 Vref+则是 DAC 模块的参考电压。DAC_OUTx 就是 DAC 的
输出通道了 (对应 PA4 或者 PA5 引脚)。
由第一张图可知,要让DAC工作,必须要设置该寄存器。
要配置DAC,则要5步完成:
1)开启 PA 口时钟,设置 PA4 为模拟输入。
2)使能 DAC1 时钟。
3) 初始化 DAC,设置 DAC 的工作模式。
4)使能 DAC 转换通道
5) 设置 DAC 的输出值。
1 void Dac1_Init(void) 2 { 3 4 GPIO_InitTypeDef GPIO_InitStructure; 5 DAC_InitTypeDef DAC_InitType; 6 7 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); //使能PORTA通道时钟 8 RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); //使能DAC通道时钟 9 10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; // 端口配置 11 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入 12 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 13 GPIO_Init(GPIOA, &GPIO_InitStructure); 14 GPIO_SetBits(GPIOA,GPIO_Pin_4) ;//PA.4 输出高 15 16 DAC_InitType.DAC_Trigger=DAC_Trigger_None; //不使用触发功能 TEN1=0 17 DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_None;//不使用波形发生 18 DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽、幅值设置 19 DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ; //DAC1输出缓存关闭 BOFF1=1 20 DAC_Init(DAC_Channel_1,&DAC_InitType); //初始化DAC通道1 21 22 DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC1 23 24 DAC_SetChannel1Data(DAC_Align_12b_R, 0); //12位右对齐数据格式设置DAC值 25 26 } 27 28 //设置通道1输出电压 29 //vol:0~3300,代表0~3.3V 30 void Dac1_Set_Vol(u16 vol) 31 { 32 float temp=vol; 33 temp/=1000; 34 temp=temp*4096/3.3; 35 DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12位右对齐数据格式设置DAC值 36 }
知识来源:STM32F1 开发指南