0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

arm自带的adc电压检测

分享:

ARM处理器中集成的ADC(模数转换器)模块可以用于电压检测,以下是关键要点和操作流程:


1. 基本原理

  • ADC作用:将模拟电压(如传感器信号)转换为数字值,供处理器处理。
  • 分辨率:常见为12位(如STM32),输出值范围0~4095(2^12)。
  • 参考电压(VREF):决定测量范围,可能是芯片供电电压(如3.3V)或独立外部参考源。

2. 核心配置步骤

硬件准备

  • 将待测信号连接到MCU的ADC输入引脚(如STM32的PA0~PA7)。
  • 确保参考电压稳定(例如:外部VREF+接3.3V,VREF-接地)。

软件配置

  1. 初始化ADC时钟:使能ADC和对应GPIO的时钟。
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
  2. 配置GPIO为模拟输入
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;  // STM32模式
  3. 校准ADC(提高精度):
    ADC_CalibrationStart(ADC1);
    while(ADC_IsCalibrationOngoing(ADC1));
  4. 设置ADC参数
    • 分辨率(12位/10位)
    • 采样时间(根据信号阻抗调整,如239.5周期)
    • 连续/单次转换模式
      ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;
      ADC_InitStruct.ADC_ContinuousConvMode = DISABLE; // 单次模式
  5. 选择输入通道
    ADC_ChannelConfig(ADC1, ADC_Channel_0, ADC_SampleTime_239Cycles5);

3. 读取电压值

  • 启动转换并读取
    ADC_StartConversion(ADC1);
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); // 等待转换完成
    uint16_t adc_value = ADC_GetConversionValue(ADC1);
  • 计算实际电压
    float voltage = (adc_value * VREF) / 4095.0f; // 12位分辨率公式
    • 若VREF=3.3V,则每个数字量对应约0.8mV。

4. 注意事项

  • 抗噪声设计
    • 在ADC引脚增加0.1μF滤波电容。
    • 使用软件滤波(如滑动平均)。
  • 参考电压选择
    • 若需要高精度,使用外部基准源(如TL431)。
    • 避免电源波动影响VREF。
  • 采样时间优化
    • 高阻抗信号源需延长采样时间(如STM32的ADC_SampleTime_239Cycles5)。

5. 调试技巧

  • 用万用表测量实际电压,与代码结果对比。
  • 测试已知电压(如分压电阻)验证ADC线性度。
  • 检查电源和地线是否稳定,避免共模噪声。

示例代码(STM32 HAL库)

// 初始化ADC1通道0
ADC_HandleTypeDef hadc;
hadc.Instance = ADC1;
hadc.Init.Resolution = ADC_RESOLUTION_12B;
hadc.Init.ContinuousConvMode = DISABLE;
HAL_ADC_Init(&hadc);

// 读取电压
HAL_ADC_Start(&hadc);
if (HAL_ADC_PollForConversion(&hadc, 100) == HAL_OK) {
    uint16_t adc_val = HAL_ADC_GetValue(&hadc);
    float voltage = (adc_val * 3.3f) / 4095.0f;
}

通过以上步骤,可快速实现ARM芯片的ADC电压检测。具体寄存器配置需参考芯片手册(如《STM32 Reference Manual》)。

ADC检测输入电压

PC0--ADC检测输入电压--端子链接底板--底板在电源入口接入ADC

ht_liu 2021-12-28 06:18:26

STM32 ADC如何检测电路电流或电压

STM32 ADC如何检测电路电流或电压

新星之火12138 2021-11-16 07:55:33

如何操作ADC去读取电压

本文简单介绍如何操作ADC去读取电压,并且实现开发板上3个ADC按键检测的功能。

2022-03-02 17:51:48

如何使用stm32Cubemx软件配置DAC电压输出和ADC电压检测

stm32Cubemx实用篇(三):DAC电压输出和ADC电压检测本章将介绍使用stm32Cubemx软件配置DAC电压输出和ADC电压检测。最终将两个引脚连接起来通过一个ADC功能引脚测量另一个

凤求凰 2022-01-21 07:48:34

ADC触摸检测的原理及其使用

目录ADC触摸检测原理ADC的使用触摸检测程序设计ADC触摸检测原理  ADC内部电容Chold与外部引脚所接电容Csensor并联,等效电容为二者之和。首先将内部电容Chold充电,将外接

百合子 2021-11-24 07:37:10

CH571F自带的温度测量通过ADC模块得到电压后如何转换到温度,有没有转换公式?

CH571F自带的温度测量通过ADC模块得到电压后如何转换到温度,有没有转换公式?

lwddd2100 2022-09-05 06:32:11

怎样使用ADC检测按键输入引脚的电压值呢

本 demo 主要介绍一个基于 ADC 的按键功能,使用 ADC 检测按键输入引脚的电压值,根据不同的分压值判断相应的按键是否按下硬件连接本 demo 基于 BL706_AVB 开发板,连接方式如下

CDCNKA 2022-07-13 16:22:03

STM32F03自带ADC功能

前言学习了之后才知道原来STM32F03自带ADC功能还是挺强大的,10位ADC,一次可以扫描16个通道。还可以使用DMA来读取转换结果,最重要的是不用加ADC外设了。ADC知识点多的就不

发烧友推温针 2021-07-23 07:01:44

高压ADC检测

高压ADC检测----​如果R46断路或者没焊接,那么VH_ADC电压是24V,很有可能吧MCU立马击穿,有没有办法改善?加一个限流电阻?这个只解决了电流的问题啊

QWE4562009 2022-01-27 15:42:42

如何在ARM7-LPC2148中使用ADC

在本教程中,我们将了解如何在 ARM7-LPC2148 中使用 ADC,方法是向模拟引脚提供不同的电压,并在模数转换后将其显示在16x2 LCD 屏幕上。

2022-09-23 17:02:39

采样定理-------------被检测信号和ADC采样率的关系?

采样定理-------------被检测信号和ADC采样率的关系?由于盆底肌肉的电信号的频率在 20Hz~500Hz 之间, 所以根据采样定理--------------------------则

QWE4562009 2022-05-12 16:43:05

如何利用STM32F10x芯片多路ADC检测电压

STM32F10x系列芯片ADC通道和引脚的对应关系是怎样的?如何利用STM32F10x芯片多路ADC检测电压呢?

iwuwjgj 2021-12-13 07:44:21

MCU自带ADC采样精度有没有可以做到毫伏的?

MCU自带ADC采样精度,有没有可以做到毫伏的?

hanyan533 2023-11-07 07:15:31

第12章-ADC采集电压和显示 基于STM32的ADC电压采集(详细讲解+HAL库)

第12章-ADC采集电压和显示 基于STM32的ADC电压采集(详细讲解+HAL库)

2024-08-21 16:31:34

如何利用ADC检测STM32单片机实际的电压值呢

如何利用ADC检测STM32单片机实际的电压值呢?有什么方法吗?

hsdfaz 2021-11-15 07:24:10

多个ADC的基准电压

具有多个模数转换器(ADC)的系统可实现的精度直接取决于施加到ADC的基准电压。例如,医疗超声成像系统通常在接收器的波束成形器电子设备中包括大量ADC,通常按16、24、32等分组组织。最大光束精度

2023-02-25 10:51:36

输入输出电压检测电路和输出电流检测电路详解

输入输出电压通过运放LMC6482采用差分电路将输出电压按比例缩小至ADC能够采样的范围,再使用ADC采样,软件解算出输出电压。输入电压采样是通过MCU内部运放按比例缩小在送到ADC进行采样的,具体电路如图3.5.1所示。输出电压检测电路如图3.4.1所示。

2023-03-30 10:17:56

如何才能让ADC sar高检测中断不被触发?

大家好,我在我的PSoC4100系列上使用ADC SAR SEQ来检测高电流。当ADC检测电压超过其极限时,我希望中断触发。我不希望中断不断触发检查ADC寄存器(它目前正在做)。下面是中断例程

tracyli1991 2019-10-29 08:41:01

ADC——电压采集

ADC即模拟数字转换器,ADC英文全称(Analog-to-digital converter), 是一种用于将模拟电压的连续信号转换为离散的数字信号。就比如我们可以将我们生活中的温度、压力、声音这样的模拟信号通过ADC转化为我们可以通过单片机处理的数字信号。

2023-02-15 15:52:41

ADAU1450通过AUX ADC检测电压值,如何使用ReadBack模块读取,他们的对应关系是怎样的?

ADAU1450通过AUX ADC 检测电压值,如何使用 ReadBack 模块读取,他们的对应关系是怎样的。 比如,AUX ADC 脚1Vdc,对应的ReadBack(8.24 格式或32.0格式)是多少? 谢谢!

lalajie 2023-11-28 06:52:31

做一个正负4V的电压检测,需要用到16位的ADC,如何选择ADC

目前项目中做一个正负4V的电压检测,需要用到16位的ADC,请帮忙选型。因为正负采样第一次做,所以没一点头绪。

熊本熊 2023-12-12 06:14:55

通过STM32CubeMX软件配置芯片自带ADC采集功能

ADC采集功能,通过自带ADC轮询采集八路,并处理原始值验证采集效果。ADC简介实验用的STM32F767IGT6的芯片拥有3 个 ADC,这些 ADC 可以独立使用,也可以使用双重/三重模式

juju宇哥 2021-08-12 07:42:59

adc0809输入电压范围 adc0809和adc0808区别

道数和引脚配置上有所不同。 ADC0809输入电压范围 ADC0809是一款8位逐次逼近型ADC,其输入电压范围通常由其参考电压(Vref)决定。ADC0809的输入电压范围是从0V到Vref。这意味着,如果参考电压设置为5V,那么ADC0809可以处理从0V到5V的模拟输入信号。这个范围可以通

2024-10-21 09:30:58

单片机adc监测电压进行断电检测的时候悬浮时乱跳怎么办?

adc监测电压监测断电的时候,检测电压悬浮时乱跳,如何接地阿,可是这时候已经断电了不能接地了怎么办

wang21cj 2023-11-06 06:21:51

怎样使用stm32f103rct6和ADC去实现一种电池电压检测

怎样使用stm32f103rct6和ADC去实现一种电池电压检测呢?

小马哥996 2022-02-17 07:59:42

电压检测芯片的工作原理 电源电压检测芯片的构成

电压检测芯片的工作原理 电源电压检测芯片的构成  电压检测芯片是一种常用的电子元件,用于监测电源电压的变化并提供相应的反馈信号。它在电子设备中起到了至关重要的作用,保护了电路不受过高或过低电压的损害

2023-11-09 09:36:41

用stm32自带的内部adc操作示波器制作

从零开始示波器准备用stm32自带的内部adc操作原理:1.adc采集数据2.刷新屏幕3.循环注意:lcd屏幕刷新速度远比adc采集数据速度慢很多大体思路准备上最近刚学的FreeRTOS,分为这三个

宜家 2021-12-01 07:14:09

CTSD精密ADC:轻松驱动ADC输入和基准电压源,简化信号链设计

本文重点介绍新型连续时间Sigma-Delta (CTSD)精密ADC最重要的架构特性之一:轻松驱动阻性输入和基准电压源。实现最佳信号链性能的关键是确保其与ADC接口时输入源或基准电压源本身不被破坏

2023-06-16 10:24:42

ADC支持采样频率受供电电压影响

间断模式下进行。ADC的结果存储在左对齐或右对齐的16位数据寄存器中。模拟看门狗功能允许应用程序检测输入电压是否超过用户定义的、更高或更低的阈值。

2020-07-09 14:32:20

怎样使用STM32F4单片机自带ADC对信号进行采样呢

怎样使用STM32F4单片机自带ADC对信号进行采样呢?有哪些步骤?

caoguiqun 2022-01-26 08:19:43

加载更多
相关标签