我们知道,使用ADC规则组(常规组)多通道采样时,必须要配合DMA使用,但有的小伙伴遇到这种应用下数据错位的情况,比如预设的转换顺序是通道0->通道1->通道2,但定义的数据buffer中的采样值却是通道1->通道2->通道0,那这是为什么呢?
出现这种情况的一个可能原因是——ADC先使能再去配置DMA。我们来看下面的时序:
如果先配置并使能ADC,当触发信号来临,ADC开始转换,若ADC转换到通道1的时候,DMA才配置并使能,那么DMA是不会搬运通道0的数据的,而是当通道1的转换结束后,DMA才开始搬运第一个数据到buffer[0],所以buffer中的数据顺序就变成了数据1->数据2->数据0。
我们再来看下先配置DMA再配置ADC的时序:
ADC在转换第一个通道时,DMA已经准备好搬运数据,所以DMA的第一次搬运发生在ADC的第一个通道转换完成后,故数据将不会错位。
所以小伙伴知道了吗?ADC+DMA使用的时候,一定要先配置DMA,再配置ADC哦。
关键字:GD32 多通道采样 错位
引用地址:
GD32 ADC规则组多通道采样,数据发生错位?
推荐阅读最新更新时间:2024-11-12 18:58
【GD32 MCU 入门教程】GD32 MCU 常见外设介绍(13)DAC 模块介绍
DAC是一种把二进制数字量形式的离散信号转换成以标准量(或参考量)为基准的模拟量的转换器,它常用于过程控制计算机系统的输出通道,与执行器相连,实现对生产过程的自动控制。 13.1.GD32 DAC 外设原理简介 因篇幅有限,本文无法详细介绍GD32所有系列的DAC,下面以GD32F30x为例,先着重介绍下GD32F30x的DAC及其结构框图,然后介绍下各个系列DAC的差异。 GD32F30x DAC 主要特性 ◼ 8位或12位分辨率,数据左对齐或右对齐; ◼ 每个通道带有DMA功能; ◼ 同步更新转换; ◼ 外部事件触发转换; ◼ 可配置的内部缓冲区; ◼ 输入参考电压VREF+; ◼ 噪声波生成(LSFR噪声模式和三角噪
[单片机]
兆易创新推出GD32H737/757/759系列Cortex®-M7内核超高性能MCU
中国北京(2023年5月11日) — 业界领先的半导体器件供应商兆易创新GigaDevice(股票代码 603986)今日宣布,正式推出中国首款基于Arm® Cortex®-M7内核的GD32H737/757/759系列超高性能微控制器 。 GD32H7系列MCU具备卓越的处理能效、丰富连接特性及多重安全机制,以先进工艺制程和优化的成本控制,全面释放高级应用的创新潜力。 全新产品组合包括3个系列共27个型号,提供176脚和100脚BGA封装,176脚、144脚和100脚LQFP封装等五种选择,将于5月底陆续开放样片和开发板卡申请,10月起正式量产供货。 GD32H7可广泛用于数字信号处理、电机变频、电源、储能系统、无人机、
[嵌入式]
如何排查GD32 MCU复位是由哪个复位源导致的?
上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内核软复位、窗口看门狗复位等,在一个GD32系统中,如果莫名其妙产生了MCU复位,如何排查具体是由哪个复位源导致的呢? GD32 MCU贴心的为大家提供了一个查看复位源的寄存器,如下图所示,该寄存器的bit26-bit31显示各种复位状态,其中LPRSTF表示发生过低功耗复位、WWDGTRSTF表示发上过窗口看门狗复位、FWDGTRSTF表示发生过独立看门狗复位、SWRSTF表示发生过系统软复位、PORRSTF表示发生过POR电源复位、EPRSTF表示发生过NRST引脚复位,这几个状态标志位为只读标志位,如果希望清除复位标志,可以通过
[单片机]
兆易创新GD32 MCU芯片5年出货量破2亿颗
凭借全球领先的存储器市场地位,兆易创新在MCU上也发挥了强大的片上存储和缓存资源的巨大优势。 据集微网了解,日前兆易创新公司内部低调举办了MCU 出货量破2亿颗小庆典。从2013年兆易创新推出中国首个Arm® Cortex®-M3内核32位通用MCU系列产品算起,到今天仅5年时间,兆易创新已经走在了市场的前列,并更拥有广泛的行业品牌用户群。 兆易创新GD32 MCU是中国高性能通用微控制器领域的领跑者,中国第一个推出的Arm® Cortex®-M3及Cortex®-M4 内核通用MCU产品系列,已经发展成为中国32位通用MCU市场的主流之选。目前兆易创新已经拥有超过1万家客户数量,19个系列300余款产品选择所提供的广
[单片机]
基于RT-Thread的GD32应用实战学习指南
01 gd32简介 GD32是由兆易创新(GigaDevice)研发设计的一系列32位MCU,GD32是有和ST产品线P2P的产品系列,但和ST的产品差距还很大,还需要国人们一起努力呀。 目前GD32的单片机从内核上区分有Cortex-M3、Cortex-M4、Cortex-M23和RISC-V内核系列。 开发环境:支持主流的Keil MDK4/5、IAR等 IDE; 开发编程/烧写工具:因为采用标准的Cortex-M内核,所有支持标准的JlinkV8/V9、Ulink2和自己的GD-link工具; 总之,只要你熟悉STM32,那么上手GD32就很快,而且GD32还有很多开发板,每块开发板都配备有相应的dem
[单片机]
GD32 ADC转换时间如何计算?
GD32 MCU当前产品的ADC都是SAR ADC,它有着转换速度快,精度高的优点,刚好适合在一些需要快速ADC转换的场合使用,比如电机应用。那么小伙伴们知道如何计算GD32 ADC的转换时间吗? 以GD32F30x为例,我们看下用户手册中关于ADC转换时间的介绍: 可以看到,ADC一个通道的转换时间=采样时间+12.5个CK_ADC周期。 我们再来看GD官方ADC的例程。 首先是 时钟 配置,程序中ADC的时钟来源是APB2的6分频: 从GD32F30x的系统架构中我们能看到,ADC0、1、2是挂载在APB2总线下的: 如果APB2总线的频率是120MHz,那么按照程序中的设置,ADC的时钟频率为120M/
[单片机]