STM32-DAC输出实验(寄存器版)

单片机采用STM32F103VET6,大容量的STM32F103(256k)具备DAC功能

DAC说明

—DAC 外设有固定的输出通道,分别为 PA4 和 PA5

—通过向DHRx 寄存器写入数据,间接传递给DORx 寄存器,可以实现对DAC的输出功能。

—STM32的DAC支持8位/12位模式,8位模式时,固定为右对齐;12位模式时,可以设置为右对齐或左对齐方式。

—当DAC的参考电压为Vref+的时候,DAC输出电压范围为0-Vref+。在12位模式下,计算公式为:

DAC(out)=Vref*(DORx/4095)
 

 

寄存器配置

DAC CR寄存器低八位的常用配置如下:

代码

 DAC的配置相比较ADC简单很多,其简单代码配置如下:

void DAC_INIT(void)
{
RCC->APB2ENR|=1<<2; //使能 PORTA 时钟
GPIOA->CRL &= ~(0xf<<16);//配置PA4为模拟输入
	
RCC->APB1ENR|=1<<29; //使能 DAC 时钟

DAC->CR=0;//**初始化DAC
	
DAC->CR|=1<<0; //使能 DAC1
DAC->CR|=1<<1; //DAC1 输出缓存不使能 BOFF1=1

DAC->DHR12R1=0;//初始化电压数据寄存器
}

//配置电压值
void Dac_Vol(u16 vol)//输入的电压值0-3300,对应0-3.3v
{
float temp=vol;
temp/=1000;
temp=temp*4096/3.3; //计算 DAC 输出寄存器值
DAC->DHR12R1=temp;//向DHR12R1寄存器写入输出的电压值
}

 在主函数中调用函数,即可实现PA4 DAC引脚的电压输出。

实验结果

PS:由于野火开发板没有连接ADC与DAC引脚的跳帽,因此无法使用ADC来检测DAC输出,可以使用万用表或示波器直接测量。(有空用万用表测下试试。)

PS2:相比较而言,实际开发中多数采用外置DAC输出芯片来达成DAC输出,这样只需要普通IO口使用iic总线协议控制DAC芯片即可。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值