1

当我在 hc595 移位寄存器中写入 8 位时,i2c 最后一位进入第二个 hc595 中的 Q0。

为什么?

示意图:

在此处输入图像描述

我的代码:

i2c_write(0b10101010);

latch_led_sensors_out();

delay_ms(200);
4

1 回答 1

1

这是因为 I2C 协议。即使您想发送 8 位,但实际上发送的是 9。I2C 的工作方式是初始帧包含 7(或 10)位地址,外加一位用于读/写。在这些最初的 8 位被计时输出后,主设备发送一个额外的时钟脉冲来读取从设备的 ACK/NACK 位。请记住,主机控制时钟,即使从机正在驱动数据引脚。

于 2018-05-23T14:00:42.013 回答