STM32DAC应用

DAC原理

  数字输入经过DAC被线性地转换为模拟电压输出,其范围为0到VREF+。

  任一DAC通道引脚上的输出电压满足下面的关系: DAC输出 = VREF x (DOR / 4095)

 

STM32DAC库函数配置

1.开启PA口和DAC时钟,设置PA4为模拟输入

GPIO_InitTypeDef

GPIO_InitStructure; //开启PA口和DAC时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );//使能PA口时钟

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

//设置PA4为模拟输入 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);

2.初始化DAC,设置DAC的工作模式

DAC_InitTypeDef DAC_InitType;

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 输出缓存关闭

DAC_Init(DAC_Channel_1,&DAC_InitType); //初始化 DAC 通道 1

 

第一个参数 DAC_Trigger 用来设置是否使用触发功能,前面已经讲解过这个的含义,这里我们不是用触发功能,所以值为 DAC_Trigger_None。

第二个参数 DAC_WaveGeneratio 用来设置是否使用波形发生,这里我们前面同样讲解过不使用。所以值为 DAC_WaveGeneration_None。

第三个参数 DAC_LFSRUnmask_TriangleAmplitude 用来设置屏蔽/幅值选择器,这个变量只在使用波形发生器的时候才有用,这里我们设置为 0 即可,值为DAC_LFSRUnmask_Bit0。

第四个参数 DAC_OutputBuffer 是用来设置输出缓存控制位。

3.使能DAC转换通道

DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC通道1

4.设置DAC的输出值

设置DAC的输出值:void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data)

第一个参数设置对齐方式。可以为:
    12位右对齐DAC_Align_12b_R,
    12位左对齐DAC_Align_12b_L,
    8位右对齐DAC_Align_8b_R方式。
第二个参数就是DAC的输入值了。

读出DAC的数值:uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel)

 

 

 

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机电侠克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值