当我在hc595移位寄存器中写入8位时,i2c的最后一位在第二个hc595中转到Q0。
为什么?
示意图:
我的代码:
i2c_write(0b10101010);
latch_led_sensors_out();
delay_ms(200);
答案 0 :(得分:1)
这是因为I2C协议。即使您想发送8位,您实际上也是在发送9. I2C工作的方式是初始帧包含7(或10)位地址,加上一位用于读/写。在初始8位被输出后,主机发送一个额外的时钟脉冲以读取来自从机设备的ACK / NACK位。请记住,即使从器件正在驱动数据引脚,主器件也会控制时钟。