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);
相关推荐
JINX的诅咒1 分钟前
FPGA多通道卷积加速器:从零构建手写识别的硬件引擎
嵌入式硬件·fpga开发·cnn·开源
几道之旅9 小时前
零基础RT-thread第二节:按键控制
c语言·stm32
阿让啊9 小时前
Notepad++如何列选
c语言·嵌入式硬件·notepad++
Archer-10 小时前
解决STM32H7系列串口DMA发送一次卡死
stm32·单片机·嵌入式硬件
通信.萌新11 小时前
【stm32f4】ADC实验(stm32hal库)
stm32·单片机·嵌入式硬件
Mr-Apple11 小时前
使用STM32设置GPIO中断
stm32·单片机·嵌入式硬件
jasonslaex13 小时前
stm32传感器通用驱动代码
驱动开发·stm32·嵌入式硬件
嵌入式仿真实验教学平台18 小时前
深入探索IIC-OLED显示技术:嵌入式仿真平台如何重塑高校教学范式——深圳航天科技创新研究院技术赋能新一代工程教育
科技·单片机·gd32·嵌入式仿真·iic-oled显示技术
十碗阳春面19 小时前
TI 毫米波雷达走读系列—— 3DFFT及测角
单片机·嵌入式硬件·毫米波雷达·mmwave radar·awr/iwr系列
CPETW20 小时前
同旺科技 USB TO SPI / I2C适配器(专业版)--EEPROM读写——C
c语言·开发语言·科技·stm32·单片机·嵌入式硬件·电子