stm32---DAC数模转换

DAC:数模转换器,即将数字量(数字123)转化为模拟量(电压值1v2v3v)。

STM32的DAC模块主要特点有:

① 2个DAC转换器2个输出通道,每个转换器对应1个输出通道
② 8位或者12位输出
③ 12位模式下数据左对齐或者右对齐 ,8位模式下数据右对齐
④ 同步更新功能
⑤ 噪声波形生成
⑥ 三角波形生成
⑦ 双DAC通道同时或者分别(独立)转换
⑧ 每个通道都有DMA功能

DAC模块框图

在这里插入图片描述
VDDA和VSSA为DAC模块模拟部分的供电。
Vref+则是DAC模块的参考电压,电压范围:2.4v<=Vref+<=VDDA(一般为3.3v)。
DAC_OUTx就是DAC的输出通道(DAC1对应PA4引脚,DAC2对应PA5引脚)。
框图流程:
1.设置数据格式为8位或12位。
2.写数据到DHR。
3.DHR自动将数据传入DORx(不能直接写DORx)。
4.外部事件或软件触发转换,将数字量转换为模拟量,一段时间后输出到对应引脚,下图解释为什么是一段时间。
在这里插入图片描述

DAC数据格式

每个DAC通道都有这三种模式:12位模式下数据左对齐或者右对齐 ,8位模式下数据右对齐,分别对应三种寄存器,使用时只需设置一种,设置后会将数据转存到DHR中,进而到DORx。

DAC输出电压和DOR的转换关系

在这里插入图片描述

DAC通道使能

DAC通道使能,只会使能DAC通道的模拟部分,不会使能数字部分,数字部分一直保持工作,即便没有使能。

使能DAC 输出缓存

由于DAC输出电压需要消耗一段时间,使能DAC输出缓存可以增加输出速度,但是没法输出0v电压。

====================================================================

DAC配置步骤(以DAC1为例):

1.开启PA口时钟,设置PA4为模拟输入
DAC本身是输出,为什么要设置端口为模拟输入呢?
因为一旦使能DAC通道,相应的GPIO (PA4,PA5)引脚会自动与DAC 的模拟输出相连,设置为输入,是为了避免额外的干扰和功耗。

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );	  //使能GPIOA通道时钟
    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 输出高

2.使能DAC1时钟

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE );	  //使能DAC通道时钟 

3.初始化DAC

	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

4.使能DAC 转换通道

	DAC_Cmd(DAC_Channel_1, ENABLE);  //使能DAC1

5.设置DAC的输出值(数据格式,以及赋值)

    DAC_SetChannel1Data(DAC_Align_12b_R, 0);  //12位右对齐数据格式设置DAC值
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值