CANの概要
CANとは?
Controller Area Networkの略で、×Car Area Networkではありません。
シンプルで信頼性が高く、自動車や産業機器など幅広い分野で利用されているネットワークです。
~CANの歴史~
| 年 |
歴史 |
| 1986 |
Bosch は最初の CAN プロトコルを公式にリリースし、その後すぐに Philips (現在の NXP) がCANコントローラを統合したMCUをリリースした最初の半導体メーカーの 1つとなりました。 |
| 1993 |
国際標準化機構 (ISO) は CAN を ISO 11898 として標準化しました。その後、3つの標準に分割されました。 ・ISO 11898-1 は、プロトコルのデータ リンク層を記述 ・ISO 11898-2 は、高速 CAN (最大ボーレート 1Mbps) の物理層を記述 ・ISO 11898-3 は、後にリリースされ、フォールト トレラント CAN としても知られる低速 CAN (最大ボーレート 125kbps) の CAN 物理層をカバー |
| 2012 |
Bosch は、より高いデータレートに対応する進化した標準規格である CAN FD 1.0 (CAN with Flexible Data-Rate) をリリースしました。 |
| 2018 |
CAN XL (CAN with Extended Length)が登場。より高いデータ レート、データ長を実現 |
~CANの種類と比較~
| 項目 |
(Classic) CAN |
CAN FD |
CAN XL |
| 登場年 |
1986 |
2012 |
2018 |
| 最大データ長 |
8バイト |
64バイト |
2048バイト |
| 最大伝送速度 |
1 Mbps |
5~8 Mbps |
10~20 Mbps |
| フレーム形式 |
標準フレーム : 11ビットID |
標準フレーム : 11ビットID 拡張フレーム : 29ビットID |
標準フレーム : 11ビットID |
| 互換性 |
- |
CANと後方互換 |
CAN FDと後方互換 |
*CAN XLでは、データ長が2048バイトに増えたことにより、Ethernet(最大 1500バイト)との親和性が上がりました。例えば、Ethernet to CAN XL または CAN XL to Ethernetのプロトコル変換を行う際に、1フレームでパッケージングすることができます。
Ethernet to CAN FDでは、64バイト毎にデータをぶつ切りにしてフレームを作る必要がありました。
~CANのフレームフォーマット比較~

例:CAN FDの標準データ フレーム フォーマット
データサイズが16 Byteまでの場合:

データサイズが20 ~ 64 Byteの場合:

| フィールド |
説明 |
| SOF (フレーム開始) |
メッセージが来ていることを他のECUに伝えるためにドミナント「0」を送信。 |
|
Arbitration ID (Base ID)
(以後"ID"と記載)
|
メッセージと優先度を識別。標準 CAN (CAN 2.0A) フレームの ID は 11 ビット、拡張 CAN (CAN 2.0B) フレームの ID は 29 ビット。 |
| RRS (リモート送信要求) |
Remote Request Substitutionとして、ドミナント「0」固定。
|
| IDE |
標準フォーマット フレーム (11 ビット識別子) か拡張フォーマット フレーム (29 ビット識別子) かを示す。
|
| FDF |
フレキシブル データ フォーマット (FDF) ビットと呼ばれている。フレームがクラシック CAN か CAN FD かを示す。
ドミナント「0」:CAN
リセッシブ「1」:CAN FD
|
| res |
予約ビット。ドミナント「0」固定。 |
| BRS |
Bit Rate Switch。BRSビットのサンプリングポイントで、高速なBit Rateへと切り替え。*サンプリングポイントの調整は要注意。 |
| ESI |
Error State Indicator。送信ノードのエラー状態を伝える。ドミナント「0」でError Active。 |
| DLC (データ長コード) |
データの長さをバイト単位で格納 (0~64 バイト) |
| Data |
実際のデータ値が含まれます。長さは DLC フィールドによって決まる。 |
| Stuff count |
CAN FDで追加された4bitの領域。SOFからData Fieldまでに含まれるスタッフビットの総数を8で割った余りを3bit長でグレイコード化した値で格納。4bit目には偶数パリティを格納。 |
|
CRC (巡回冗長検査)
|
データの整合性をチェックするエラー検出コード。 |
| CRC delimiter (区切りビット) |
リセッシブ「1」である必要あり。 |
| ACK(確認応答スロット) |
CRC プロセスが正常であることを確認。 |
| ACK delimiter (区切りビット) |
リセッシブ「1」である必要あり。 |
| EOF (フレームの終了 ) |
7 ビット。フレームの終了は、リセッシブ「1」で示す。 |
CANの特長
CANの代表的な特長を5つ紹介します。
特長1:各ECUは同じバスを共有

特長2:シンプルなバス構成と差動信号により信頼性を上げる
・CANバスでは、デジタルデータとして”0”と”1”を送受信します
・“0”のことを「ドミナント(Dominant)」、”1”のことを「リセッシブ(Recessive)」と呼びます。

特長3:優先度は、ID番号が小さい方が勝つ!
・複数のノードが同時に送信を開始する可能性があります。この場合、優先度の高いメッセージが最初にバスへのアクセスを「獲得」します。
・以下のようにDevice AのID = 11001000111 (0x647)で、Device BのID = 11011111111 (0x6FF)が同時に送信した場合、Device AのID番号が小さいので、メッセージの送信が継続されます。Device Bが、バスが空いたときに再送するため待機します。

特長4:必要なデータをフィルタして受信できる (CAN, CAN FD)
・バス上のすべてのノードはメッセージの送信と受信の両方が可能で、常にブロードキャストされるメッセージを待ち受けています。すべてのノードにおいて、メッセージを送信するとブロードキャストされます。
・各ノードのCAN コントローラは、ブロードキャストされたメッセージのIDをチェックし、そのID が特定の範囲内にある場合はメッセージを受け入れ、範囲外のメッセージを無視するフィルタを実装できます。
・下図の例では、ノード 1 が現在の車両速度のメッセージを送信するとします。メッセージには ID 0x121 のタグが付けられているので、
- ノード 2 は、0x100 ~ 0x1FF の範囲のID を持つデータを受け入れます。
- ノード 3 は、0x320 ~ 0x352 の範囲のID を持つデータを受け入れますが、今回のメッセージの ID はこの範囲外であるため、データを無視します。

特長5:エラー検出機能による信頼性の向上
車載システムや産業機器など、障害が許されないシステムでは、信頼性が不可欠です。信頼性の向上には、豊富なエラー検出手法が使用されており、メッセージ レベル、ビット レベルで エラー・チェック手法が組み込まれています。これらのいずれかでエラーを検出すると、メッセージは受信されず、受信ノードからエラーフレームが生成されます。
・メッセージレベルでは、CRCチェック (受信ノードが演算したCRC値と、送信フレームに含まれるCRC値が合致しなかった時に、CRCエラーとする)や、フォームチェック (SOF、EOF、ACK デリミタ、CRCデリミタビットは論理が固定されているため、反対の論理が検出された場合はエラーとする)があります。
・ビットレベルでは、送信ノードは自身の送信メッセージを自身で受信して、ビット単位で監視します(ビットモニタリング)。バスに送信したデータビットと反対のビットが読み取られると、エラーが生成されます。
・また「ビットスタッフィングルール」という同じ論理レベルのビットが5回連続すると、スタッフビット(5回連続したビットとは反対の状態ビット)が挿入される仕組みがあります。これにより、ネットワークの同期を維持するためのエッジが確保されます。スタッフィングされたフレームは、受信ノードによってデスタッフィングされます。ビットスタッフィングは、CRCデリミタ、ACKフィールド、EOFを除くフレーム内のすべてのフィールドに適用されます。同じ極性のビットが6回連続すると、ビットスタッフィングルールに違反するため、エラーとみなされます。
特長のまとめ
上記の点をまとめると、CAN バスは自動車および産業用途で多くのメリットを提供します。
・低コスト - 各 ECU ・ノードは、単一の CAN インターフェースを介して通信できるため、配線数の削減、配線重量の低下、コスト削減に貢献します。
・堅牢 – CAN の高速バス ラインは電気的障害に対する耐性が非常に高く、差動信号を用いることで耐ノイズ性にも優れています。一部の CAN コントローラとレシーバーは産業用/拡張温度範囲で使用できます。
・優先度 – フレームの初めに含まれるArbitration IDにより優先度を決定し、メッセージ同士の衝突を回避することができます。
・フィルタ – ネットワーク上の各ノードは、送信されたメッセージを送受信し、メッセージが適切か無視すべきかを判断できます。
・エラー検出 – CAN仕様には、各ノードが送信エラーをチェックするエラー処理機能が組み込まれています。これにより、信頼性を高めることができます。
さいごに
・CANは長年使われているネットワークであり、NXPはCANの老舗です。NXPでは、CANコントローラを統合したマイコンやプロセッサ、CANトランシーバ、システムベースチップ、そしてこれらすべてをサポートする開発ツール、ソフトウェア、各種ドキュメント、技術サポートなど、さまざまなCANソリューションを提供しています。
・CANを使い始めるには、S32 Design Studio IDE 、MCUXpresso IDE 、モデルベース・デザイン・ツールボックス(MBDT)に含まれるサンプルを用います。
・CANを実際に動かしてみた記事はこちら。
1.CANをループバックで動作確認。テストにはFRDMボード1台でOK。
2.CAN通信を行うと共に、CANFDフレームを取得し解説。*テストにはFRDMボード2台必要。
=========================
本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。
お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。
(既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。)