ZHCSQH8A September 2025 – October 2025 TCAN5102-Q1
ADVANCE INFORMATION
這是一個通過 I2C 發送和接收字節流的基礎示例。一旦器件在 TX FIFO 中接收到任何字節后,該器件將開始發送 I2C 字節。
| 參數 | 值 |
|---|---|
| CAN 幀格式 | 標準幀格式 |
| I2C 目標地址(7 位) | 0x12 |
| I2C 幀 | 讀取 |
| I2C 目標寄存器地址 | 0x10 |
| 要傳輸的字節 | 8B |
下表顯示了在 CAN 總線上傳輸的步驟和數據。總線的中央網關/控制器稱為 ECU,TCAN 器件稱為“響應器”。
執行 I2C 讀取時,常規操作是先寫入寄存器地址,再執行讀取。這可使目標器件知道要讀取哪個寄存器。這意味著 I2C 讀取通常包含兩個獨立的 I2C 幀:先執行 I2C 寫入,再執行 I2C 讀取。此示例如下所示。
| 步驟 | 發送器 | 數據 | 說明 |
|---|---|---|---|
| 1 | ECU (DLC = 6B) | 0x03, 0x30, 0x10, 0x25, 0x81, 0x10 |
ECU 請求向寄存器 0x3010 (I2C TX FIFO) 寫入 3 字節數據,對應的 I2C 報頭參數為:存儲 = 1、I2C 目標地址 = 0x12、寫入 = 1、I2C 數據大小 = 1 字節(寄存器地址 0x10) |
| 2 | 響應器 | 0x03, 0x01 | 響應器發回一個 OK 以確認已收到請求。 |
| 3 | I2C | I2C 幀:0x25, 0x10 | 此時,響應器開始執行 1 字節數據的 I2C 傳輸。 |
| 4 | ECU (DLC = 3B) | 0x43、0x30、0x10 | ECU 請求讀取 RX FIFO,以檢查用于設置目標地址的初始 I2C 寫入狀態。這樣做是為了驗證目標是否已應答。 |
| 5 | 響應器 | 0x43, 0x01, 0x25, 0x01, 0x01 |
響應器返回 I2C 狀態標志 0x01,表示“成功”狀態,即目標器件已應答地址和數據(寄存器地址)。 |
| 6 | ECU (DLC = 5B) | 0x02, 0x30, 0x10, 0x24, 0x08 |
ECU 現請求向寄存器 0x3010 (I2C TX FIFO) 寫入 2 字節數據,對應的 I2C 報頭參數為:存儲 = 1、I2C 目標地址 = 0x12、寫入 = 1、I2C 讀取大小 = 8 字節 |
| 7 | 響應器 | 0x02, 0x01 | 響應器發回一個 OK 以確認已收到請求。 |
| 8 | I2C | I2C 幀:0x24、0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08 | 此時,響應器開始執行 8 字節的 I2C 讀取 |
| 9 | ECU (DLC = 3B) | 0x4B、0x30、0x10 | ECU 請求從 RX FIFO 讀取 11 字節數據(2 字節報頭 + 8 字節數據 + 1 字節狀態),以獲取從 I2C 目標讀取的數據 |
| 10 | 響應器 | 0x4B, 0x01, 0x24, 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x00, 0x00, 0x00 |
響應器發回 I2C 報頭信息及 8 字節數據。數據后附帶 I2C 狀態標志 0x01,表示“成功”狀態,即目標已應答地址。由于能容納該數據的最近 CAN FD 有效載荷大小為 16 字節,因此在末尾填充 0x00 字節。 |
| 步驟 | 發送器 | 數據 | 說明 |
|---|---|---|---|
| 1 | ECU (DLC = 6B) | 0x03, 0x30, 0x10, 0x25, 0x81, 0x10 |
ECU 請求向寄存器 0x3010 (I2C TX FIFO) 寫入 3 字節數據,對應的 I2C 報頭參數為:存儲 = 1、I2C 目標地址 = 0x12、寫入 = 1、I2C 數據大小 = 1 字節(寄存器地址 0x10) |
| 2 | 響應器 | 0x0A, 0x01 | 響應器發回一個 OK 以確認已收到請求。 |
| 3 | I2C | I2C 幀:0x25, 0x10 | 此時,響應器開始執行 1 字節數據的 I2C 傳輸。 |
| 4 | ECU (DLC = 3B) | 0x43、0x30、0x10 | ECU 請求讀取 RX FIFO,以檢查用于設置目標地址的初始 I2C 寫入狀態。這樣做是為了驗證目標是否已應答。 |
| 5 | 響應器 | 0x43, 0x01, 0x25, 0x01, 0x01 |
響應器返回 I2C 狀態標志 0x01,表示“成功”狀態,即目標器件已應答地址和數據(寄存器地址)。 |
| 6 | ECU (DLC = 5B) | 0x02, 0x30, 0x10, 0x24, 0x08 |
ECU 現請求向寄存器 0x3010 (I2C TX FIFO) 寫入 2 字節數據,對應的 I2C 報頭參數為:存儲 = 1、I2C 目標地址 = 0x12、寫入 = 1、I2C 讀取大小 = 8 字節 |
| 7 | 響應器 | 0x02, 0x01 | 響應器發回一個 OK 以確認已收到請求。 |
| 8 | I2C | I2C 幀:0x24、0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08 | 此時,響應器開始執行 8 字節的 I2C 讀取 |
| 9 | ECU (DLC = 3B) | 0x46、0x30、0x10 | ECU 請求從 RX FIFO 讀取 6 字節數據,以獲取從 I2C 目標讀取的數據 |
| 10 | 響應器 | 0x46, 0x01, 0x24, 0x09, 0x01, 0x02, 0x03, 0x04 |
響應器發回 I2C 報頭信息及 8 字節數據。 |
| 11 | ECU (DLC = 3B) | 0x47、0x30、0x10 | ECU 請求從 RX FIFO 讀取 7 字節數據(2 字節報頭 + 8 字節數據 + 1 字節狀態 - 已讀取的 4 字節),以獲取從 I2C 目標讀取的數據 |
| 12 | 響應器 | 0x47, 0x01, 0x24, 0x85, 0x05, 0x06, 0x07, 0x08, 0x01, 0x00, 0x00, 0x00 |
響應器發回 I2C 報頭信息及 8 字節數據。第二個 I2C 報頭字節設置了 CONT 標志,表示此為部分讀取的 I2C 幀的延續。數據后附帶 I2C 狀態標志 0x01,表示“成功”狀態,即目標已應答地址。由于能容納該數據的最近 CAN FD 有效載荷大小為 12 字節,因此在末尾填充 0x00 字節 |