我想将MCP73831锂离子充电管理器 IC 的 STAT 线连接到微控制器,以读取它的当前充电状态。
数据表在第 5.2.1 节中解释了 STAT 线是三态输出并具有以下状态:
- 高的
- 低的
- 高阻抗
并提供了一个表格,解释了每个级别如何代表电池的每个充电状态。
如何将此引脚连接到微控制器 I/O 并读取这三种不同的状态?
读取高低非常简单,但检测输入是我以前没有做过的高阻抗。
我想将MCP73831锂离子充电管理器 IC 的 STAT 线连接到微控制器,以读取它的当前充电状态。
数据表在第 5.2.1 节中解释了 STAT 线是三态输出并具有以下状态:
并提供了一个表格,解释了每个级别如何代表电池的每个充电状态。
如何将此引脚连接到微控制器 I/O 并读取这三种不同的状态?
读取高低非常简单,但检测输入是我以前没有做过的高阻抗。
您可以使用两个 10k 电阻将其连接到地和 Vcc,并使用 A/D 输入读取电平。
如果您没有 A/D 备用,请使用 10k 电阻将其连接到 uC 的另一个引脚。如果引脚是高电平或低电平,它当然会分别读取为高电平。低(假设它可以驱动 10k 负载)。如果它是高阻抗,它将读取等于您在另一个引脚上输出的值。
许多微控制器允许您在 GPIO 输入上的弱上拉和弱下拉电阻之间进行选择 - 大约 50k-100k 欧姆。如果输入为高阻态,则启用弱下拉的读取将读取为低电平,随后使用弱上拉的读取将为高电平。
请记住在电阻切换和 GPIO 读取之间等待几微秒,以使引脚上的电压稳定下来。
请注意,较旧的 AVR 和 8051 可能只有弱上拉电阻,而没有弱下拉电阻。
如果您阅读文档 - 第 3.3 节,您会发现它旨在与上拉电阻一起使用。
事实上,对于任何开漏或三态信号,当它处于三态模式时,您并不打算读取它,它的设计方式是为了使信号可以在多个设备之间共享。令人困惑的地方是,如果您正在读取信号并且它处于三态模式(并且您不知道),您可能会得到虚假读数。最好的方法是应用弱上拉,这样如果信号处于模棱两可的状态,则可以适当地读取信号。由于该信号旨在驱动 LED 以指示充电状态(即低电平正在充电),因此带有上拉电阻且读数为高电平,表示它没有充电。
我也在使用 MCP73831 并想将 STAT 连接到其输入引脚上仅接受 3.3v 的 MCU。我还担心将 5v 放在 GPIO 引脚上。
我没有使用分压器,而是使用 MCU 的第二个 GPIO 引脚来切换使用 P 通道和 N 通道 MOSFET 的上拉/下拉电阻(参见下面的电路 - 我认为这被称为图腾柱;- ))。然后我将 STAT 放入一个简单的逆变器,以便 MCU 可以安全地读取它(即~STAT 介于 0 和 3.3v 之间)。
为此,我读取了输出 (~STAT) 的 2 个读数,第一个读数为 CTL 低,第二个读数为 CTL 高。如果读数发生变化,则 STAT 必须浮动。如果您需要一个 LED 来显示充电状态,那么如果您有足够的备用 GPIO,您可以从 MCU 本身进行控制:-)