STM32_DMA_多通道采集ADC出现错位现象

STM32_DMA_多通道采集ADC出现错位现象

问题描述:

adcSensorValue[0],adcSensorValue[3],adcSensorValue[6]... //存储通道1数据

adcSensorValue[1],adcSensorValue[4],adcSensorValue[7]... //存储通道2数据

adcSensorValue[2],adcSensorValue[5],adcSensorValue[8]... //存储通道3数据

多次调用HAL_ADC_Start_DMA(&hadc3,(unsigned int *)adcSensorValue,ADC_SENSOR_LEN);后出现adcSensorValue[0],adcSensorValue[3],adcSensorValue[6]...采集的是通道3的值并非是通道1的值

c 复制代码
#define ADC_SENSOR_LEN 			30					//缓存空间的大小
#define ADC_SENSOR_CHANNEL 	3	//采样通道数量
unsigned short adcSensorValue[ADC_SENSOR_LEN] = {0};	//设置采样缓存空间

MX_DMA_Init();
MX_ADC3_Init();

HAL_ADCEx_Calibration_Start(&hadc3);	//校准ADC,否则测出来的值偏小,或者是不准确
HAL_ADC_Start_DMA(&hadc3,(unsigned int *)adcSensorValue,ADC_SENSOR_LEN);	//开始DMA采集

解决办法:

在不要采集ADC的时候,或是临时想要暂停采集的地方停止MDA工作,这样下次再调用HAL_ADC_Start_DMA(&hadc3,(unsigned int *)adcSensorValue,ADC_SENSOR_LEN);开始采集的时候,数据就可以对齐了,不会错乱

c 复制代码
HAL_ADC_Stop_DMA(&hadc3);
相关推荐
嵌入式小站1 小时前
STM32 零基础可移植教程 03:蜂鸣器响一声,LED 跟着翻转一次
stm32·单片机·嵌入式硬件
星夜夏空991 小时前
STM32单片机学习(15) —— PC串口通信实验
stm32·单片机·学习
星夜夏空992 小时前
STM32单片机学习(14) —— STM32的串口外设
stm32·单片机·学习
都在酒里2 小时前
STM32标准库驱动L298N双H桥电机驱动模块(调速/正反转/多模式实战,附完整工程代码)
stm32·单片机·嵌入式硬件
Hello_Embed2 小时前
USB 学习指南+软硬件框架
网络·笔记·stm32·嵌入式·ai编程
key_3_feng3 小时前
鸿蒙车规级MCU开发方案
单片机·华为·harmonyos
踏着七彩祥云的小丑3 小时前
嵌入式测试学习第 13 天:串口助手软件安装、界面认识、参数配置
单片机·嵌入式硬件
黑猫学长呀3 小时前
存储宝典第4篇:存储芯片中常说的E2E是啥?
linux·单片机·嵌入式硬件·e2e·ssd·ufs·存储芯片
xiangw@GZ3 小时前
DDR的硬件拓扑与ODT匹配技术
嵌入式硬件
熙芯XiChip3 小时前
压电片工作原理
嵌入式硬件