STM32-DAC数模转换

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位  右对齐
}

猜你喜欢

转载自blog.csdn.net/weixin_42066185/article/details/87857143