当前位置: 首页 > news >正文

蓝桥杯嵌入式ADC与DAC(都不需要中断)

目录

1.原理图

(1)ADC的原理图

(2)DAC的原理图

2.STM32CubeMX的配置

(1)ADC的配置

(2)DAC配置

3.代码部分

(1)ADC代码

(2)DAC代码

1.原理图

(1)ADC的原理图

作用:将模拟信号转换为数字信号

转换的方法:逐次逼近型,将片内模拟量和一个数字量对应的模拟量比较,得到最接近的值

蓝桥杯嵌入式板子上有两个12位的ADC转换器,每一个ADC具有19个多路复用通道,结果存储在16位寄存器中 (因此16位多4位存在左对齐还是右对齐,DAC也是)

个人理解是STM32G431RBT6这个芯片可以处理这个信号,将它转换?(希望有人能告诉我这个转换是从哪里完成的,谢谢!)

(2)DAC的原理图 

作用:将数字信号转换成模拟信号

转换的方法:电流型DAC

蓝桥杯嵌入式板子的DAC模块是12位电压输出模数转换器,可配置为8或12位,两路输出通道

2.STM32CubeMX的配置

(1)ADC的配置

转换周期越短,精度越低,转换时间越长精度愈高

ADC转换时间计算公式为(转换周期+12.5(精度+0.5))*时钟周期

(2)DAC配置

连接到外部的引脚,不要连接到内部

3.代码部分

(1)ADC代码

关键函数:

HAL_ADC_Start(ADC_HandTypeDef *hadc)//开始转换
HAL_ADC_PollForConversion(ADC_HandTypedef *hadc,uint8_t Timeout)//等待完成
HAL_ADC_GetValue(ADC_HandTypedef *hadc)//获得转换结果
HAL_ADC_Stop(ADC_HandTypedef *hadc)//停止转换

代码的作用是获取当前值,按照需要再展示 

int R37=0,R38=0;
void get_adcvalue(void)
{HAL_ADC_Start(&hadc1);HAL_ADC_PollForConversion(&hadc1,10);R38 = HAL_ADC_GetValue(&hadc1);HAL_ADC_Stop(&hadc1);HAL_ADC_Start(&hadc2);HAL_ADC_PollForConversion(&hadc2,10);R37 = HAL_ADC_GetValue(&hadc2);HAL_ADC_Stop(&hadc2);
}

(2)DAC代码

关键函数

HAL_DAC_Start(DAC_HandTypeDef *hdac,uint8_t Channel)//开始通道转换,指定通道
HAL_DAC_SetValue(DAC_HandTypeDef *hdac,uint32_t Channel,uint32_t Alignment,uint32_t Dta)
HAL_DAC_Stop(DAC_HandTypeDef *hdac,uint32_t Channel)//停止转换

关键函数代码 

void set_dacvalue(float value1,float value2)
{int temp1 = (value1/3.3)*4096;HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,temp1);int temp2 = (value2/3.3)*4096;HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_2,DAC_ALIGN_12B_R,temp2);
}

http://www.lryc.cn/news/38332.html

相关文章:

  • 网络视频的防盗与破解
  • FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(二)
  • 接口中新增方法,接口应用和适配器设计模式
  • 自主HttpServer实现(C++实战项目)
  • 第26篇:Java数组API总结
  • [C++] 信号
  • 单片机——矩阵按键模块
  • Android学习之网络操作
  • Delphi XE开发android开发环境搭建
  • flink入门-流处理
  • 【数据结构】单链表中,如何实现 将链表中所有结点的链接方向“原地”逆转
  • 摘花生(简单DP)
  • 2022济南大学acm新生赛题解
  • 策略模式教程
  • 什么是刺猬理念
  • RPC通信相关
  • Node.js + MongoDB 搭建博客 -- 登录页面
  • 互联网新理念,对于WEB 3.0 你怎么看?
  • Git使用教程:最详细、最傻瓜、最浅显、真正手把手教
  • 【面试题】Redis面试题汇总(无解答)
  • RHCSA-用户和组管理和文件系统权限(3.11)
  • RK3588平台开发系列讲解(同步与互斥篇)信号量介绍
  • One-YOLOv5 v1.2.0发布:支持分类、检测、实例分割
  • Zookeeper的Java API操作
  • Web3:前端知识和后端知识基础
  • 调试射频TX和rx实验工程出现的问题与反思
  • 代码随想录刷题-数组总结篇
  • Qt读xml文件
  • Qt样式表
  • Docker与微服务实战2022