ZHCACH2 march 2023 PCA9306
如果從設計嘗試通信的器件收到 NACK,則表示出現錯誤,這類錯誤可能因為發送錯誤的地址而導致。
通過 I2C 與器件通信需要在啟動條件啟動后發出特定通信目標器件的地址。如果從設計嘗試通信的器件收到 NACK,這些 NACK 可能是發送到器件的地址有誤造成的。要驗證是否發送了正確的地址,請使用示波器窗口來查看啟動條件啟動后發送到器件的各個位。在 SCL 線上使用時鐘脈沖來標記單個幀的各個位(請記住,每個 ACK 或 NACK 位之間應該有 8 個時鐘脈沖)。當向嘗試通信的器件發送錯誤的目標地址時,會生成 NACK,因此驗證控制器是否發送了正確的地址非常重要。
使用示波器確定發送的目標地址后,接下來請查看 I2C 器件的數據表以了解目標地址值。要使 I2C 通信成功,發送的目標地址必須與目標器件數據表中的地址相匹配。如果目標器件針對發送的每個 I2C 幀發回 NACK,這些 NACK 可能是因為發送的目標地址與目標器件的實際地址不匹配(始終在目標器件的數據表中規定)。
一些 I2C 器件也可能具有硬件可尋址的目標地址,允許用戶更改目標地址。如果是這種情況,請檢查這些硬件可尋址目標位,并確保這些位正確偏置為邏輯高電平或邏輯低電平值。如果這些硬件可尋址目標位保持懸空,則系統中的電氣噪聲可以輕松地更改目標地址。如果目標地址更改為不同于控制器發送的地址值,則目標會發回 NACK。