TI中文支持网
TI专业的中文技术问题搜集分享网站

关于I2C能读不能写的问题

现在我的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非常重要,否则不知道数据完整性会导致误操作。可能是笔误。

赞(0)
未经允许不得转载:TI中文支持网 » 关于I2C能读不能写的问题
分享到: 更多 (0)