如图片,这是我的芯片的I2C的地址说明。 我让芯片作为从,主机(STM32的I2C2)作为主。上面说了可以用:通用地址:0000000或者11XXXXHW,我把HW接高电平了,HW=1. 但是我试遍了11XXXX1,主机都得不到ACK, 用0000000曾经试通过,并且读到信息。现在又不通了。检查了芯片的连接,没有问题。 对了,I2C的广播地址是不是 0xFF. 以下为我的代码: I2C_GenerateSTART(I2C2, ENABLE); /* Test on I2C2 EV5 and clear it */ while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT)); /* Send I2C slave Address for write */ I2C_Send7bitAddress(I2C2, MOTOR_WRITE_ADDRESS7, I2C_Direction_Transmitter); /* Test on I2C2 EV6 and clear it */ 程序一直死在这里,等待不到ACK: while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); I2C_SendData(I2C2,Cmd_Byte); while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); I2C_GenerateSTOP(I2C2,ENABLE);
|