I2C上每当发送完一个字节数据,都要等待对方的应答与非应答信号。如果应答,那就应答,如果非应答,那就什么不做,只跳过这个时钟周期。
根据我的经验,很多时候其实是不用管它应答没应答的,除非你对数据的正确性要求极为严格,才需要,否则都可以 跳过,比如都可以如下操作。
void I2C_ACK()
{
digitalWrite(I2C_SDA_PIN, HIGH);
digitalWrite(I2C_SCL_PIN, HIGH);
digitalWrite(I2C_SCL_PIN, LOW);
}
void I2C_NACK()
{
digitalWrite(I2C_SDA_PIN, HIGH);
digitalWrite(I2C_SCL_PIN, HIGH);
digitalWrite(I2C_SCL_PIN, LOW);
}
这就是释放SDA,然后给一个时钟周期,高低电平。
|