STM32-DAC

DAC

  • 前言
  • 一、理论介绍
  • 二、DAC代码
  • 三、实验结果
  • 总结


前言

前言写个参考吧
STM32 DAC+串口


一、理论介绍

DAC是数字模拟转换器(Digital to Analog Converter)的缩写,它是一种将数字信号转换为模拟信号的设备。在这里插入图片描述
在这里插入图片描述
RC有2个通道。
DAC的初始化

#include "DAC.h"void DAC_init()
{//开启时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//配置PA4、PA5为模拟输入//PA4 ==> DAC_Channel_1//PA5 ==> DAC_Channel_2GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN ;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);//DAC初始化DAC_InitTypeDef DAC_InitStructure; DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits11_0;DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;		//不使能缓存器[也就是电压跟随器],外部电路需要加功放//如果使能,可能会导致误差
//	DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;DAC_InitStructure.DAC_Trigger=DAC_Trigger_Software; //软件触发DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;		//不选择的波形发生器DAC_Init(DAC_Channel_1,&DAC_InitStructure);//使能DACDAC_Cmd(DAC_Channel_1,ENABLE);DAC_SetChannel1Data(DAC_Align_12b_R, 2048);			//分辨率为12位 右对齐 电压范围  0-4095//每个位表示一个电压级别,总共可以表示2^12=4096个不同的电压级别DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);		//软件使能转换}void Set_DAC1(float value)  
{float  value1;value1 = value*4095/3.3;	//DAC输出 = VREF x (DOR/4095)	printf("输入的数值:%.2f V\r\n", value);	//串口查看数据的真实数据,调试一大思路printf("运算后的:%.2f V\r\n", value1);
//	value= (float)temp * 4096 / 3.3;
//	value=temp*4095/3.3;		DAC_SetChannel1Data(DAC_Align_12b_R,value1);
}

主要需要解释的一个是DAC的初始化
在这里插入图片描述

  • 1、DAC_Trigger
    指定所选DAC通道的外部触发
    此参数的值可以是 @ref DAC_trigger_selection

    • 1.1 参数介绍
      在这里插入图片描述
      • 1.1.1 DAC_Trigger_None
        加载DAC1_DHRxxxx寄存器后,转换是自动的,而不是通过外部触发

      • 1.1.2 DAC_Trigger_T6_TRGO
        TIM6 TRGO 被选为 DAC 通道的外部转换触发器

      • 1.1.3 DAC_Trigger_T8_TRGO
        TIM8 TRGO 被选为 DAC 通道的外部转换触发器
        仅在高精度设备中

      • 1.1.4 DAC_Trigger_T3_TRGO
        TIM8 TRGO 被选为 DAC 通道的外部转换触发器,仅适用于连接线、中密度和低密度超值线设备.
        [不知道是不是芯片解释手册写的有问题这里T3的解释变成了T8的。。。。]

      • 1.1.5 DAC_Trigger_T7_TRGO
        TIM7 TRGO被选为DAC通道的外部转换触发器

      • 1.1.6 DAC_Trigger_T5_TRGO
        TIM5 TRGO被选为DAC通道的外部转换触发器

      • 1.1.6 DAC_Trigger_T15_TRGO
        TIM15 TRGO 被选为 DAC 通道的外部转换触发器
        仅适用于中密度和低密度超值生产线设备

      • 1.1.7 DAC_Trigger_T2_TRGO
        TIM2 TRGO 被选为 DAC 通道的外部转换触发器

      • 1.1.8 DAC_Trigger_T4_TRGO
        TIM4 TRGO 被选为 DAC 通道的外部转换触发器

      • 1.1.9 DAC_Trigger_Ext_IT9
        EXTI Line9 事件被选为 DAC 通道的外部转换触发器

      • 1.1.10 DAC_Trigger_Software
        通过DAC通道的软件触发器启动转换

  • 2、DAC_WaveGeneration
    指定DAC通道噪声波还是三角波
    是否生成,或者是否未生成波。
    此参数的值可以是 @ref DAC_wave_generation

  • 3、DAC_LFSRUnmask_TriangleAmplitude
    指定用于生成噪声波的 LFSR 模板或
    DAC通道的最大振幅三角形生成。
    此参数的值可以是 @ref DAC_lfsrunmask_triangleamplitude
    在这里插入图片描述
    这个参数,在不使用波形发生的时候一般不用,就是直接选DAC_LFSRUnmask_Bit0。

  • 4、 DAC_OutputBuffer
    指定是启用还是禁用DAC通道输出缓冲器,
    此参数的值可以是 @ref DAC_output_buffer

    • 4.1 参数介绍
      在这里插入图片描述
      STM32的这个输出缓存使能虽然使输出能力强,但却会导致输出实际电压无法到0V.所以,一般情况下大家都不让它使能的,但是如果使能会提高驱动能力。
      -内部电压电压跟随器,选择驱动能力会增强【参考前言的参考博文和以下的】
      STM32的DAC输出驱动电压

二、DAC代码

三、实验结果


总结

这篇文章依旧没有总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/675776.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【idea-sprongboot项目】在linux服务器上纯远程开发方式

继上一篇博客【idea-sprongboot项目】SSH连接云服务器进行远程开发-CSDN博客 目录 五、远程开发方式 2)纯远程开发方式 步骤 五、远程开发方式 2)纯远程开发方式 实现原理, 步骤 (1)首先,关闭当前正在…

【k8s多集群管理平台开发实践】八、client-go实现service读取列表、创建service、读取yaml配置并更新

文章目录 简介 一.k8s的service列表1.1.controllers控制器代码1.2.models模型代码 二.创建service2.1.controllers控制器代码2.2.models模分代码 三.读取和更新service的yaml配置3.1.controllers控制器代码3.2.models模型代码 四.路由设置4.1.路由设置 五.前端代码5.1.列表部分…

向各位请教一个问题

这是菜鸟上的一道题目,单单拿出来问问大家,看看能不能解惑 ,谢谢各位! 题目25:求12!3!...20!的和 解题思路:这个题不知道为什么我用DEV C 5.11显示出来为0.000000,可能版本有问题?&a…

人工智能|机器学习——强大的 Scikit-learn 可视化让模型说话

一、显示 API 简介 使用 utils.discovery.all_displays 查找可用的 API。 Sklearn 的utils.discovery.all_displays可以让你看到哪些类可以使用。 from sklearn.utils.discovery import all_displays displays all_displays() displays Scikit-learn (sklearn) 总是会在新版本…

小滴大课训练营-微服务架构-海量数据商用短链平台项目大课

小滴大课训练营-微服务架构-海量数据商用短链平台项目大课【2023最新升级版】 一、海量数据大课架构课程简介 海量数据项目大课,是小滴课堂准备耗时近1年的综合性实战项目,从0~1开发商用短链平台; 从产品需求文档定制出发,掌握核…

orbslam2基础

目录 一、 内容概要二、 orbslam2基础介绍三 、 orbslam2安装3.1 安装依赖3.2 安装orbslam23.3 下载Kitee数据集 四、 进行ORBSLAM2仿真五、 心得体会六、 参考链接 一、 内容概要 orbslam2基础介绍orbslam2安装orbslam2使用案例:orbslam2kitti数据集序列图像 二、…

ESP8266固件烧写

概述 因为手上有块闲置的ESP8266开发板,想着拿来倒腾一下WIFI探针,倒腾了一阵测试成功,博文记录用以备忘 硬件 ESP8266 NodeMCU 环境 Windows 11 步骤 1.下载esp32_win32_msys2_environment_and_toolchain-20181001.zip 2.下载xtensa…

scikit-learn实现单因子线性回归模型

1.是什么: 针对机器学习提供了数据预处理,分类,回归等常见算法的框架 2.基于scikit-learn求解线性回归的问题: 2.1.求解a,b对新数据进行预测: 2.2评估模型表现(y和y’的方差MSE)…

为什么会查询不到DNS信息?怎么排查?

DNS(域名系统)是将域名转换为相应 IP 地址的关键系统。查询 DNS 信息具有重要作用,通过查询 DNS 信息,我们可以知道域名对应的 IP 地址,这是最主要的信息,使设备能与目标服务器进行通信;其次是域…

Innodb实现的索引

概念 一种用于提高数据库查询性能的有序的数据结构。通过使用索引,数据库引擎可以快速定位到存储表中的特定数据,而不必逐行遍历整个表。在处理大量数据的时候可以显著加快数据检索的速度。 通过索引列队数据进行排序,降低数据排序的成本&a…

商家制作微信小程序有什么好处?微信小程序的制作有哪些步骤和流程

微信小程序全面指南 微信小程序是微信生态系统中一项革命性的功能,为希望与庞大的微信用户群体互动的企业提供了独特的融合便捷性和功能性的体验。本全面指南深入探讨了微信小程序的世界,强调了其重要性、工作原理以及实际用例,特别是针对企…

Llama 3 模型上下文长度扩展至1048K

AI苏妲己: Gradient AI 近日宣布,通过其创新的渐进式训练方法,成功将 Llama 3 系列模型的上下文长度扩展至超过100万令牌。 Llama 3 模型最初设计用于处理8000个令牌的上下文长度,这大约相当于6000字或10页文档。为了适应更长的…