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

BearPi Std 板从入门到放弃 - 引气入体篇(8)(ADC)

简介

基于前面的文章, 缩略STM32CubeMx创建项目的过程,直接添加ADC相关初	始化;
开发板 : Bearpi Std(小熊派标准板)
主芯片: STM32L431RCT6
LED :  PC13 \ 推挽输出即可 \ 高电平点亮 
串口:  Usart1
ADC1:  PC2

步骤

  1. 创建STM32CubeMX
    LED/串口
  2. ADC1初始化
    a. 设置ADC1 通道3单通道输入
    在这里插入图片描述
    b. 设置ADC时钟
    在这里插入图片描述
    c. ADC1 配置
    添加DMA设置
    在这里插入图片描述

采样设置
12bit 采样 / 连续转换启用 / DMA启用
在这里插入图片描述
采样速率
在这里插入图片描述

  1. 生成工程 BearPi_ADC14. 加入用户代码

int main()
{
/* USER CODE BEGIN 1 */
	int16_t adcValue = 0; 
	float voltage = 0.0;
  /* USER CODE END 1 */
	...
  /* USER CODE BEGIN 2 */
	HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&adcValue, 1); // 开启ADC 采样
  /* USER CODE END 2 */

/* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		voltage = adcValue * 3.3 / 4096;
		printf("ADCValue: %d, ADCValue: %f\r\n", adcValue, voltage);
		HAL_Delay(1000);
  }
  /* USER CODE END 3 */
  ...
}

/* USER CODE BEGIN 4 */
/* 采样回调 */
void  HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
  if(hadc->Instance == ADC1)
  {
    HAL_GPIO_TogglePin(USER_LED_GPIO_Port, USER_LED_Pin);
  }
}

/* USER CODE END 4 */

前言后说

Vout = Vref * (D / 2^n)
其中Vref代表参考电压,
n为DAC的位数,
D为DAC输入的数字信号。
例如,假设有一个12位分辨率的DAC,参考电压为5V,那么当输入的数字信号为4095(即二进制的111111111111)时,
输出电压应为:Vout = 5V * (4095 / 2^12) = 2.5V。这是因为在这个例子中,
12位DAC的分辨率是2^12,所以最大的输入数字信号是2^12-1=4095。
当输入的数字信号小于最大值时,输出电压会随着输入信号的增大而线性增大;
当输入的数字信号大于最大值时,输出电压将会保持在最大值不变。

本例是12位DAC的分辨率, 且芯片引用电压是3.3V : 公式为 Vout = 3.3 * D / 4095

完整BearPi_ADC1代码


http://www.kler.cn/news/160646.html

相关文章:

  • 第三方支付通道的优势之(二)-----代扣
  • 【C++】时间time库
  • Stm32_串口的帧(不定长)数据接收
  • 在Linux系统中更换yum源为阿里云
  • postgreSql存储jsonb
  • GitLab发展史,这一篇你知道就够了
  • sqlite - sqlite3_exec - c++回调函数的处理
  • 要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 14 章:受控生成提示
  • 浅谈web性能测试
  • Python实现FA萤火虫优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战
  • 深度学习——第2章 深度学习开发环境搭建
  • Centos7安装GItLab(在线版)
  • LangChain 22 LangServe用于一键部署LangChain应用程序
  • ubuntu 18.04 pycharm安装
  • 前端使用插件预览pdf、docx、xlsx、pptx格式文件
  • Python之random和string库学习
  • XIAO ESP32S3之AI教程
  • 外包干了一个月,技术明显进步。。。。。
  • 如何5分钟用ChatGPT分析大厂的最新动向?判断最新发展趋势
  • Nginx配置反向代理与负载均衡
  • elasticsearch 是如何实现 master 选举的?
  • UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
  • Android studio 工程的 module 依赖关系图绘制 、 Android Module 依赖关系的可视化实现
  • Nginx的反向代理与负载均衡
  • 人工智能学习8(集成学习之xgboost)
  • 配置和管理VLAN
  • 探究Spring Boot 中实现跨域的几种方式
  • 基因名潘多拉
  • 编程应用实例,养生馆会员管理系统软件统计查询教程
  • 制作飞腾(arm)芯片架构的nexus镜像