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);
相关推荐
BT-BOX6 小时前
普中开发板基于51单片机贪吃蛇游戏设计
单片机·游戏·51单片机
驴友花雕6 小时前
【花雕动手做】CanMV K230 AI视觉识别模块之使用CanMV IDE调试运行人脸代码
ide·人工智能·单片机·嵌入式硬件·canmv k230 ai视觉·canmv ide 人脸代码
点灯小铭9 小时前
基于单片机的酒驾报警刹车系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
boneStudent9 小时前
Day29:I2C 高级应用
stm32·单片机·嵌入式硬件
@good_good_study10 小时前
STM32 I2C配置函数及实验
stm32·单片机
芯联智造11 小时前
【stm32简单外设篇】- 28BYJ-48 步进电机(配 ULN2003 驱动板)
c语言·stm32·单片机·嵌入式硬件
喜喜安11 小时前
CoreS3 屏幕背光
单片机·嵌入式硬件·m5stack cores3
星期天211 小时前
1.4光敏传感器控制蜂鸣器
stm32·单片机·嵌入式硬件·江科大
沐欣工作室_lvyiyi13 小时前
基于无线互联的电源健康监测与控制系统设计(论文+源码)
stm32·单片机·毕业设计·电源健康监测
@good_good_study13 小时前
STM32 ADC单通道采样函数及实验
stm32·单片机