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 的时候都会开启 DMA 传输。 电压转换 一般在设计原理图的时候会把 ADC 的输入电压范围设定在: 0~3.3v,因为 ADC 是 12 位的,那么 12 位满量程对应的就是 3.3V, 12 位满量程对应的数字值是: 2^12 = 4096。 数值0 对应的就是 0V。如果转换后的数值为 X , X 对应的模拟电压为 ...
STM32F103配置了ADC1 的4个通道,利用定时器的事件触发进行10Hz 的数据采样,数据通过DMA传输。然后希望...
对于STM32F103来说,它的ADC是12位,一共18个通道,其中16个外部通道,2个内部通道。支持单次,连续...
1、通过ADC1模数转换模块,采集输入的模拟信号,通过定时器的PWM输出触发一次采样,所以采样频率可以通过定时器设置。将ADC采样的数据通过DMA的方式送到指定的内存中去。 2、将采样得到的数据通过循环比较得到最大值和最小是,两者相减得到信号幅值。将得到的采样数据进行FFT变换,然后在进行一系列的计算得到信号的频率。