1、注意设备地址
转自原文:https://blog.csdn.net/lijing198997/article/details/80226460
由于之前使用的eeprom,bmp085,axp209都是使用器件地址作为写地址,器件地址加1后作为读地址,导致使用bq25892后,看了bq5892手册后依然这样操作,导致写设备地址一直无法收到应答信号。困惑了很久,一直认为是自己时序有问题,后来
我与TI工程师交流 才意识到自己对手册的理解有问题。
正确的理解是设备地址为0x6Bh,但是设备地址是取七位,那么二进制应该是0x1101011B,当需要写设备地址时,
写设备地址应该是0xD6h(0x11010110B+0x00000000B),
读设备地址是0xD7h(0x11010110B+0x00000001B)。
当我们需要读取电池电压时,需要先使能REG02寄存器(0x02h)第7位为1,然后再读REG0E寄存器(0x0Eh),不然,读出来的总是0x00。因为默认ADC转换是关闭的。
bq25895的地址是6AH 1101 010+r/w
所以写地址是:1101 0100 = d4H
读地址是:1101 0101 = d5h
2、每次读电压时都要先开ADC,即在读0Eh之前先写02H,测试的如果只在初始化时写一次02h指令写入bdh,在后续读02h时又变成了默认值3dh,而且0EH的值虽然不是0但是一直不变。所以还是每次读之前都要写02h开ADC。