现在我的TM4C123G开发板已经能够和作为slave的BQ76920进行通信,可以通过I2C读取到slave中各个寄存器的数据,但是不能写数据到slave的寄存器中,这是为什么呢?
写数据的代码如下,还有个问题就是,写数据的时候我想写入0100 0000的话,是直接写64进去吗? 望各位大神斧正
void I2CSend(uint8_t slave_addr, uint8_t reg, uint8_t data)
{
I2CMasterSlaveAddrSet(I2C0_BASE, slave_addr, false);
//specify register to be read
I2CMasterDataPut(I2C0_BASE, reg);
//send control byte and register address byte to slave device
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_START);
while(I2CMasterBusy(I2C0_BASE));
I2CMasterDataPut(I2C0_BASE, data);
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);
while(I2CMasterBusy(I2C0_BASE));
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_STOP);
}
Detian Shang:
回复 Maka Luo:
确实如此,我昨天也发现了这个问题,主机需要依次发射 从机地址,寄存器地址,数据,以及CRC8,不然的话,就视为通信失败。 多谢大神的指导!!!
感觉自己被指导手册骗了,图上明明在CRC下边写着(optional) =_=
Maka Luo:
回复 Detian Shang:
CRC非常重要,否则不知道数据完整性会导致误操作。可能是笔误。