notes
Robotics

CAN FD の基本 (アービトレーション相とデータ相)

CAN FD の速度切替の仕組み、BRS ビット、Classical との差分

要点#

CAN FD は 1 フレーム内で 2 段階のビットレートを使う。アービトレーション相は Classical と同じ速度 (バス長制約あり)、データ相のみ高速化 (最大 8 Mbps)。切替は BRS ビットで発動。

数字#

  • Nominal bit rate (arb 相): 最大 1 Mbps
  • Data bit rate (data 相): 最大 8 Mbps (実用 2〜5 Mbps)
  • ペイロード: 最大 64 byte (Classical は 8)
  • DLC 値: 9〜15 で 12/16/20/24/32/48/64 byte を表現
  • 公開: ISO 11898-1:2015

フレーム構造#

[SOF][ID][制御][BRS↑][Data 0-64B][CRC][BRS↓][ACK][EOF]
 ←── アービトレーション相 ──→←── データ相 ──→←アービ相→
     Nominal bit rate           Data bit rate    Nominal

BRS (Bit Rate Switch): 制御フィールドの 1 bit。recessive で切替発動、dominant なら Classical と同じ速度のまま (CAN FD フレームだが速度は上げない)。

なぜ切り替えられるか#

arb 相data 相
送信者複数 (調停中)1 人 (勝者確定)
全ノードが同一ビットを見る必要必要 (ワイヤードAND 判定)不要
バス長制約強い (往復遅延)弱い (信号整合性のみ)
速度上限1 Mbps8 Mbps

Classical vs CAN FD スループット比較#

64 byte のデータを送るケース (500 kbps / 2 Mbps 設定):

  • Classical CAN 500 kbps 8 byte × 8 フレーム: ~2.4 ms
  • CAN FD arb 500k / data 2M で 64 byte 1 フレーム: ~0.4 ms

約 6 倍の実効スループット。

Classical との主な差分#

  • ペイロード拡張 (8 → 64 byte)
  • CRC 強化 (15 bit → 17 or 21 bit、多項式変更)
  • DLC のエンコード変更 (9〜15 が 12〜64 byte にマップ)
  • ESI (Error State Indicator) ビット追加、送信ノードのエラー状態を通知
  • Stuff Bit カウンタ + パリティを CRC 領域に追加

ハードウェア要件#

  • トランシーバ: CAN FD 対応 (5 Mbps 以上対応品)
    • 例: TCAN1044V, TJA1443, MCP2562FD
  • コントローラ: CAN FD 対応 (STM32 の FDCAN、Kvaser 等)
  • 配線: 反射・スタブ長にシビア。Nominal より data 相の方が厳しい

TDC (Transmitter Delay Compensation)#

Data 相で 2 Mbps を超えると、トランシーバ + 配線の伝搬遅延が 1 bit 時間を食い、送信ノード自身のループバック確認が間に合わない。TDC はループ遅延を測ってサンプル点をオフセットする機能。5 Mbps 以上ではほぼ必須。

関連#

  • [[can-basics]]
  • [[can-bit-timing]]
最終更新:

On this page