IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32基础12--数模转换(DAC) -> 正文阅读

[嵌入式]STM32基础12--数模转换(DAC)

目录

前言

DAC框图

功能需求

硬件电路

?STM32CubeMx配置DAC

功能代码实现?

串口输出


前言


? ? ? ? 在做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 \r\n",AD_Value);
         sprintf(str,"DAC Voltag : %f \r\n",(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输出的电压);

?

串口输出

?

?

?

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:53:52  更:2022-05-09 12:56:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 0:53:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码