zhuqingtao 发表于 2023-11-28 15:41:42

软件如何测量STC8G系列共电电压

STC8G1K系列,供电电压通过VCC输入, 软件如何测量当前的VCC 值?
查看数据手册, 没有发现有VCC的ADC 通道. 这里咨询一下。

神农鼎 发表于 2023-11-28 15:56:27


梁工 发表于 2023-11-28 16:50:05

STC8系列都通用的方法:测量15通道的ADC值即可计算出VCC,10位ADC为:VCC = 1.19*1024/ADC15,12位ADC为: VCC = 1.19*4096/ADC15。

zhuqingtao 发表于 2023-11-30 17:40:23

{:handshake:}

zhuqingtao 发表于 2023-11-30 17:50:00

本帖最后由 zhuqingtao 于 2023-11-30 18:03 编辑

但还是有个疑问, 查看数据手册, 在计算 GPIO 的输入电压 Vin 的时候,要读1.19的 ADC (通道15) 和 Vin的 ADC (例如通道14),
VIN = ADC_Vin * 119 / ADC_15, 要取得两个ADC的值,
但计算 供电电压VCC 时, 为什么 只读取 通道15 的ADC?VCC 管脚输入的ADC 不需要了吗?

kksk 发表于 2023-11-30 18:36:12

zhuqingtao 发表于 2023-11-30 17:50
但还是有个疑问, 查看数据手册, 在计算 GPIO 的输入电压 Vin 的时候,要读1.19的 ADC (通道15) 和 Vin ...

ADC的参考电压是VCC,即ADC读到的值是某一通道电压与VCC的比值。

当我们考虑单独一个通道时,
ADC(x) = res * V(x) / VCC      (式1)

V(x) = ADC(x) * VCC / res
其中res为分辨率,10位ADC时 res = 2^10 = 1024 ,12位ADC则是 res = 2^12 = 4096 。

但此时我们并不知道VCC准确的值,因此无法计算通道电压V(x)。
不难想到,如果我们有一个稳定且确定的电压值(即通道15),那么有
ADC(15) = res * V(15) / VCC      (式2)
其中 V(15) = 1.19 V 已知。

将(式1)与(式2)相除,则有
ADC(x) / ADC(15) = V(x) / V(15)

V(x) = ADC(x) * V(15) / ADC(15)
也就是你写出的式子

但此时我们需要的是VCC,上述方式是将VCC消去的方法
注意到(式2)中除了VCC外均为已知量,则可以变形求得VCC
VCC = res * V(15) / ADC(15)

zhuqingtao 发表于 2023-12-1 09:12:16

{:handshake:}
页: [1]
查看完整版本: 软件如何测量STC8G系列共电电压