避免数据错位关键在于DMA传输模式与ADC通道配置的严格匹配。首先,确保ADC扫描模式(SCAN)和DMA循环模式(CIRCULAR)同时启用,且DMA数据宽度与ADC数据寄存器(16位)一致。其次,在初始化时,按顺序配置通道序列(如CH0,CH1,CH2),DMA缓冲区大小必须等于通道数×2字节,且缓冲区类型为uint16_t数组。解析时,直接按数组索引读取,索引0对应序列第一个通道,依此类推。若使用非循环模式,需在DMA传输完成中断中重置传输计数,避免覆盖。实操建议:在DMA中断中设置标志位,主循环中读取缓冲区前先复制到局部变量,防止数据更新导致错位。另外,若使用多ADC(如ADC1/ADC2),需分别配置DMA流,并确保各ADC的触发同步。最后,验证时可用固定电压源逐通道测试,观察数据是否按序对应。
mcuku 阿沐 · 2026-08-27