GD32 ADC规则组多通道采样,数据发生错位?

发布者:温柔的爱情最新更新时间:2024-11-08 来源: elecfans关键字:GD32  多通道采样  错位 手机看文章 扫描二维码
随时随地手机看文章

我们知道,使用ADC规则组(常规组)多通道采样时,必须要配合DMA使用,但有的小伙伴遇到这种应用下数据错位的情况,比如预设的转换顺序是通道0->通道1->通道2,但定义的数据buffer中的采样值却是通道1->通道2->通道0,那这是为什么呢?

出现这种情况的一个可能原因是——ADC先使能再去配置DMA。我们来看下面的时序:

wKgZomXyWTiAEpmPAAA9YFo96dA479.png?imageView2/2/w/1000


如果先配置并使能ADC,当触发信号来临,ADC开始转换,若ADC转换到通道1的时候,DMA才配置并使能,那么DMA是不会搬运通道0的数据的,而是当通道1的转换结束后,DMA才开始搬运第一个数据到buffer[0],所以buffer中的数据顺序就变成了数据1->数据2->数据0。

我们再来看下先配置DMA再配置ADC的时序:

wKgZomXyWT6AAbU6AAA_DRuN2Gk286.png?imageView2/2/w/1000


ADC在转换第一个通道时,DMA已经准备好搬运数据,所以DMA的第一次搬运发生在ADC的第一个通道转换完成后,故数据将不会错位。

所以小伙伴知道了吗?ADC+DMA使用的时候,一定要先配置DMA,再配置ADC哦。


关键字:GD32  多通道采样  错位 引用地址:GD32 ADC规则组多通道采样,数据发生错位?

上一篇:关于GD32 Colibri-F450VE开发板的性能分析和介绍
下一篇:GD32开发实战指南(基础篇) 第18章 CRC校验

推荐阅读最新更新时间:2026-03-23 10:55

ADC的注入规则有何区别
STM32的ADC可以对一组指定的通道,按照指定的顺序,逐个转换这组通道,转换结束后,再从头循环;这指定的通道组就称为规则组。但是实际应用中,有可能需要临时中断规则组的转换,对某些通道进行转换,这些需要中断规则组而进行转换的通道组,就称为注入组。 对于ADC模块来说,它按规则转换规则组时,被要求临时转换规则组之外的某些通道,就好像这组通道临时注入了原来的顺序,所以形象地称其为注入组。 STM32的每个ADC模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换。STM32特别地加入了多种成组转换的模式,可以由程序设置好之后,对多个模拟通道自动地进行逐个地采样转换。 有2种划分转换组的方式:规则通道组和注入通道组
[单片机]
ADC多通道+DMA采样求均值
一、硬件配置 本实验采用STM32F103RB nao开发板 使用PA0/1/2 引脚,即ADC1的IN0/1/2三个通道,分别测量GND/VCC/VR三处电压。 接线为: PA0 → GND PA1 → VCC PA2 → VR 二、CubeMX配置 1.配置时钟 打开HSE、LSE,配置为内外部时钟,主频配置为72MHz,ADC时钟默认为12MHz。 2.配置串口 这里使用USART1,等会重定向Printf用于打印测量信息。 选择USART1,配置为异步模式,参数无需调整。 3. 配置ADC 在模拟器件中选择ADC1 使能ADC1的三路通道 IN0/1/2 ,右侧可见 PA0/1/2 引脚被配
[单片机]
<font color='red'>ADC</font><font color='red'>多通道</font>+DMA<font color='red'>采样</font>求均值
STM8学习笔记---ADC多通道采样
STM8S003单片机ADC采样通道总共有5个,从AIN2---AIN6,多通道采样时需要将ADC转换设置为单次转换模式,每次切换采样通道后,需要重新初始化 ADC,采样结果在中断中读取。 IO口初始化代码 //AD通道引脚初始化 void ADC_GPIO_Init( void ) { PD_DDR &= ~( 1 2 ); //PD2 设置为输入 AIN3 PD_CR1 &= ~( 1 2 ); //PD2 设置为悬空输入 PD_DDR &= ~( 1 3 ); //PD3 设置为输入 AIN4 PD_CR1 &= ~( 1 3 );
[单片机]
STM8学习笔记---<font color='red'>ADC</font><font color='red'>多通道</font><font color='red'>采样</font>
STM32F0 定时器触发ADC多通道采样、DMA传输数据的配置
本块代码实现了定时器定时触发ADC,多通道采样,并通过DMA进行数据传输到内存的操作。 #include adc.h #define DMA_BUFFER_SIZE 6 uint8 sample_finish = 0; int16 adc_dma_tab = { 0 }; uint8 sample_index = 0; //采样点数据 int16 sample_1 = { 0 }; int16 sample_2 = { 0 }; int16 sample_3 = { 0 }; int16 sample_4 = { 0 }; int16 sample_5 = { 0 }; int16 sample
[单片机]
STM32的ADC采样多通道ADC采样
一 单通道采样 参考资料: 《STM32库开发实战指南》 刘火良,杨森著 原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图 这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比较简单也容易理解,但是存在一定的弊端,下面给出《STM32库开发实战指南》上面配套的硬件电路图 如果设计电路图的话,可以参考这种思路。 我的收获 1 引脚初始化的时候需要注意 每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,表示这个引脚(PC0)可以配置为ADC1的通道10,或者是ADC2的通道10,或者是ADC3的通道10,这个地方非常重要,涉及
[单片机]
STM32的<font color='red'>ADC</font><font color='red'>采样</font>与<font color='red'>多通道</font><font color='red'>ADC</font><font color='red'>采样</font>
多通道采样电路
多通道采样电路 图5.4-75是一个多通道采样电路的实例。它由16通道模拟开关AD7506型芯片,采样保 持电路LF398和AD变换器ADC-0808组成,然后和1/O接口芯片INTEL8255并行接口相连 。PA0~PA7和ADC0808的数据线相连,用于数据的输入。PB0~PB4是通道选择信号,控 制输入通道的选择。PB5是采样保持信号,PB6是A/D变换器转换开始的启动信号。PC0 是A/D变换器的转换结束信号的输入口,由CPU读入进行判断。多通道采样电路的工作 完全受相应的程序控制。该电路可以有以下几种工作完全受相应的程序控制。该电路 可以有以下几种工作方式: 1、顺序采样:按通道号顺序逐点进行扫描采样。 2
[模拟电子]
<font color='red'>多通道</font><font color='red'>采样</font>电路
关于ARM和存储器地址线错位连接详解
首先,SST39VF16 FLASH是16位的,也就是以两个字节(半字)为最小操作单位的。也就是说你在FLASH地址上给0x00000,则它给出的数据是第一个16位的半字;在FLASH地址上给0x00001,它给出的是第二个16位的半字;在FLASH地址上给0x00002,它给出的是第三个16位的半字。。。但ARM的地址是以字节编址的,它可以以字节单位来读取或者写外设。 假设我们要读取FLASH的第一个 字节 ,LDRB R0, ;将R1内容写0x00000,这个时候ARM执行的是这样的操作: 1、送出地址0x00000 2、在D0-D15上读取数据 3、将读到的16位数据的 低 8位给R0低8位(高24位为0) 假设我
[单片机]
ARM与不同位宽存储器的地址线错位接口
ARM是32位,地址空间是2的32次幂,4G地址空间。所有的外设(FLASH,RAM,SD卡等等)都映射到这4G的空间上。比如大部分ARM7都把RAM映射到0x40000000,所以对RAM的操作就在0X40000000开始的地址上。FLASH从0X0开始。使用FLASH还要考虑地址重映射,就是选择片内FLASH或片外FLASH。 FLASH一般是8位或16位,当它接到32位的ARM上时,地址位就会错位。对于16位FLASH,FLASH的A0要接ARM的A1。对于8位FLASH,FLASH的A0要接ARM的A0。ARM的A0对应8位,ARM的A1对应16位,ARM的A2对应32位,如果FLASH是32位,那么FLASH的A0
[单片机]
ARM与不同位宽存储器的地址线<font color='red'>错位</font>接口
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved