ZHCACH2 march 2023 PCA9306
如果从设计尝试通信的器件收到 NACK,则表示出现错误,这类错误可能因为发送错误的地址而导致。
通过 I2C 与器件通信需要在启动条件启动后发出特定通信目标器件的地址。如果从设计尝试通信的器件收到 NACK,这些 NACK 可能是发送到器件的地址有误造成的。要验证是否发送了正确的地址,请使用示波器窗口来查看启动条件启动后发送到器件的各个位。在 SCL 线上使用时钟脉冲来标记单个帧的各个位(请记住,每个 ACK 或 NACK 位之间应该有 8 个时钟脉冲)。当向尝试通信的器件发送错误的目标地址时,会生成 NACK,因此验证控制器是否发送了正确的地址非常重要。
使用示波器确定发送的目标地址后,接下来请查看 I2C 器件的数据表以了解目标地址值。要使 I2C 通信成功,发送的目标地址必须与目标器件数据表中的地址相匹配。如果目标器件针对发送的每个 I2C 帧发回 NACK,这些 NACK 可能是因为发送的目标地址与目标器件的实际地址不匹配(始终在目标器件的数据表中规定)。
一些 I2C 器件也可能具有硬件可寻址的目标地址,允许用户更改目标地址。如果是这种情况,请检查这些硬件可寻址目标位,并确保这些位正确偏置为逻辑高电平或逻辑低电平值。如果这些硬件可寻址目标位保持悬空,则系统中的电气噪声可以轻松地更改目标地址。如果目标地址更改为不同于控制器发送的地址值,则目标会发回 NACK。