STM32 AD值不对
STM32 AD值不对
当STM32的ADC采样值不准确时,可能是硬件、软件或配置问题导致的。以下是常见原因及解决方法:
1. 硬件问题
-
参考电压(VREF)不稳定:
- 检查VDDA(模拟电源)和VSSA(模拟地)的连接,确保电压稳定(通常为3.3V)。
- 在VDDA和VSSA之间并联 10μF + 0.1μF电容 滤波。
- 若使用外部参考电压(如VREF+引脚),确保其精确且低噪声。
-
信号源阻抗过高:
- ADC输入端阻抗应 ≤10kΩ。若信号源阻抗高(如分压电路),需增加 电压跟随器(运放) 或减小电阻值。
- 在ADC输入引脚与地之间添加 100pF~1nF电容(抑制高频干扰)。
-
PCB布局问题:
- 模拟信号走线远离数字信号(如时钟、PWM)。
- 使用独立模拟地平面,并通过单点连接数字地。
2. 配置问题
-
采样时间不足:
- 高阻抗信号源需要更长的采样时间。例如:
hadc.Init.SamplingTime = ADC_SAMPLETIME_480CYCLES; // 延长采样时间 - 规则:信号源阻抗越高,采样时间需越长(详见芯片手册的
t_SAMPLE参数)。
- 高阻抗信号源需要更长的采样时间。例如:
-
ADC时钟频率过高:
- 确保ADC时钟(ADCCLK)不超过芯片允许的最大值(如STM32F1为14MHz):
RCC_PeriphCLKInitTypeDef adc_clk; adc_clk.AdcClockSelection = RCC_ADCPCLK2_DIV6; // 分频系数(根据系统时钟调整) HAL_RCCEx_PeriphCLKConfig(&adc_clk);
- 确保ADC时钟(ADCCLK)不超过芯片允许的最大值(如STM32F1为14MHz):
-
未校准ADC:
- 上电后执行一次校准:
HAL_ADCEx_Calibration_Start(&hadc); // 执行校准
- 上电后执行一次校准:
3. 软件问题
-
未开启ADC校准:
// 初始化步骤 hadc.Instance = ADC1; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; hadc.Init.ScanConvMode = DISABLE; // ...其他配置 HAL_ADC_Init(&hadc); HAL_ADCEx_Calibration_Start(&hadc); // 必须校准! -
读取数据时机错误:
- 等待转换完成再读取:
HAL_ADC_Start(&hadc); // 启动转换 if (HAL_ADC_PollForConversion(&hadc, 10) == HAL_OK) { uint16_t adc_val = HAL_ADC_GetValue(&hadc); // 读取值 }
- 等待转换完成再读取:
-
数据对齐方式:
- 确保对齐方式与读取一致(通常为右对齐):
hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; // 默认右对齐
- 确保对齐方式与读取一致(通常为右对齐):
-
多通道采样时序:
- 多通道扫描时,需配置通道顺序和采样时间数组:
ADC_ChannelConfTypeDef sConfig; sConfig.Channel = ADC_CHANNEL_0; sConfig.Rank = 1; sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; HAL_ADC_ConfigChannel(&hadc, &sConfig);
- 多通道扫描时,需配置通道顺序和采样时间数组:
4. 干扰与噪声
-
软件滤波:
- 多次采样取平均:
uint32_t sum = 0; for (int i = 0; i < 16; i++) { HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc, 100); sum += HAL_ADC_GetValue(&hadc); } uint16_t adc_avg = sum >> 4; // 16次平均
- 多次采样取平均:
-
禁用其他外设:
- 转换期间关闭高噪声外设(如PWM、SPI)。
5. 其他检查
-
引脚配置:
- 确保ADC引脚配置为模拟模式:
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; // 关键!
- 确保ADC引脚配置为模拟模式:
-
电源电压:
- 用万用表测量VDDA实际电压,若低于3.3V,可能导致ADC值偏高。
-
芯片温度:
- 高温下ADC误差增大,必要时启用内部温度传感器校准。
排查步骤总结
- 硬件检查:测量VDDA电压,检查滤波电容和信号源阻抗。
- 配置校准:延长采样时间、降低ADCCLK、执行
HAL_ADCEx_Calibration_Start()。 - 软件优化:添加平均值滤波,确保正确读取数据。
- 环境测试:断开无关外设,排除噪声干扰。
通过逐步排查,通常可解决90%的ADC精度问题。如仍异常,建议用示波器观察输入信号波形和电压稳定性。
STM32采集ADC128S022选择4路通道电压值就不对了,采集一路0通道是对的,精度0.0几个毫伏,为什么?
STM32采集ADC128S022我选择4路通道电压值就不对了,采集一路0通道是对的,精度0.0几个毫伏
用stm32作为主控去读ADS1198的通道数据值,ADS1198读取数据值不正确的原因?
用stm32作为主控去读ADS1198的通道数据值,刚开始去读写进寄存器的数据值,就发现读出来的数据
ADS1299外部输入测试信号,波形随着幅值增大严重失真,幅值也不对,怎么解决?
您好,我测试的电路用的是官网的套件ADS1299,主板是STM32单片机,测试的方法是 1、内部测试信号时,配置寄存器,读出的信号正常 2、外部输入时,配置Vref=4.5,GAIN=1,输入幅值
STM32关于systick计时器时间不对的一点问题
STM32关于systick计时器时间不对的一点问题我是新手刚接触STM32,我设定的时间总是实际时间的一半,检查许久也不知道是哪里出了问题下面
资料下载
李春梅
2022-01-18 10:41:24
STM32单片机基础21——使用ADC读取电压值
title: 【STM32Cube-21】使用ADC读取电压值tags: STM32CubeMX ADCcategories:
资料下载
无人岛
2021-11-19 09:51:03
中间继电器的动作值与释放值可调节对不对
中间继电器是一种用于控制电路中的重要元件,其主要作用是接收输入信号并将其转换为输出信号,以实现对电路的控制。中间继电器的动作值和释放值是其工作过程中的两个关键参数,它们决定了继电器的吸合和释放状态
2024-06-21 10:17:48
STM32 spi采集ADC128S022,采集一路0通道误差只有0.0几个毫伏,采集4路值都不对了,为什么?
STM32 spi采集ADC128S022,采集一路0通道误差只有0.0几个毫伏,采集4路值都不对了,大虾看看
STM32F103 RTC日期读取不对怎么解决?
STM32F103 RTC日期读取不对问题,有没有什么办法解决?这个问题究竟是STM32的库本身有问题还是其他什么原因呢?如果是库的问题,难道S
STM32L051C8T6 HAL进入STOP模式RTC唤醒后,ADC采样值不对怎么解决?
STM32L051C8T6HAL 进入STOP模式RTC唤醒后,ADC采样值不对! 程序如果不进入STOP模式,ADC在WHILE(1)主程序,
stm32复位电容容值
STM32是意法半导体(STMicroelectronics)推出的一系列32位微控制器,具有低功耗、高性能和丰富的外设功能。在STM32微控制器中,复位电容是电路中的一个重要组成部分,用于保持系
2024-01-05 17:39:12
为什么读写SD卡的时候STM32内部时钟读的不对了?
读写SD卡的时候为什么STM32内部时钟读的不对了,真心请教高手!屏蔽掉读写,时钟就正常了!走过的,路过的,请教帮帮忙!分析一下是什么原因?谢谢!
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览