STM32的数字/模拟转换模块(DAC)是12位的数字输入,电压输出的数模转换器。虽然是12位的,可是也能够配置成8位的模式(即数字输入能够是12位或者8位)。它能够与DMA控制器配合使用。在12位数字输入模式时,数据的对齐方式能够左对齐或者右对齐,而8位模式在下是固定的右对齐(无需配置)。DAC模块有2个通道,每一个通道都是独立的,这也致使了DAC能够单通道独立使用,也能够双通道同时使用。2个通道分别对应的是PA4(1通道)、PA5(2通道)。缓存
DAC主要特性:函数
●2个DAC转换器,每一个转换器对应1个输出通道 spa
●8位或者12位单调输出 code
● 12位模式下数据左对齐或者右对齐ip
● 同步更新功能 开发
● 噪声波形生成 同步
● 三角波形生成 it
● 双DAC通道同时或者分别转换io
● 每一个通道都有DMA功能class
● 外部触发转换
● 输入参考电压VREF+
●转换时间,听说是1us
配置函数:
简单的使用DAC1功能。
#include "adc.h" void DAC1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; DAC_InitTypeDef DAC_InitType; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); //使能PORTA通道时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); //使能DAC通道时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; // 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_4) ;//PA.4 输出高 DAC_InitType.DAC_Trigger=DAC_Trigger_None; //不使用触发功能 TEN1=0 DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_None;//不使用波形发生 DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽、幅值设置 DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ; //DAC1输出缓存关闭 BOFF1=1 DAC_Init(DAC_Channel_1,&DAC_InitType); //初始化DAC通道1 DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC1 DAC_SetChannel1Data(DAC_Align_12b_R, 0); //12位右对齐数据格式设置DAC值 } //设置通道1输出电压 //vol:0~3300,表明0~3.3V void DAC1_Set_Vol(u16 vol) { float temp=vol; temp/=1000; temp=temp*4096/3.3; DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12位右对齐数据格式设置DAC值 }
用起来比较方便,初始化一下直接调用DAC1_Set_Vol()函数就好了。
参考战舰开发板资料。