Bblythe 发表于 2025-5-5 07:57

多通道ADC扫描顺序乱了?

设置了规则组顺序,但DMA里数据总是对不上,是缓存问题吗?

Clyde011 发表于 2025-5-5 07:59

有时候CubeMX配置和实际顺序不一致。

公羊子丹 发表于 2025-5-5 08:00

F3的ADC有双通道,先确认你是不是用的并行模式?

周半梅 发表于 2025-5-5 08:01

DMA搬运顺序要和通道配置一致。

帛灿灿 发表于 2025-5-5 08:02

我把rank错设成了1导致顺序乱了。

童雨竹 发表于 2025-5-5 08:02

配置顺序决定了扫描的实际顺序。

万图 发表于 2025-5-5 08:03

检查是否有寄存器被重置。

Wordsworth 发表于 2025-5-5 08:04

用单次转换模式测试顺序是否一致。

Bblythe 发表于 2025-5-5 08:05

我用断点抓DMA buffer对照才找出问题。

Pulitzer 发表于 2025-5-5 08:06

看看DMA传输长度对上了吗?

Uriah 发表于 2025-5-5 08:06

加个标志位判断转换结束时是哪一组。

冰春彩落下 发表于 2025-5-13 20:17

SQR1寄存器的L字段定义序列长度(0-15),若实际配置的通道数超过L+1,超出部分会被忽略或覆盖

远山寻你 发表于 2025-5-13 20:30

在STM32F3中使用多通道ADC扫描时,若规则组顺序配置正确但DMA数据与预期通道不匹配,问题通常源于ADC序列配置错误、DMA传输机制冲突或硬件资源竞争,而非单纯缓存问题

一秒落纱 发表于 2025-5-13 20:59

通道顺序与寄存器设置不匹配,STM32F3的ADC规则组序列(SQR1-SQR3)需严格对应实际通道顺序。若配置错误(如通道号写错、序列长度不匹配),会导致DMA读取数据与预期通道错位

淡漠安然 发表于 2025-5-13 21:58

DMA缓冲区未对齐或大小不足,STM32F3的DMA要求缓冲区地址按数据类型对齐(如uint16_t需2字节对齐)。若缓冲区未对齐或长度不足(如3通道扫描但缓冲区仅分配2个uint16_t),会导致数据覆盖或错位

光辉梦境 发表于 2025-5-13 22:15

DMA传输模式不匹配,若未启用循环模式(DMA_CCR_CIRC)且传输次数(NDTR)与ADC序列长度不一致,可能导致数据截断或重复

夜阑风雨 发表于 2025-5-13 22:40

若使用多ADC同步扫描(如ADC1+ADC2),需确保触发信号(如JSWSTART、JEXTSEL)和序列配置一致,否则可能引发数据错乱。

三生万物 发表于 2025-5-13 22:47

ADC和DMA的时钟源(如HCLK、PCLK2)需独立配置且频率匹配。若时钟未正确使能或分频设置错误,可能导致数据采样与传输不同步

江河千里 发表于 2025-5-13 23:21

确认RCC_AHBENR(DMA时钟)、RCC_APB2ENR(ADC时钟)已使能,且ADC时钟频率≤36MHz(STM32F3系列限制)

暖了夏天蓝了海 发表于 2025-5-13 23:30

若在ADC转换完成中断(ADC_IRQHandler)中操作DMA缓冲区(如读取或清空),可能引发竞态条件,导致数据不一致
页: [1]
查看完整版本: 多通道ADC扫描顺序乱了?