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 NominalBRS (Bit Rate Switch): 制御フィールドの 1 bit。recessive で切替発動、dominant なら Classical と同じ速度のまま (CAN FD フレームだが速度は上げない)。
なぜ切り替えられるか
| arb 相 | data 相 | |
|---|---|---|
| 送信者 | 複数 (調停中) | 1 人 (勝者確定) |
| 全ノードが同一ビットを見る必要 | 必要 (ワイヤードAND 判定) | 不要 |
| バス長制約 | 強い (往復遅延) | 弱い (信号整合性のみ) |
| 速度上限 | 1 Mbps | 8 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]]
最終更新: