STM32G4系列ADC采集与配置

模数转换器(ADC)

1、介绍

本节介绍最多5个ADC的实现:

ADC1和ADC2紧密耦合,可以在双模下运行(ADC1为主)。

ADC3和ADC4紧密耦合,可以在双模下运行(ADC3为主)。

ADC5独立控制

每个ADC由一个12位逐次逼近模数转换器组成。

每个ADC最多有19个多路复用通道。各种通道的A/D转换可以以单模式、连续模式、扫描模式或不连续模式进行。ADC的结果存储在左对齐或右对齐的16位数据寄存器中。

ADC映射到AHB总线上,以实现快速数据处理。

模拟看门狗功能允许应用程序检测输入电压是否超出用户定义的高阈值或低阈值。

内置的硬件过采样允许提高模拟性能,同时减轻CPU的相关计算负担。

实现了一种高效的低功耗模式,以允许在低频下非常低的功耗。

2、ADC主要特点

•高性能功能

–最多5个ADC,其中4个(成对)可以在双模式下运行:

ADC1连接到14个外部通道+4个内部通道

ADC1 is connected to 14 external channels + 4 internal channels
ADC2 is connected to 16 external channels + 2 internal channels
ADC3 is connected to 15 external channels + 3 internal channels
ADC4 is connected to 16 external channels + 2 internal channels
ADC5 is connected to 13 external channels + 5 internal channels

–12、10、8或6位可配置分辨率

–ADC转换时间与AHB总线时钟频率无关
–通过降低分辨率加快转换时间
–管理单端或差分输入
–AHB从属总线接口,可实现快速数据处理
–自校准

–通道式可编程采样时间
–灵活的采样时间控制
–最多四个注入通道(模拟输入分配到常规或注入通道是完全可配置的)
–硬件助手准备注入通道的上下文,以实现快速上下文切换
–数据与内置数据一致性保持一致
–数据可以通过DMA进行常规通道转换管理
–4个用于注入通道的专用数据寄存器

•过采样器
–16位数据寄存器
–过采样率可在2到256之间调节
–可编程数据移位高达8位

•数据预处理
–获得补偿
–抵消补偿

•低功耗功能
–速度自适应低功耗模式,以降低低频运行时的ADC功耗
–允许慢速总线频率应用,同时保持最佳ADC性能
–提供自动控制,以避免低AHB总线时钟频率应用中的ADC超限(自动延迟模式)

•每个ADC的外部模拟输入通道数量
–GPIO焊盘最多5个快速通道
–GPIO焊盘最多13个慢速通道

•此外,还有几个内部专用通道
–连接到ADC1、3、4和5的内部参考电压(VREFINT)
–连接到ADC1和ADC5的内部温度传感器(VTS)
–VBAT监控通道(VBAT/3),连接到ADC1、3(仅适用于3类设备)和5
–OPAMP1内部输出连接到ADC1
–连接到ADC2的OPAMP2和OPAMP3内部输出
–连接到ADC3的OPAMP3内部输出
–连接到ADC4(适用于3类设备)或ADC3(适用于4类设备)的OPAMP6内部输出
–连接到ADC5的OPAMP4和OPAMP5内部输出

•可以启动转换:
–通过软件进行常规和注入转换
–通过具有可配置极性的硬件触发器(内部定时器事件或GPIO输入事件)进行常规和注入转换

•转换模式
–每个ADC可以转换单个通道或扫描一系列通道
–单模式每次触发器转换一次选定的输入
–连续模式连续转换选定的输入
–不连续模式

•ADC1、ADC2、ADC3和ADC4的双ADC模式
•ADC就绪时的中断生成、采样结束、转换结束(常规或注入)、序列转换结束(定期或注入),模拟看门狗1、2或3或超限事件
•每个ADC 3个模拟监视器
–监视器可以执行过滤以忽略超出范围的数据
•ADC输入范围:VREF–≤VIN≤VREF+

3、ADC实现

4、ADC功能说明

4.1、ADC框图

3、ADC pins and internal signals

4、ADC clocks

双时钟域架构

双时钟域架构意味着ADC时钟独立于AHB总线时钟

所有ADC的输入时钟都是相同的,可以在两个不同的时钟源之间进行选择

1、ADC时钟可以是特定的时钟源,来源于以下时钟源:

– The system clock
– PLL “P” clock

有关如何生成ADC专用时钟的更多信息,请参阅RCC部分。
要选择此方案,必须重置ADCx_CCR寄存器的CKMODE[1:0]位

2.ADC时钟可以从ADC总线接口的AHB时钟除以可编程因子(1、2或4)得出。在此模式下,可以选择可编程分频器因子(根据位CKMODE[1:0]选择/1、2或4)。
要选择此方案,ADCx_CCR寄存器的CKMODE[1:0]位必须不同于00

对于选项2),只有在设置了AHB预分频器(RCC_CFGR寄存器中的HPRE[3:0]=0xxx)的情况下,才能使用1的预分频因子(CKMODE[1:0]=01)。

选项1)的优点是,无论选择何种AHB时钟方案,都能达到最大ADC时钟频率。ADC时钟最终可以除以以下比率:
1, 2, 4, 6, 8, 12, 16, 32, 64, 128, 256; 使用ADCx_CCR寄存器中配置有位PRESC[3:0]的预分频器

选项2)具有绕过时钟域重新同步的优点。当ADC由计时器触发时,如果应用程序要求ADC精确触发而没有任何不确定性(否则,两个时钟域之间的重新同步会增加触发时刻的不确定性),这可能很有用。

ADC时钟和AHB时钟之间的时钟比约束

ADC时钟和AHB时钟之间的比率通常没有限制,除非对某些注入通道进行了编程。在这种情况下,必须遵守以下比率:

5、ADC1/2/3/4/5 connectivity

ADC1、ADC2、ADC3、ADC4和ADC5紧密耦合,并共享一些外部信道,如下图所示。

ADCy_INPx对应于产品数据表中定义的ADCy_INx引脚   (598、599)

6、从属AHB接口

ADC实现了一个AHB从端口,用于控制/状态寄存器和数据访问。AHB接口的功能如下:

•字(32位)访问
•单周期响应
•以零等待状态响应对寄存器的所有读/写访问。

AHB从属接口不支持拆分/重试请求,并且从不产生AHB错误

7、ADC深度断电模式(DEEPPWD)和ADC电压调节器(ADVREGEN)

默认情况下,ADC处于深度断电模式,其电源在内部关闭以减少漏电流(ADC_CR寄存器中位DEEPPWD的复位状态为1)。

要启动ADC操作,请按照以下顺序操作:
1.通过清除DEEPPWD位退出深度断电模式。
2.通过设置ADVREGEN启用ADC电压调节器。
3.等待启动时间以配置ADC(有关启动时间的值,请参阅设备数据表)。

ADC操作完成后,可以禁用ADC(ADEN=0)。还可以通过禁用ADC电压调节器来节省电力。这是通过写入位ADVREGEN=0来完成的。
然后,为了通过减少漏电流来节省更多功率,还可以通过在ADC_CR寄存器中设置位DEEPPWD=1来重新进入ADC深度断电模式。在进入停止模式之前,这尤其有趣

写入DEEPPWD=1会自动禁用ADC电压调节器,ADVREGEN位会自动清除。
当内部电压调节器被禁用(ADVREGEN=0)时,内部模拟校准保持不变。
在ADC深度断电模式(DEEPPWD=1)下,内部模拟校准丢失,需要重新启动校准或重新应用之前保存的校准系数

8、单端和差分输入通道

通过在ADC_DIFSEL寄存器中编程DIFSEL[i]位,可以将通道配置为单端输入或差分输入。必须在禁用ADC(ADEN=0)时写入此配置。请注意,与单端信道对应的DIFSEL[i]位始终被编程为0。
在单端输入模式下,通道“i”要转换的模拟电压是等于VINP[i](正输入)和VREF−(负输入)的ADCy_INPx外部电压之差。
在差分输入模式下,通道“i”要转换的模拟电压是ADCy_INPx外部电压正输入等于VINP[i],ADCy_INNx负输入等于VINN[i]之间的差。
差分模式下的输入电压范围为VREF-至VREF+,其满标度范围为2xVREF+。当VINP[i]等于VREF-时,VINN[i]等于VRE+,最大负输入差分电压(VREF-)对应于0x000 ADC输出。当VINP[i]等于VREF+时,VINN[i]等于VRE-,最大正输入差分电压(VREF+)对应于0xFFF ADC输出。当VINP[i]和VINN[i]连接在一起时,零输入差分电压对应于0x800 ADC输出。

差分模式下的ADC灵敏度是单端模式下的两倍。
当ADC配置为差分模式时,两个输入都应偏置在(VREF+)/2电压。有关允许的共模输入电压VCMIN,请参阅设备数据表。
输入信号应该是差分的(共模电压应该是固定的)。
内部通道(如VTS和VREFINT)仅在单端模式下使用。
有关如何连接每个ADC的输入通道的完整说明,

作者:509昊

物联沃分享整理
物联沃-IOTWORD物联网 » STM32G4系列ADC采集与配置

发表回复