解决STM32单片机的ADC采样不准确偏移的问题

发布者:深沉思考最新更新时间:2021-10-14 来源: eefocus关键字:STM32  单片机  ADC采样  偏移 手机看文章 扫描二维码
随时随地手机看文章

项目场景:

用STM32CubeMX生成的ADC采样测量电压。

单片机:STM32G070

MDK:V5.25


问题描述:

采样回来的数值Debug看总是大了些许,几个通道都是这样,具体测试情况如下:

image.png

原因分析:

翻阅对比官方历程检查发现没有ADC校准,STM32CubeMX不会自动帮你配置校准。


  /* Run the ADC calibration */

  if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)

  {

    /* Calibration Error */

    Error_Handler();

  }

  /* USER CODE END 2 */


  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  

  /*## Start ADC conversions ###############################################*/

  /* Start ADC group regular conversion with DMA */

  if (HAL_ADC_Start_DMA(&hadc1,

                        (uint32_t *)aADCxConvertedData,

                        ADC_CONVERTED_DATA_BUFFER_SIZE

                       ) != HAL_OK)

  {

    /* ADC conversion start error */

    Error_Handler();

  }  


解决方案:

加上校准即可。


  HAL_ADCEx_Calibration_Start(&hadc1);

  HAL_ADC_Start_DMA(&hadc1, (uint32_t *)&m_ADCValue[0], ADC_BUF_LEN);


关键字:STM32  单片机  ADC采样  偏移 引用地址:解决STM32单片机的ADC采样不准确偏移的问题

上一篇:HAL库的官方历程
下一篇:STM32G070单片机 PD0 PB15引脚内部下拉使用需要主意

推荐阅读最新更新时间:2024-11-16 21:01

基于PIC单片机的六挡调控电涡流缓速器的设计
电涡流缓速器是一种高效汽车制动辅助装置,它既可以使汽车在坡道行驶时,方便地实行缓速和恒速行驶,也可以在高速公路或者路况较差的情况下,及时轻松地进行缓速,因此可极大提高汽车行驶时的安全性与舒适性。 目前国外使用的缓速器有两种形式,一种是利用液体的压力来实现的,称为“液力缓速器”,液力缓速器存在着结构复杂,维护困难等诸多缺点。另一种是“电涡流缓速器”,相比液力缓速器,它结构简单,维护方便。但国外的电涡流缓速器大多采用继电器作为控制元件(如法国的TELMA等),由于继电器频繁吸合,触点寿命较低,而且制动力无法连续均匀调节。还有些产品采用大功率无触点开关作为控制元件(如德国的KLOFT等),元件的寿命虽然大大提高,但使用在国内的车辆上时,
[单片机]
基于PIC<font color='red'>单片机</font>的六挡调控电涡流缓速器的设计
STC8A8K64单片机关于AT24C04基本读写操作
实验:AT24C04基本读写操作 步骤及现象:在下载程序前,选择stc-isp的IRC频率:12MHz。 程序下载完成后,在串口助手界面,HEX模式下,选择波 特率9600,然后点击“打开串口”按钮。这时按独立按键1 在接收缓冲区打印出刚写入的16个数据。 *数据帧格式 I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。 在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机
[单片机]
STC8A8K64<font color='red'>单片机</font>关于AT24C04基本读写操作
一辆车可塞进100颗MCU,我国市场规模可高达数百亿元
“中国是全球第一大汽车产销国,也拥有全球最大车用MCU市场。目前平均一辆车上会用到100颗左右的MCU,这样估算下来,我国车用MCU市场总量约为20亿颗,市场规模高达数百亿元。汽车新四化的兴起,对于MCU的需求会进一步增长。” 赛腾微电子董事长黄继颇在接受《中国电子报》专访时表示。 汽车是MCU占比最大且最具潜力的应用市场。IC Insight数据显示,2019年车用MCU销售额占MCU销售额的39%。当前,汽车行业步入智能化、电动化、共享化、网联化的“新四化”时代,车用MCU的用量和规格要求将进一步提升。汽车持续向“四个轮子的数据中心”转变,从而对MCU提出了哪些新的要求?我国相关企业该如何抓住市场机遇,形成差异化竞争
[汽车电子]
一辆车可塞进100颗<font color='red'>MCU</font>,我国市场规模可高达数百亿元
我的STM32艰苦入门经验体会与总结
  1.1为什么要把时间花在 犹豫 上?   每当我们在入门之前(ARM是这样,DSP也一样),总会会有很多疑问,会有很多顾虑。我们渴望知道学习STM32前景如何?需要啥基础?难不难?适不适合我?但是什么时候能心潮澎湃地、相当着急地开始学STM32?日子在一天一天过去!你开始行动了吗?没有行动的思索,永远都不可能入门!把这些时间用来看书吧,效果能好一万倍。   大家一般都是从51单片机过来的,回想一下,我们之前学单片机时如何入门呢?实际上都是先看书(理论),再玩板子(实践)。严格地说,应该是模仿实验。熟悉之后才会自己写程序代码实现某个功能。因此,如果你正在咨询STM32;如果你正对STM32心潮澎湃;如果你想入门STM32;那么,
[单片机]
基于单片机的熨烫机自动控制系统的设计与实现
介绍基于单片机的熨烫机自动控制系统,给出了系统的硬软件设计与实现,其中DMF50174显示模块和TL549串行A/D转换器使得系统具有较高的性价比。现场投运效果良好,产生了较好的经济效益和社会效益。 我国有12亿人口的服装消费市场,同时又是服装出口大国,随着近年来成衣市场的需求不断增加,小型的服装生产企业发展非常迅速,对小型熨烫系统的需求量越来越多。原有的小型熨烫机多为手动控制设备,对操作人员的操作经验要求较高,由于操作人员操作水平不一,常常出现产品质量问题,损坏率很高。为了满足用户需求,我们自行设计了熨烫控制系统。熨烫机采用AT89C51作为主控制器,采用DMF50174作为显示模块,可实现10个熨烫程序的存储及修改,可根据工序、
[单片机]
单片机之89c52独立按键 -----学习笔记
一、按键介绍 轻触开关是一种电子开关。 使用:轻按开关按钮可使电路接通、松开,开关断开 二、独立开关工作原理 按键断开和闭合时,触点会存在抖动现象。 P0口:为了实现三态,采用OC(集电极悬空输出)输出,这种电路结构,只有下拉能力,高电平输出没有电流,在高电平时表现为高阻态;加上上拉电阻,就会失去高阻态,变成 1、0 两态(通俗的说就是加上上拉电阻的目的是控制高低电平,不加上拉电阻只用高电平(状态:1),呈高阻态,没有低电平(状态:0)。 NOT(非门):高电平通过变为低电平,低电平通过变为高电平。 2.1、消除按下/松开按键抖动的电路 三、代码 #include reg52.h typedef un
[单片机]
<font color='red'>单片机</font>之89c52独立按键 -----学习笔记
GD32 MCU如何将烧录口配置为GPIO使用?
如果大家在进行GD32 MCU开发时发现GPIO引脚使用不足,可以尝试将烧录口配置为GPIO使用,这样就可以多出几个引脚使用,但使用的时候如何配置以及有哪些注意事项,本视频将会为大家进行解答。 GD32 MCU存在两种GPIO备用功能的配置,一种是采用成组重映射REMAP的模式,比如GD32F10X/20x/30x/e10x/E50X等系列,一种是采用AFIO模式,比如GD32F1X0/3X0/4XX/E230等。 成组reamp重映射的模式需要将一组的GPIO进行重映射,如下图GD32F30X IIC0的重映射配置,PB6和PB8需要组合使用,PB7和PB9需要组合使用,而PB6和PB9就不可以组合使用。 AFIO
[单片机]
GD32 <font color='red'>MCU</font>如何将烧录口配置为GPIO使用?

推荐帖子

【先楫HPM6750测评】+环境搭建测试
上篇我们介绍完成开箱之后,了解了其相关性能,这期我们用两个例程完成初期开发测试。首先我们先解压下sdk,SDK中有些完整例程,我们可以直接通过例程进行学习,不过这些例程还都是搭配着SEGGEREmbeddedStuido使用的,这个我们可以直接从SEGGER官方下载,具体可以参考社区这篇帖子:https://www.hpmicro.com/support/detail.html?id=e9b65dc7-4cb4-4749-bf41-dbb9e725c32b使用这个IDE也是
流行科技 国产芯片交流
segger的Jlink可以用来调试lm3s9000系列的吧?
如题。segger的Jlink可以用来调试lm3s9000系列的吧?LZ可以试一下就知道可以不了嘛。。。回复楼主438629087的帖子问题是我现在没有9000的板子啊。哦。。我一直用的是C1的片子,用的是LMJINK下载器。期待LZ的答案呀。。。可以找找哪位坛友用9000系列的片子问问。回复板凳438629087的帖子这个Jlink以前使用来调试stm32f103的,感觉lm3s应该也可以可以啊。。。没问题的。soga学习了。。。
438629087 微控制器 MCU
串口通信 之智能化多路串行数据采集/传输模块的设计
随着电子技术的不断发展,目前对各种物理量的检测和控制都可得以实现。微机检测控制系统不仅运用到航天航空、机器人技术、纺织机械、食品加工等工业过程控制,而且已经成为日常各种家用电器当中的主要组成部分。其中,A/D(模拟数字转换)设备起着十分重要的作用。这样,一个系统中就会需要更多的A/D设备。一般是用扩展一块或多块A/D采集卡的方法去实现。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最经济的方案。这里介绍一种以AT89C2051单片机为核心,采用TLC2543L12位
rain 单片机
《奔跑吧Linux内核(第2版)卷2:调试与案例分析》- 在 bbb 上实践 kdump 调试问题
​想着在beagleboneblack上实践下第五章的kdump调试分析实践,没想到环境搭建出现各种幺蛾子。目前连kdump都没有部署成功,崩溃啊。。。bbb上安装了debianbull怎奈从仓库直接apt安装的kdump-tools总是提示无法内存,打印如下:```StartedUserLoginManagement.kdump-tools:Startingkdump-tools:kdump-tools:Creat
iysheng Linux与安卓
PLC的运行原理一点就通
PLC执行程序的过程分为三个阶段,即输入采样阶段、程序执行阶段、输出刷新阶段。在输入采样阶段,PLC以扫描工作方式按顺序对所有输入端的输入状态进行采样,并存入输入映象寄存器中,此时输入映象寄存器被刷新。接着进入程序处理阶段,在程序执行阶段或其它阶段,即使输入状态发生变化,输入映象寄存器的内容也不会改变,输入状态的变化只有在下一个扫描周期的输入处理阶段才能被采样到。在程序执行阶段,PLC对程序按顺序进行扫描执行。若程序用梯形图来表示,则总是按先上后下,先左后右的顺序进行。当遇到程序跳转指令时
xiaoxin1 工控电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved