您好!
我尝试从 bq7693007DBTR 读取电池电压。 使用的芯片具有 CRC 选项。 因此、我已经确保 CRC 输入正确(函数 writeRegister 处理此操作)。 读取寄存器 CC_CFG、SYS_CTRL1、SYS_CTRL2等将返回写入后的预期值。
要读取芯片的 Arduino 代码片段如下所示:
PinMode (bootPin、输出); digitalWrite (bootPin、HIGH); delay (5); PinMode (bootPin、输入); 延迟(10); writeRegister (CC_CFG、0x19); writeRegister (SYS_CTRL1、B00010000);//在 writeRegister (SYS_CTRL2、B00000000)上切换内部热敏电阻和 ADC;//切换 CC_EN 关闭 延迟(400); Wire.beginTransmission(I2CAddress); Wire.write (VC1_HI_byte);// 0x0C Wire.endTransmission (false); uint8_t b[30]; if (Wire.requestFrom (I2CAddress、30、true)== 30)//在末尾发送停止 { for (int i =0;i<30;i++) { b[i]= Wire.read(); }
b 数组中的输出是
[0] 0x00 uint8_t{data}@0x08d6
[1] 0xec uint8_t{data}@0x08d7
[2] 0x00 uint8_t{data}@0x08d8
[3] 0x00 uint8_t{data}@0x08d9
[4] 0x00 uint8_t{data}@0x08da
[5] 0x00 uint8_t{data}@0x08db
[6] 0x00 uint8_t{data}@0x08dc
[7] 0x00 uint8_t{data}@0x08dd
[8] 0x00 uint8_t{data}@0x08de
[9] 0x00 uint8_t{data}@0x08df
[10] 0x00 uint8_t{data}@0x08e0
[11] 0x00 uint8_t{data}@0x08e1
[12] 0x00 uint8_t{data}@0x08e2
[13] 0x00 uint8_t{data}@0x08e3
[14] 0x00 uint8_t{data}@0x08e4
[15] 0x00 uint8_t{data}@0x08e5
[16] 0x00 uint8_t{data}@0x08e6
[17] 0x00 uint8_t{data}@0x08e7
[18] 0x00 uint8_t{data}@0x08e8
[19] 0x00 uint8_t{data}@0x08e9
[20] 0x00 uint8_t{data}@0x08ea
[21] 0x00 uint8_t{data}@0x08eb
[22] 0x00 uint8_t{data}@0x08ec
[23] 0x00 uint8_t{data}@0x08ed
[24] 0x00 uint8_t{data}@0x08ee
[25] 0x00 uint8_t{data}@0x08ef
[26] 0x00 uint8_t{data}@0x08f0
[27] 0x00 uint8_t{data}@0x08F1
[28] 0x00 uint8_t{data}@0x08f2
[29] 0x00 uint8_t{data}@0x08f3
我在读取的所有寄存器中得到零值。 b[1]对应的值为0xEC、这是芯片的 CRC i2c 地址和返回的数据字节。 (0x3100)但是、所有后续读取的数据为0x00、其对应的 CRC 为0x00。
所有电池均已连接。 是否有解决方案?