STM32F103内置ADC

时间:2024-03-26 07:28:15

STM32F103内置ADC

STM32F103内置ADC

有三个ADC控制器,可同时进行三个ADC转换,一共支持23个通道,21个外部和2个内部信号源。

温度传感器一般不用来测环境温度,不准。

STM32F103内置ADC

1.ADC时钟配置:不要让ADC时钟超过14MHZ,否则可能不准。ADC时钟由PCLK2分频而来,如果按照默认设置PCLK2为72MHZ,此时应为6分频或者8分频。一般选6分频,频率越高,转换速率越快。

2.通道采样时间

ADC使用若干个ADC_CLK周期对输入电压采样,采样周期数目可以通过ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。每个通道可以分别用不同的时间采样。

总转换时间如下计算:

TCONV = 采样时间+ 12.5个周期

例如:当ADCCLK=14MHz,采样时间为1.5周期时,TCONV =1.5+12.5=14周期=1μs。

故而,ADC的最小采样时间1us(ADC时钟=14MHz,采样周期为1.5周期下得到)。

3.ADC中断:ADC1和ADC2的中断映射在同个中断向量上,而ADC3的中断有自己中断向量。

规则组转换结束 注入组转换结束,设置了模拟看门狗状态位。

STM32的ADC控制器有很多通道,所以模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换。STM32特别地加入了多种成组转换的模式,可以由程序设置好之后,对多个模拟通道自动地进行逐个地采样转换。它们可以组织成两组:规则通道组和注入通道组。

注入组优先级更高

注入通道最多四通道,规则组最多16通道

**单次转换模式下,ADC只执行一次转换。**该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。

STM32F103内置ADC

如果一个规则通道被转换

1:转换数据被储存在16位ADC——DR寄存器中(左对齐,右对齐)

2:EOC(JEOC)标志被设置。(转换结束标志)

3:如果设置了EOCIE(JEOCIE),则产生中断。

然后ADC停止

**在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。(不断转换同一通道)**此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。

STM32F103内置ADC

如果在使用扫描模式的情况下使用中断,会在最后一个通道转换完毕后才会产生中断。而连续转换,是在每次转换后,都会产生中断。

扫描模式(一般需要DMA)

此模式用来扫描一组模拟通道。

扫描模式可通过设置ADC_CR1寄存器的SCAN位来选择。一旦这个位被设置,ADC扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的所有通道。在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。
这里需要注意的是:如果在使用扫描模式的情况下使用中断,会在最后一个通道转换完毕后才会产生中断。而连续转换,是在每次转换后,都会产生中断。

间断模式

STM32F103内置ADC

4.触发源

触发源就是触发ADC转换的来源,有外部中断线、定时器、软件等触发源。我们初学者常用软件触发,也就是需要转换一次,我们软件启动一次。