单片机
返回首页

STM32基础12--数模转换(DAC)

2022-07-22 来源:csdn

前言


        在做51单片机项目时,如果需要对外围电路的压输出,往往会在51单片机上面外挂一个DAC转换芯片(例如DAC0808)。但在STM32F407中,不再需要这么干了,因为在STM32的内部就已经集成了DAC电路。


        STM32中,DAC 模块是 12 位电压输出数模转换器。DAC 可以按 8 位或 12 位模式进行配置,并且可与 DMA 控制器配合使用。在 12 位模式下,数据可以采用左对齐或右对齐。DAC 有两个输出 通道,每个通道各有一个转换器。在 DAC 双通道模式下,每个通道可以单独进行转换;当 两个通道组合在一起同步执行更新操作时,也可以同时进行转换。可通过一个输入参考电压

引脚 VREF+ (与 ADC 共享)来提高分辨率。


DAC框图

        DAC 输出是受 DORx 寄存器直接控制的,但是我们不能直接往DORx 寄存器写入数据,而是通过 DHRx 间接的传给 DORx 寄存器,实现对 DAC 输出的控制。 


         经过线性转换后,数字输入会转换为 0 到 VREF+ 之间的输出电压。

各 DAC 通道引脚的模拟输出电压通过以下公式确定:


                                DACoutput  =  (VREF /4095)*DOR 


功能需求

        1)DAC的参考电压采用 Vref  = 3.3V,通过设定DHR寄存器的值,改变DOR的值,从而改变DACOutput电压的输出;


        2)使用ADC1对DAC产生的电压进行测量;


        3)ADC测量的结果通过串口打印输出到PC端。


硬件电路

        在硬件电路中,PA4作为DAC的输出,而PA5作为ADC的输入。

 

 STM32CubeMx配置DAC

功能代码实现 

 STM32CubeMx生成初始化代码

ADC与DAC功能代码


       HAL_DAC_SetValue(&hdac,DAC1_CHANNEL_1,DAC_ALIGN_12B_R,2048);

      

       HAL_ADC_Start(&hadc1);  

       HAL_ADC_PollForConversion(&hadc1, 200);

 

       

       if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))

 

      {

 

          /*##-3- Get the converted value of regular channel  ######################*/

 

         AD_Value = HAL_ADC_GetValue(&hadc1);

         printf('AD_Value = %d rn',AD_Value);

         sprintf(str,'DAC Voltag : %f rn',(float)((AD_Value*3.3)/4096));

         HAL_UART_Transmit(&huart1,(uint8_t *)str,strlen((const char *)str),100);

 

      }

    

      HAL_Delay(1000);


         注:


        1)在HAL_DAC_SetValue的第3个参数是填写格式(这个格式需要与ADC的格式一直,否则会对电压解释错误);


        2)在HAL_DAC_SetValue的第4个参数是填写DHR的数值(该数值决定DAC输出的电压);


串口输出

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章