45.3.1 触发ADC的定时器选择和配置 ADC转换既可以选择外部触发也可以选择软件触发。定时器属于外部触发方式,使用定时器触发的好处是可以设置任何ADC能够支持的转换频率。 对于ADC1,ADC2,ADC3来说,规则通道支持的外部触发源如下: 代码语言:javascript 复制 #defineADC_EXTERNALTRIG_T1_CC1((uint32_t)0x00000000)#define...
ADC当开启扫描模式、DMA开始连续模式的时候,依然只能读出第一个通道的ADC的值,后面通道的AD值不更新。 尝试过将buf 固定在RAM_D3中也没有用。 实际最后问题在于,用STM32CubeMX配置工具生成代码的时候,ADC初始化的函数放在了DMA初始化的前面导致的问题。 出现的问题2: 当开启DMA转换的时候,一直在程序一直DMA中断...
一切准备就绪后,ADC 转换后的数据根据转换组的不同,规则组的数据放在 ADC_DR 寄存器,注入组的数据放在 JDRx。 规则数据寄存器 ADC 规则组数据寄存器 ADC_DR 只有一个,是一个 32 位的寄存器,低 16 位在单 ADC 时使用,高 16 位是在 ADC1 中双模式下保存 ADC2 转换的规则数据,双模式就是 ADC1 和 ADC2 ...
#if defined (ADC_CLOCK_SOURCE_PLL) /* 采用PLL异步时钟,2分频,即72MHz/2 = 36MHz */ AdcHandle.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV2; /* 采用AHB同步时钟,4分频,即200MHz/4 = 50MHz */ #elif defined (ADC_CLOCK_SOURCE_AHB) AdcHandle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4...
ADC配置:ADC1 和 ADC2 选择同一引脚, 我这里选择了PA6, 同时对应ADC1和ADC2 的 通道3 ADC1 配置...
46.3.2 ADC时钟源选择 根据第44章2.2小节的讲解,我们知道ADC有两种时钟源可供选择,可以使用来自AHB总线的系统时钟,也可以使用PLL2,PLL3,HSE,HSI或者CSI时钟。 如果采用AHB时钟,不需要做专门的配置,而采用PLL2,PLL3时钟需要特别的配置,下面是使用AHB或者PLL2时钟的配置。
44.2.2 ADC时钟源选择 ADC有两种时钟源可供选择,可以使用来自AHB总线的系统时钟(属于同步时钟,对应下面框图的adc_hclk),也可以使用PLL2,PLL3,HSE,HSI或者CSI时钟(属于异步时钟,对应下面框图的adc_ker_ck)。 结合上面的框图,ADC的时钟源要注意以下几个问题: ...
44.2.2 ADC时钟源选择 ADC有两种时钟源可供选择,可以使用来自AHB总线的系统时钟(属于同步时钟,对应下面框图的adc_hclk),也可以使用PLL2,PLL3,HSE,HSI或者CSI时钟(属于异步时钟,对应下面框图的adc_ker_ck)。 结合上面的框图,ADC的时钟源要注意以下几个问题: ...
有人使用STM32H7系列的ADC模块,定时器触发ADC,数据通过DMA传输到内存。对某通道连续转换几次后求个平均值。他却发现ADC结果虽没有什么问题,但一批数据出来后就纹丝不动了。DMA传输本来设计成的Circular模式,感觉好像工作在Normal模式,结果显然有点不合理。
为了正确使用STM32H7上的ADC模数转换器,必须先把CubeMX上的ADC配置梳理一遍。为此,在ADC1上开启通道IN2与通道IN6为例学习如何配置CubeMX。 二、Cloack Configuration 配置ADC的时钟源adc_ker_ck的频率为72M。有了72M的时钟源,ADC1,ADC2,ADC3就能经过异步时钟模式2分频得到36M的最高的工作频率。下面介绍Parameter ...