RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//使能ADC1时钟 t_adc.ADC_Mode = ADC_Mode_Independent; //独立模式:ADC1与ADC2独立 t_adc.ADC_ScanConvMode = DISABLE; //禁用通道扫描 t_adc.ADC_ContinuousConvMode = DISABLE; //禁用连续转换 t_adc.ADC_ExternalTrigConv = ADC_ExternalTrigConv_...
ADC输入时钟有ADC_CLK由PCLK2(一般72M)分配产生,最大14M。 ADC用若干个ADC_CLK周期对输入电压进行采样,采样的周期数可由ADC采样时间寄存器ADC_SMPR1和ADC_SMPR2中的SMP位设置,ADC_SMPR2控制通道0~9,ADC_SMPR1控制通道10~17,最小采样周期是1.5个,周期为1/ADC_CLK.。 ADC转换时间:Tconv = 采样时间 + 12....
在上面的代码中,ADC_Values是一个uint32_t类型的数组,用于存储DMA传输的ADC转换结果。由于我们配置了ADC采集两个通道的数据,所以数组的大小设置为2。在实际应用中,可以根据需要调整数组的大小和DMA传输的数据量。 通过以上步骤,就可以在STM32F103上使用HAL库实现单次DMA采集多通道ADC数据的功能。
启动ADC DMA,并把值存入定义的数组,如图18 图16 图17 图18 这样就完成了,可以编译了。 倒腾了半天,希望看看效果,确认是不是对的,所以就用ST-LINK在线调试来查看adcValue数组的值吧。如图19所示。 图19 在线调试 在while(1)处设置断点,全速运行,将adcValue添加到Watch 1,可从中查看多次采样的值。 如果再添...
注入组:刚好四个寄存器。注入数据寄存器16位ADCx_JDRy。y=1~4。 F1系列中分辨率为12位,故还有对齐问题。由ADCx_CR2中的ALIGN位设置,可选为右对齐和左对齐,一般为右对齐。 中断 图16 中断事件 规则组还可以使用DMA请求。 规则组每个通道转换结束后,除了可以产生中断外,还可以产生DMA请求,我们利用DMA及时把转换...
ADC的采样模式主要分两个:规则采样和注入采样。规则模式可采样16个通道,注入模式最多只能4个通道。 配合DMA使用时主要是用规则采样模式。在初始化时配置采样端口为规则采样通道即可如下: 列: ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5); ...
函数ADC_RegularChannelConfig():这一步比较重要,上面我们初始化了ADC,但是并未指定引脚,也就是规则组通道,这里设置有规则组通道和转化顺序以及采样时间。根据上面所说,我们选择ADC1,通道4和5,顺序是通道4第一个采样,通道5第二个采样。ADC_SampleTime 设定了通道的 ADC 采样时间,可选参数如下: ...
STM32F103配置了ADC1 的4个通道,利用定时器的事件触发进行10Hz 的数据采样,数据通过DMA传输。然后希望...
在此模式在规则通道组上执行时,外部触发来自ADC1的规则组多路开关(由ADC1_CR2寄存器的EXTSEL[2:0]选择),它同时给ADC2提供同步触发。此功能必须使用DMA通道。同时两组数据是公用一个寄存器,ADC1数据在低16位,ADC2数据在高16位。由于保证数据稳定,在双ADC同步规则模式的情况下,还添加了多通道同时采样。
对于STM32F103来说,它的ADC是12位,一共18个通道,其中16个外部通道,2个内部通道。支持单次,连续...