你好!
我使用adc_init(GP_ADC_SE, 0, 0);。我想知道ADC的值是多少。当我有1。2 v时,我读0x106。我知道1023 (0x03FF)是最大值。我做错什么了吗?
谢谢你!
(编辑)我使用的是274K和100k电阻的电压因数,这样当电池是4.5V时,P00的值将是1.2V。电流有影响吗?
嗨Vrado,
请查看UM-B-051(第70页)软件开发工具包部分的文档标签,以了解与ADC相关的值。在adc_init()函数中,第三个值(attn)是内部ADC衰减器。不使用衰减器的ADC可以测量0-1.2V范围内的电压。当衰减器使能时,ADC可以在1.2-3.6V范围内测量。在没有使用衰减器的情况下,ADC的内部阻抗被认为是无穷大的。这种情况下的泄漏量为~12nA。当衰减启用时,有两个电阻内部连接,一个200K和一个100K创建一个通向GND的总电阻300K的路径,您需要将其包括在电压分压器上的泄漏计算中。你的外部电压因数也会造成额外的电流泄漏。您需要将这一点考虑到设计的功耗预算中。将从ADC读取的值转换为实际毫伏,公式为:
如果ADC内部衰减器已启用:Value = (ADC_Reading * 3.6) / 1024
如果ADC内部衰减器被禁用:Value = (ADC_Reading * 1.2) / 1024
“值”用伏特表示。
由于您需要测量高达4.5V,这是超出ADC范围,您需要使用外部电压因数,正如您已经做的。除数使用带来的问题是额外的功耗和在电阻值非常高的情况下,ADC端口可能出现的噪声。较小的电阻有助于ADC有更好的信噪比,但更高的功耗。一个可能的解决方案是在GND和电阻之间使用FET,通过580的GPIO来控制其栅极。因此,当您需要测量电池电压时,您将通过FET启用除数,其余时间您可以禁用它以节省电力。
谢谢,
STS_Dialog。
嗨Vrado,
请查看UM-B-051(第70页)软件开发工具包部分的文档标签,以了解与ADC相关的值。在adc_init()函数中,第三个值(attn)是内部ADC衰减器。不使用衰减器的ADC可以测量0-1.2V范围内的电压。当衰减器使能时,ADC可以在1.2-3.6V范围内测量。在没有使用衰减器的情况下,ADC的内部阻抗被认为是无穷大的。这种情况下的泄漏量为~12nA。当衰减启用时,有两个电阻内部连接,一个200K和一个100K创建一个通向GND的总电阻300K的路径,您需要将其包括在电压分压器上的泄漏计算中。你的外部电压因数也会造成额外的电流泄漏。您需要将这一点考虑到设计的功耗预算中。将从ADC读取的值转换为实际毫伏,公式为:
如果ADC内部衰减器已启用:Value = (ADC_Reading * 3.6) / 1024
如果ADC内部衰减器被禁用:Value = (ADC_Reading * 1.2) / 1024
“值”用伏特表示。
由于您需要测量高达4.5V,这是超出ADC范围,您需要使用外部电压因数,正如您已经做的。除数使用带来的问题是额外的功耗和在电阻值非常高的情况下,ADC端口可能出现的噪声。较小的电阻有助于ADC有更好的信噪比,但更高的功耗。一个可能的解决方案是在GND和电阻之间使用FET,通过580的GPIO来控制其栅极。因此,当您需要测量电池电压时,您将通过FET启用除数,其余时间您可以禁用它以节省电力。
谢谢,
STS_Dialog。