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_2
	GPIO_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);
	
	//使能DAC
	DAC_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代码

三、实验结果


总结

这篇文章依旧没有总结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3专栏项目 -- 一、第一个页面(上)

一、ColumnList 组件(专栏列表组件)编码: 该组件要接收一个数组,数组中是一个个专栏数据,数据中包括id、title、avator、description。所以我们定义一个泛型,泛型为id为number类型title为string类型如下这…

【从零开始学架构 架构基础】架构设计的本质、历史背景和目的

本文是《从零开始学架构》的第一篇学习笔记,主要理解架构的设计的本质定义、历史背景以及目的。 架构设计的本质 分别从三组概念的区别来理解架构设计。 系统与子系统 什么是系统,系统泛指由一群有关联的个体组成,根据某种规则运作&#…

VS Code安装通义灵码插件

搜索通义灵码插件 当编写完部分代码后,会出现通义灵码的图标,点击该图标,可以选择补全代码。 之后需要登录阿里云账号 返回vscode 在左下角输入框输入提出的问题“合并两个数组”,回车显示问题的答案。

简单了解泛型

基本数据类型和对应的包装类 在Java中, 基本数据类型不是继承自Object, 为了在泛型代码中可以支持基本类型, Java给每个基本类型都对应了一个包装类型. 简单来说就是让基本数据类型也能面向对象.基本数据类型可以使用很多方法, 这就必须让它变成类. 基本数据类型对定的包装类…

免费思维13招之一:体验型思维

思维01:体验型思维 第一大战略:体验型思维。 体验型思维是免费思维中最简单的思维,我们先从最简单的讲起,由简入繁,简单的我们少讲,复杂的我们多讲。 那么,什么是体验型思维呢? 很简单,就是先让客户进行体验,再进行成交的方式。这一种思维,具体的可以分为两种:…

yolo world 瑞芯微芯片rknn部署、地平线芯片Horizon部署、TensorRT部署

特别说明:参考官方开源的 yoloworld 代码、瑞芯微官方文档、地平线的官方文档,如有侵权告知删,谢谢。 模型和完整仿真测试代码,放在github上参考链接 模型和代码。 yoloworld出来的有一段时间了,还没有盘到板端上玩一玩…

IJCAI 2024:吉林大学、中国科学院计算技术研究所和自动化研究所等揭示数据增强在开放场景下的“两面性”

吉林大学人工智能学院研究员高一星、中国科学院计算技术研究所副研究员唐帆、中国科学院自动化研究所研究员董未名等在人工智能领域的CCF-A类顶级国际会议IJCAI上发表的工作,揭示并分析基于样本混合的数据增强方法在开放场景下存在的问题,提出了基于非对…

《安富莱嵌入式周报》第336期:开源计算器,交流欧姆表,高性能开源BLDC控制器,Matlab2024a,操作系统漏洞排名,微软开源MS-DOS V4.0

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 本周更新一期视频教程: BSP视频教程第30期:UDS ISO14229统一诊断服务CAN总线专题,常…

C++:多态-虚函数

C 中的多态性是面向对象编程中的一个重要概念,它允许在运行时选择不同的函数实现,以适应不同类型的对象。 多态的种类 编译时多态性(Compile-time Polymorphism):也称为静态多态性或早期绑定,指在编译时确…

java.lang.Exception: Test class should have exactly one public zero-

1.原因 Test方法所在类中,不能存在有参数构造函数,无参构造可以存在。JUnit在运行测试之前,会对测试类做一些初始化和验证工作。对于普通的非参数化测试,JUnit期望测试类有一个无参的公共构造函数,这样它才能够实例化测试类并执行其中的测试方…

K8S快速入门

K8S快速入门 在学习k8s的过程,虽然官网给出的示例教程很简单,但是由于网络和环境的差异,导致实际操作的时候踩了很多坑,下面记录一下自己的操作步骤,方便需要的人参考,也方便以后的自己。 参考官网的资料…

uni-app+vue3 +uni.connectSocket 使用websocket

前言 最近在uni-appvue3websocket实现聊天功能,在使用websocket还是遇到很多问题 这次因为是app手机应用,就没有使用websocket对象,使用的是uni-app的uni.connectSocket 为了方便测试这次用的是node.js一个简单的dom,来联调模拟…

五分钟解决Springboot整合Mybaties

SpringBoot整合Mybaties 创建maven工程整合mybaties逆向代码生成 创建maven工程 1.通过idea创建maven工程如下图 2.生成的工程如下 以上我们就完成了一个maven工程,接下来我们改造成springboot项目。 这里主要分为三步:添加依赖,增加配置&…

Spring_概述

Spring 官网Spring Framework(Spring)文档位置重点内容Overview 官网 Spring官网 Spring Framework(Spring) 文档位置 重点 IoC容器AOP:面向切面编程AOT:ahead of time,提前编译Web 框架&…

20240507 ubuntu20.04+ros noetic 跑通lioslam

任务:跑通lioslam 主要参考博客 IMU激光雷达融合使用LIO-SAM建图学习笔记——详细、长文、多图、全流程_ubuntu_AIDE回归线-GitCode 开源社区 (csdn.net) 1.不要用这一句 wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2…

电商大数据的采集||电商大数据关键技术【基于Python】

.电商大数据采集API 什么是大数据? 1.大数据的概念 大数据即字面意思,大量数据。那么这个数据量大到多少才算大数据喃?通常,当数据量达到TB乃至PB级别时,传统的关系型数据库在处理能力、存储效率或查询性能上可能会遇…

Mac idea gradle解决异常: SSL peer shut down incorrectly

系统:mac 软件:idea 解决异常: SSL peer shut down incorrectly 查看有没有安装 gradle -v安装 根据项目gradle提示安装版本 brew install gradle7idea的配置 在settings搜索gradle,配置Local installation,选择自己的安装目录…

c++编程(10)——string

欢迎来到博主的专栏——c编程 博主ID&#xff1a;代码小豪 文章目录 <string>string类的接口构造、析构、与赋值重载构造函数赋值重载运算符 元素访问operator[] 容量修改器对string对象的操作迭代器 std::string是定义在c标准的一个类&#xff0c;定义在标准库<strin…

【SAP ME 34】POD操作面板打开内部异常500内部异常

解决方案&#xff1a; 切换到configtool目录&#xff0c;打开configtool可执行文件

win10使用问题

ThinkPad进入bios一种方式是F1 win10有了一个BitLocker&#xff0c;所以在更改bios里面的一些设置&#xff0c;会要求输入恢复密钥&#xff0c;才能生效。 恢复密钥在Microsoft账户里可以找到。 1. 坑爹的Secure Boot设置 坑爹的Secure Boot设置 - 简书 2. 在安装昆仑通态…