1、基本介绍
核心框图
触发方式是硬件触发(3APB1),还是软件触发 (1 APB1) 触发时间是不同的
DAC_OUT 模拟输入模式,防止寄生电流的消耗(这个是一样的没必要设置成输出
设置输出电压的大小:
2、DAC的配置步骤
Step1 配置端口 DAC时钟
并不是配置了模拟输入 就不能输出
step2 初始化DAC的参数 对其进行一定的配置
下面是一个初始化DAC初始化函数的额例子
一般不使用DAC的输出缓存, 如果使用的话 输出不能为0 这样是很危险的,所以,一般我们都会选择在外部另外加入驱动
Step3 配置输出通道
其中的那个0 就是DOR的数值,用来直接控制输出的电压
void dac_init() //DAC³õʼ»¯
{
GPIO_InitTypeDef GPIO_InitStructure; //GPIO的结构体
DAC_InitTypeDef DAC_InitStructure;//DAC的结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); //开启GPIO和服用的宫鞥你
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE); //开启DAC时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;//DAC_1
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//设置成模拟输入
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_4);//Êä³ö¸ß
DAC_InitStructure.DAC_Trigger=DAC_Trigger_None;//不触发
DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None;//不使用波
//ÆÁ±Î ·ùÖµÉèÖÃ
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;
//关闭缓存
DAC_InitStructure.DAC_OutputBuffer=DAC_OutputBuffer_Disable;
DAC_Init(DAC_Channel_1,&DAC_InitStructure);//初始化通道1
DAC_Cmd(DAC_Channel_1,ENABLE);//使能channel1
DAC_SetChannel1Data(DAC_Align_12b_R,0);//12位 右对齐
}