ZHCACH2 march 2023 PCA9306
如果未為特定目標器件定義命令字節,則向控制器發送 NACK。為了確保為器件發送正確的命令字節,請使用示波器檢查發送到目標的所有 8 位是否與器件數據表中定義的命令位相匹配。請記住,命令字節需要在幀中的地址字節之后和數據字節之前發送。
圖 3-9 顯示了一個示例,其中先發送了 I2C 目標地址和寫入位,后跟一個導致 NACK 的錯誤(超出 I2C 目標的可用寄存器)命令字節。此示例中的目標器件只有四個寄存器(0x00h 至 0x03h)。如果發送寄存器值為 0x04h 的命令字節,則預期結果為 NACK,因為 0x04h 超出了 0x00h 至 0x03h 的可接受字節。
圖 3-8 收到 NACK 的無效寄存器示例圖 3-9 所示的示例使用了與圖 3-8 中相同的 I2C 目標地址和寫入位,但發送了已知良好的命令字節(I2C 目標識別的命令字節),從而產生 ACK。此示例中的目標器件接受 0x03h 寄存器字節,因為目標器件具有 0x00h 至 0x03h 的寄存器值,所有這些寄存器均為可寫入的寄存器。
圖 3-9 收到 ACK 的可接受命令字節示例