我希望验证下I2C跟bq27220芯片通信是否OK(此I2C与其他芯片通信试过是正常的)。按照文档sluubd4.pdf描述,通过control()接口可以读取DEVICE_NUMBER等信息。
文档描述操作如下:
代码中实现:
step 1、先初始化i2c地址为0x55(对应写地址就是0xAA,读地址就是0xAB)
step 2、往0x00 寄存器写0x01,往0x01寄存器写0x00
step 3、读0x3e寄存器,读四个字节。返回值格式应该是前两个字节表示发送的cmd,后两个字节表示device_number。
//I2C read bq27220 chip id
I2C_Init(0x55); // write add:0xAA
delay();
//read DEVICE_NUMBER
I2C_WriteData(0x00,0x01);
I2C_WriteData(0x01,0x00);
I2C_ReadNData(0x3e, ReadBuf, 4);
结果读出来ReadBuf四个字节如下分别是0x01 0x00 空格 0x02:
同理 ,我读取FW_VERSION也是这样的结果
//read FW_VERSION
I2C_WriteData(0x00,0x02;
I2C_WriteData(0x01,0x00);
I2C_ReadNData(0x3e, ReadBuf, 4);
即使我不做write 动作直接去read 0x3e,读出来也是这样。能帮忙支持下,哪里有问题?
Star Xu:
www.ti.com.cn/…/slua467b.pdf
请参考上面的文档