stm32 ADC信号采集失败调试过程

STM32——ADC知识总结及多通道采样实验 ADC,全称:Analog-to-Digital Converter,指模拟/数字转换器。 阅读详情

本项目用DMA采集ADC的8个通道数据,配置ADC通道代码如下:

void adc_channel_set(ADC_HandleTypeDef *adc_handle, uint32_t ch, uint32_t rank, uint32_t stime)
{
    /* 配置对应ADC通道 */
    ADC_ChannelConfTypeDef adc_channel;
    adc_channel.Channel = ch;               /* 设置ADCX对通道ch */
    adc_channel.Rank = rank;                /* 设置采样序列 */
    adc_channel.SamplingTime = stime;       /* 设置采样时间 */
    HAL_ADC_ConfigChannel(adc_handle, &adc_channel); /* 初始化ADC通道 */
}

ch表示配置的是哪个通道,DMA一个周期采集多个通道,rank表示该通道在一个周期里面采集序号,如本项目配置的采集顺序如下:

adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_2, 1, ADC_SAMPLETIME_480CYCLES);  
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_3, 2, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_4, 3, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_5, 4, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_6, 5, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_7, 6, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_8, 7, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_9, 8, ADC_SAMPLETIME_480CYCLES);

表示DMA一个周期采集8个通道数据,第1次采集通道2数据,第2次采集通道3数据,第3次采集通道4数据。。。
笔者一开始错误的写法如下:

adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_2, 0, ADC_SAMPLETIME_480CYCLES);  
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_3, 1, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_4, 2, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_5, 3, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_6, 4, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_7, 5, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_8, 6, ADC_SAMPLETIME_480CYCLES);
adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_9, 7, ADC_SAMPLETIME_480CYCLES);

以上写法改变电路通道2引脚电压时,没有反应,改变电路通道3引脚时通道2有反应,之后的通道也都是软件通道相比于硬件通道向前错一个,在改变硬件通道9电压时软件通道8和通道9同时发生了变化,
后来发现原来采集序列不能写0,要从1开始写。
如果设置方法如下:

adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_2, 1, ADC_SAMPLETIME_480CYCLES);  
//adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_3, 2, ADC_SAMPLETIME_480CYCLES);
//adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_4, 3, ADC_SAMPLETIME_480CYCLES);
//adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_5, 4, ADC_SAMPLETIME_480CYCLES);
//adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_6, 5, ADC_SAMPLETIME_480CYCLES);
//adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_7, 6, ADC_SAMPLETIME_480CYCLES);
//adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_8, 7, ADC_SAMPLETIME_480CYCLES);
//adc_channel_set(&g_adc_nch_dma_handle, ADC_CHANNEL_9, 8, ADC_SAMPLETIME_480CYCLES);

则通道2上电时,打印出的采集效果为:
在这里插入图片描述
可见如果后面的通道不设置,后面通道采集的数据是前面递减的。

后记

ADC的通道采集序列要从1开始设置。

STM32----ADC多通道采集 adc多通道采集数据 之前对于单通道的采集,已经做出了配置的相关解释。 在单通道采集中存储采集的值为单个变量,对于多通道而言需要使用数组来存储每个通道的转换数据。 具体的adc配置文件如下: void ADC_Configuration(void) { ADC_InitTypeDef adc_s; adc_s.ADC_ContinuousConvMode = ENABLE; adc_s.ADC_DataAlign = ADC_DataAlign_Right; adc_s.ADC_External 阅读详情

相关推荐

STM32F103 ADC采集Vref电压并实时串口显示

本文详细介绍了STM32F103内部参考电压(Vrefint)的采集与应用方法。重点讲解了硬件配置要点(ADC通道选择、电源去耦设计)和软件实现细节(ADC时钟配置、校准公式)。通过串口输出带时间戳的Vrefint数据,结合硬件去耦和软件滤波确保测量稳定性。文章还提供了调试验证方法(电源纹波检测、精度对比)和扩展功能建议(多通道采集、异常报警)。完整代码示例展示了Vrefint采集的完整实现流程,并总结指出:正确使用出厂校准值、合理的硬件设计和软件处理是确保ADC精度的关键,建议配合逻辑分析仪等高精度工具进

jiujiu0109a的博客 2270

AT32F403A/STM32F103 采用DMA方式多路ADC采集

STM32F103/AT32F403A 采用DMA方式多路ADC采集 ` 提示:带软件滤波和数值转换,用定时器控制100ms刷新一次采样结果并通过串口打印出来

shufawangzhang的博客 4814

STM32与PCF8591的ADC/DAC信号采集系统设计

在嵌入式系统开发中,模数转换(ADC)和数模转换(DAC)是实现物理世界与数字系统交互的核心技术。通过I2C接口协议,主控芯片可以高效扩展多通道信号采集能力。STM32系列MCU凭借其丰富的外设接口和强大的处理能力,与PCF8591这类8位ADC/DAC转换芯片组合,能够构建高性价比的混合信号处理系统。这种方案特别适合工业控制、环境监测等需要多路信号采集的应用场景。通过合理的硬件设计结合软件滤波算法,即使使用8位ADC也能获得满足多数应用需求的测量精度。

weixin_36250541的博客 517

STM32_ADC单通道单次采集

推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:https://www.strongerhuang.com 我的知乎:https://www.zhihu.com/people/strongerHuang.com 今天提供并讲解的软...

strongerHuang 3万+

Keil调试教程:模拟量采集系统的快速理解

通过keil调试教程深入理解模拟量采集系统的实现过程,结合实际操作提升开发效率,是嵌入式学习中不可或缺的关键技能。

weixin_35753431的博客 841

STM32H743 ADC校准失败排查:HAL_ADCEx_Calibration_Start()的正确调用时机

本文深入剖析了STM32H743 ADC校准失败的核心原因,即错误地在ADC使能状态下调用HAL_ADCEx_Calibration_Start()函数,导致读数漂移。文章详细解释了校准必须在ADC禁用状态下进行的硬件原理,列举了典型错误场景,并提供了上电初始化与周期性重校准的正确代码实践,帮助开发者彻底解决ADC精度问题。

ik678901的博客 1177

STM32-微项目08-ADC单通道/多通道模式采集

1,利用STM32内置的ADC模块,将外部模拟量信号(0-3.3v)转化成12位有效(16位数据)的数字量(0-4095),在将采集的数字除4095,就会得到对应采集的模拟量信号;在外部有模拟量输入时,DAC设置参数并输出模拟量,对比模拟量数据和输入的模拟量相近或相等时刻,则配置输出的DAC的数字量参数,就是输入模拟量的对应转化后的数字量;①数据流:外部GPIO模拟量-----AD转换器(注入组和规则组)-----触发转化 ----转化数值存放到AD数据寄存器中。非扫描模式,仅转化序列中的第一个;

ADAS_sunshine的博客 4588

STM32传感器数据采集实战:I2C与ADC应用指南

传感器数据采集是嵌入式系统开发中的基础技术,通过模数转换(ADC)和数字接口(I2C)实现物理量到数字信号的转换。STM32系列MCU凭借其丰富的外设资源,成为构建数据采集系统的理想平台。在工业监测、智能家居等场景中,多传感器协同工作需要解决信号调理、时序控制等工程问题。以STM32F407为例,其内置的12位ADC模块支持多通道采样,配合DMA传输可构建高效采集系统;而硬件I2C控制器通过标准协议与各类数字传感器通信。实战中需注意信号完整性、电源噪声抑制等硬件设计要点,同时采用移动平均滤波等算法提升数据质

weixin_29190651的博客 892

电子信息工程专业毕设选题指南:从信号处理到嵌入式系统的技术落地路径

完成一个优秀的电子信息工程毕设,就像完成一次小型的产品研发。它考验的不仅是理论知识,更是将理论转化为稳定、可靠产品的工程能力。从精准的选题开始,选择合适的技术栈,搭建稳健的硬件平台,编写清晰高效的代码,最后进行全面的测试与优化,每一步都充满挑战,也充满收获。如何在内存仅有几十KB、没有硬件FPU的STM32F103(Cortex-M3)这类资源受限设备上,部署一个用于分析50Hz工频信号谐波的轻量级FFT(快速傅里叶变换)算法?你需要考虑哪些方面的妥协与优化?

2600_94959387的博客 849

STM32单片机OLED与ADC数据采集实践项目

STM32单片机是基于ARM Cortex-M微处理器内核的32位微控制器系列,它集成了丰富的外设接口和内存资源,提供了多种不同的型号以适应不同的应用需求。它支持实时操作系统,具备快速中断响应和高效率的运行能力,为开发高性能的应用程序提供了坚实的基础。OLED(有机发光二极管)技术是一种先进的显示技术,它利用有机材料在电流作用下自行发光的原理来显示图像。与传统的LCD(液晶显示)技术相比,OLED屏幕具有更高的对比度、更广的视角、更快的响应速度,并且能够实现更薄的设计。

weixin_42578963的博客 502

Claude Code + 自定义模型体验

AI 编程工具的发展突飞猛进:Cursor 横空出世,推出了“Agent 模式”;新竞争者如 Windsurf 也纷纷加入战局。几乎所有产品都开始转向“代理式(agentic)”开发模式——不再依赖单次 LLM 响应进行补全,而是让大模型在一个循环中调用各种工具,来完成更复杂的任务:分析代码库上下文、读取网页与文档、编译程序、运行测试、修复失败构建或测试、不断迭代等。

西京刀客 5799

STM32 ADC采集实现:基于MDK的实战项目

通过实际项目讲解STM32的ADC采集实现过程,重点使用MDK开发环境进行配置与调试,帮助开发者掌握嵌入式系统中模拟信号采集的关键技术与流程。

weixin_35639680的博客 701

保姆级教程:用Docker一键部署vLLM大模型推理服务(附常见报错解决方案)

本文提供了一份详细的Docker化vLLM大模型推理服务部署指南,涵盖从环境准备到性能调优的全流程。通过容器化技术解决大语言模型部署中的显存利用率、吞吐量等核心问题,并附常见报错解决方案,帮助开发者快速构建高效、可扩展的AI推理服务。

weixin_29248313的博客 492

蓝桥杯STM32G431RBT6 ADC采集实战:从CubeMX配置到LCD显示完整流程

本文详细讲解了蓝桥杯嵌入式竞赛中STM32G431RBT6的ADC采集与LCD显示完整实战流程。从CubeMX的时钟、GPIO与ADC通道配置,到HAL库单次转换、DMA连续采集的代码编写,再到LCD驱动集成与数据显示,提供了避坑指南和常见问题排查方法,帮助选手快速掌握核心技能。

weixin_29185493的博客 543

RACECAR底层平台安装:Jetson Nano+ROS Melodic全栈部署指南

移动机器人开发中,底层平台安装是将硬件转化为可编程移动平台的关键起点。其核心在于嵌入式系统、ROS中间件与传感器驱动的深度协同——需兼顾内核模块加载、GPIO/PWM精确控制、I2C设备初始化及ROS工作空间构建等多层技术耦合。尤其在竞速级小车如RACECAR场景下,Jetson Nano的硬件加速能力、MPU6050 IMU固件加载、TB6612FNG电机驱动配置等细节,直接决定运动控制精度与实时性。本文聚焦Ubuntu 18.04 + ROS Melodic + JetPack 4.4.1技术栈,覆盖从

weixin_32025789的博客 256

华为昇腾服务器npu中安装paddle,pytorch等环境,训练代码迁移适配等问题记录

参考文档:https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/npu/README_cn.md

qq_29220369的博客 4112

F407 采集不到 ADC 信号怎么办?

本文详细分析STM32F407 ADC采集异常的常见原因,涵盖GPIO配置、时钟分频、采样时间选择、硬件布局及调试方法,帮助开发者系统化定位信号采集问题,提升嵌入式系统稳定性。

m5n6o7的博客 827

手把手教你用Isaac Sim 8打造逼真光影效果:参数设置与场景应用

本文详细介绍了如何使用Isaac Sim 8打造逼真光影效果,涵盖基础参数设置、高级材质交互、专业级灯光造型技法以及复杂场景的灯光布局策略。通过实战案例和参数调优技巧,帮助用户提升虚拟场景的视觉表现,适用于数字孪生、虚拟仿真和影视特效等领域。

weixin_30836759的博客 80

STM32多通道ADC采集系统搭建与调试

本文详细介绍STM32多通道ADC采集系统的搭建与调试,涵盖GPIO配置、时钟设置、单次转换控制、校准流程及数据滤波方法。采用软件轮询方式实现精准采集,适合F1/F4系列MCU的小型应用,如环境监测与教学实验,强调稳定性和可调试性。

weixin_42600407的博客 423

MCGS 昆仑通态触摸屏 modbus TCP 数据转发

MCGS触摸屏数据转发modbus TCP数据转发

m0_63451859的博客 2万+

信捷XDH PLC多轴运动控制实战:Ethercat总线下的C语言封装技巧

本文深入探讨了在信捷XDH PLC平台上,如何利用C语言对EtherCAT总线多轴运动控制进行高效封装。通过设计全局数据池、模块化状态机及用户友好接口,将底层复杂的运动控制函数库抽象为清晰、可复用的高级模块,显著提升程序稳定性与可维护性,并分享了关键的实战避坑经验。

weixin_29188043的博客 160

STM32 ADC+DMA多通道连续采集实战解析

ADC(模数转换器)是嵌入式系统感知模拟世界的核心接口,其性能瓶颈常出现在多通道、高频率、低延迟的数据采集场景中。传统轮询或中断方式易引发CPU过载与采样时序抖动,而DMA(直接内存访问)通过硬件级数据搬运,实现零CPU干预的连续传输,显著提升实时性与能效比。该技术组合广泛应用于电机控制、传感器融合、工业测控等对信号完整性与时序确定性要求严苛的领域。本文聚焦STM32平台,深入剖析ADC规则组连续扫描与DMA2_Stream0协同机制,涵盖GPIO模拟输入配置、采样时间权衡、寄存器级序列定义、DMA地址/宽

weixin_35649491的博客 986

高通 vs MTK vs 海思:三大平台 ISP 架构横向对比与实战差异分析

随着移动影像能力成为智能终端差异化竞争的核心维度,ISP(Image Signal Processor)架构日益重要。高通、MTK、海思三大 SoC 厂商在 ISP 设计上各具特色,不仅在图像处理链路、模块集成度、算法加速路径等方面存在显著差异,同时也决定了终端厂商在成像质量、调试复杂度与扩展能力上的实际表现。本文将基于真实平台项目经验,横向对比三大主流平台的 ISP 架构关键指标,系统分析其在实际开发过程中的能力边界、工程成本与调优空间,帮助工程师更精准地进行平台选型与优化策略制定。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3934

高精度ADC与STM32的模拟信号采集系统设计

模拟信号采集是工业测量和医疗设备中的关键技术,其核心是将连续信号转换为数字数据。Δ-Σ ADC因其高分辨率和抗噪声能力成为首选方案,通过过采样和数字滤波实现24位无缺失码性能。在工程实践中,TI的ADS127L11与STM32F722VE的组合方案展现出110dB信噪比和200kSPS采样率的优异表现。该技术方案特别适用于振动监测等需要处理微弱信号的场景,通过可编程数字滤波器和硬件CRC校验,在保证50mW低功耗的同时实现数据完整性。合理的电源去耦设计和基准电压选择是确保系统精度的关键因素。

weixin_34054931的博客 666

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

跨越误区:STM32多通道ADC采集中的典型陷阱与高效调试指南

本文深入解析STM32多通道ADC采集中的典型陷阱与调试技巧,重点涵盖DMA配置、扫描模式、采样时间设置和时钟校准等关键环节。针对数据错位、传输不触发等常见问题,提供实用的规避策略和高效调试方法,帮助开发者提升嵌入式数据采集系统的稳定性和精度。

motor的博客 801

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32Cube学习笔记-ADC_DMA调试

ADC是模拟信号采样,将模拟信号转换为数字信号。使用过ADC采样的都知道,ADC采样包括的内容很多,包括什么通道啦,中断啊,采样周期啦,采样模式啦,不规则采样啦,连续采样啦,不连续采样啦,扫描啦等等这些,还要涉及到DMA通道这些,真的很多的内容。我的能力有限,只能说一些自己知道的东西。 本文章要完成的目标: 1.一路通道的数据ADC采样,把数据采样结果打印到串口调试助手上; 2.使用ADC中断的形式。ADC转换结束进入中断函数; 3.使用ADC_DMA的方式,...

qq_25207883的博客 1188

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: stm32 DMA接收串口数据实现与深度分析
下一篇: stm32 485接收数据异常调试过程
inputA
博客等级 码龄7年 298粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值