工具与软件:
尊敬的 TI 团队:
我正在使用 INA228、并尝试在检测到总线欠压条件时使用 ALERT 引脚将 ESP32从睡眠状态唤醒。
根据数据表、我需要:
-
设置欠压限制(
BUVL、寄存器0x0F) -
启用中的警报功能
ALERT_ENABLE(寄存器0x06、位3 = VBUS_UV) -
启用中的相应位
MASK_ENABLE(寄存器0x03、位3 = VBUS_UV) -
通过设置
EN_ALERT中的第14位()全局启用 ALERT 引脚MASK_ENABLE
I2C 写入到MASK_ENABLE似乎成功(endTransmission()返回0)、但当我读回寄存器时、仅设置了位3。 位14保持清零。
下面是一个最低的写入工作示例:
Wire.beginTransmission(0x40);
wire.write (0x03);// MASK_ENABLE
wire.write (0x40);// MSB:位14 = EN_ALERT
wire.write (0x08);// LSB:位3 = VBUS_UV
Wire.endTransmission ();
//读回
Wire.beginTransmission(0x40);
wire.write (0x03);
wire.endTransmission (假);
wire.requestFrom (0x40、2);
uint16_t mask =(Wire.Read ()<< 8)| Wire.Read ();//始终返回0x0008
我已在同一卷带中的6个独立 INA228芯片上进行了这方面的尝试、和 都显示了相同的行为 :EN_ALERT从未设置、即使VBUS_UV是。
对 INA228寄存器的其他写入都可以正常工作、我已经验证相同的 I2C 代码适用于其他器件(如 MPU6050)上的16位可写寄存器。 因此、这似乎特定于 INA228。
问题:
-
是否存在
EN_ALERTMASK_ENABLE无法设置中的第14位()的任何情况? -
是否存在可能导致该行为的已知器件修订版本或勘误表?
-
INA228是否需要任何其他寄存器配置(例如
CONFIG、ALERT_LATCH等)才能EN_ALERT被写入?
非常感谢您提供任何帮助或见解。 谢谢!
此致