ZHCACH2 march   2023 PCA9306

 

  1.   摘要
  2.   商标
  3. 1引言
  4. 2处理 NACK 时的常规检查
    1. 2.1 NACK
    2. 2.2 查看原理图
    3. 2.3 仔细检查控制器和目标之间的 SDA 和 SCL
    4. 2.4 RESET 正确偏置
    5. 2.5 器件焊接正确
  5. 3示波器截图
    1. 3.1 为什么要使用示波器进行调试?
    2. 3.2 设置示波器
    3. 3.3 收到 NACK 时验证 I2C 地址
    4. 3.4 验证启动和停止条件
    5. 3.5 检查字节格式
    6. 3.6 上升时间是否符合 I2C 标准?
    7. 3.7 发送的命令字节是否有效?
  6. 4I2C 开关
    1. 4.1 TI I2C 开关的停止条件
  7. 5I2C 缓冲器
    1. 5.1 缓冲器的 VoL 与 ViLc
    2. 5.2 缓冲器的 VoL 超过 I2C 目标器件的 ViL
    3. 5.3 缓冲器的静态失调电压不能连接到其他静态失调电压
  8. 6检查清单
  9. 7结论

发送的命令字节是否有效?

如果未为特定目标器件定义命令字节,则向控制器发送 NACK。为了确保为器件发送正确的命令字节,请使用示波器检查发送到目标的所有 8 位是否与器件数据表中定义的命令位相匹配。请记住,命令字节需要在帧中的地址字节之后和数据字节之前发送。

图 3-9 显示了一个示例,其中先发送了 I2C 目标地址和写入位,后跟一个导致 NACK 的错误(超出 I2C 目标的可用寄存器)命令字节。此示例中的目标器件只有四个寄存器(0x00h 至 0x03h)。如果发送寄存器值为 0x04h 的命令字节,则预期结果为 NACK,因为 0x04h 超出了 0x00h 至 0x03h 的可接受字节。

GUID-20221012-SS0I-L8GP-SV1C-ZTRGCXG19P0S-low.png图 3-8 收到 NACK 的无效寄存器示例

图 3-9 所示的示例使用了与图 3-8 中相同的 I2C 目标地址和写入位,但发送了已知良好的命令字节(I2C 目标识别的命令字节),从而产生 ACK。此示例中的目标器件接受 0x03h 寄存器字节,因为目标器件具有 0x00h 至 0x03h 的寄存器值,所有这些寄存器均为可写入的寄存器。

GUID-20221012-SS0I-9F9J-H1XN-SWJGRDK9GVVS-low.png图 3-9 收到 ACK 的可接受命令字节示例