CXPI(Clock Extension Peripheral Interface)とは
CXPIとは、Clock Extension Peripheral Interfaceの略称で、HMI領域で増え続ける1対1で接続された機器間のワイヤーハーネス削減、多重化を目的に、日本自動車技術会で規定を策定された日本発の車載通信プロトコル規格です。
スイッチやセンサ入力等からの応答性が求められるシステムでは、入出力機器間を1対1で接続するのが一般的ですが、ワイヤーハーネスの増加による車両重量増が課題になっています。CXPIは、この課題に対応するためCANと比較して低コストながら、LINでは実現できない応答性を備えた次世代のサブネットワーク通信規格として開発されました。
CXPI仕様は、JASO D015およびSAE J3076で規格化された後、2020年にISO 20794として国際標準規格となりました。
- PART 2: APPLICATION LAYER
- PART 3: TRANSPORT AND NETWORK LAYER
- PART 4: DATA LINK LAYER AND PHYSICAL LAYER
- PART 5: APPLICATION LAYER CONFORMANCE TEST PLAN
- PART 6: TRANSPORT AND NETWORK LAYER CONFORMANCE TEST PLAN
- PART 7: DATA LINK AND PHYSICAL LAYER CONFORMANCE TEST PLAN
(※PART 1は廃止、ダイアグ仕様は、ISO 14229-8:2020でUSDonCXPIとして規定)
日本自動車技術会では、多重通信ダイアグ分科会傘下の新HMI系多重通信小委員会でCXPI標準化活動を行っています。サニー技研は、本委員会にソフトウェア開発会社として参加しています。
本ページではJASO-D015で規定されている内容に基づいて記載します。
CXPIの特長
◆CSMA/CR方式を採用
マスタ/スレーブスケジュール方式とCSMA/CR方式を組合せた動作を行い、スケジュールに基づく定期的な要求応答シーケンスの中で、イベントに応じたフレームを送信することが可能。
◆変調方式にPWMを採用
ビット毎の同期併せが可能。
マスタノードが通信バスへクロックを提供し、スレーブノードはこのクロックを用いて通信を行う。
◆1線式バスを採用
クロック成分を含むデータを単線の通信バス上で送受信し、通信速度は最大20kbpsまで対応可能。
◆バーストフレームの選択が可能
データは1フレームで通常フレーム12byte、バーストフレーム255byteまで送信可能。
◆エラー検知にCRCを採用
CRCを採用することによって通信の信頼性を確保。
CXPIの活用領域
CXPI通信が期待されているのは、HMI領域です。HMI(Human Machine Interface)とは、人が直接機械とやりとりをする領域で、自動車ではスイッチ、ワイパー、ライトなどが挙げられます。この領域はコスト面や技術面でCAN通信やLIN通信を使った制御が困難な領域であり、ジカ線で1対1の制御していました。CXPIはこの領域にマッチした車載ネットワークであり、HMI関連のワイヤーハーネス削減に期待されています。
またCXPIは、バーストフレームを使用することで最大255byteまでデータの転送が可能となるため、64byteまで転送が可能なCAN FD通信との連携も期待されています。
CXPIのネットワーク構築例
他プロトコルとの位置付け
自動車のサイドミラーやドアロック等のボディ系制御ではローコストで実現できるLIN通信が多く採用されていますが、LINはシングルマスタによるスケジュールに基づいた定期送信のため、応答性が求められるシステムには不向きです。一方CXPIはマスタノード以外の各ノードから任意のタイミングでデータを送信することが可能です。
またLINと比較したとき、ノードの追加削除に柔軟性があることや、CRCチェックによるデータの信頼性も高く、スレーブ間の通信も可能です。
HMI領域の通信要件に対するプロトコル比較
項目 | 通信要件 | ||||
性能面 | 応答性 | イベント通信に対する応答性が確保できること(50-100ms以内) | ノード数制約要 |
||
拡張性 | ノードの追加削除が容易であること | CANと同等 |
ノード追加はシステム全体に影響 |
||
信頼性 | 高いエラー検出能力があること | (3bit化けまで) |
(5bit化けまで) |
(1bit化けまで) |
CXPIプロトコルについて
CXPIの概要仕様
ネットワーク構成 |
|
ネットワークマネジメント |
|
アクセス方式 |
|
通信方式 |
|
伝送ボーレート |
|
同期方式 |
|
ノードからバスへの出力方法
CXPI通信では、マスタノードが通信バスに常にクロックを供給することでシステム全体を同期させます。マスタノード、スレーブノードはデータをクロックに重畳させたPWM波形を送信します。PWM波形をクロック再生することでスレーブに発振子が不要となる構成をしています。また、マスタノードではUART付きのマイコンで実現が可能であり、CXPI専用のコントローラを必要としないことから、比較的ローコストでシステムを構成することが可能です。
●クロックの供給
マスタノードからスレーブノードへのクロック出力は常時論理値1の波形を送信することによって実現されます。
●マスタノードの出力
マスタノードの出力するクロック信号とUART信号をCXPIトランシーバが合わせ込み、PWM化した信号がCXPIバスへ出力されます。
●スレーブノードの出力
マスタノードの出力するクロック信号と、スレーブノードが送信するUART信号をCXPIトランシーバが合わせ込み、PWM化した信号がCXPIバスへ出力されます。
CXPIフレーム構成
CXPIのフレームには通常フレーム、Sleepフレーム、バーストフレームの3種類があり、データの送信には通常フレームとバーストフレームが使用されます。データ送信に使用するフレームには、要求(ヘッダ)と応答(レスポンス)があり、任意のノードが送信するヘッダに対応するノードがレスポンスを送信する方法でフレーム送信は行われます。
要求 | 任意のノードが送信する |
応答(レスポンス) | ヘッダに対応するノードが送信する | ヘッダ | 送信方式に合わせて、1byteで情報を格納する ・イベントトリガ方式:PID(1byte) ・ポーリング方式:PTYPE(1byte)またはPID(1byte)を送信する |
フレーム情報 | NM(Network Management)、データ長、カウンタを表す情報を格納する |
データ | データを格納する |
CRC | 誤り検知の領域でPTYPE領域を除くフレーム全体を対象とした8bitのCRC演算結果を格納する |
IFS(Inter Frame Space) | フレーム送信後、前のフレームと分離させるために使用する。フレーム送信後の20bit以上のレセシブが連続する期間 |
フレーム送信管理
CXPI通信ではイベントトリガ方式とポーリング方式の2つのアクセス方式があり、前者はイベントの応答性を重視し、後者は通信の定期性を重視したものとなっています。システムの要件に応じていずれか一方を選択して実装します。
CXPIのフレームはPID(Protected ID)領域とレスポンス領域からなり、PID領域のフレームIDに該当するノードはレスポンス領域の送信が可能になります。送信イベントが同時に発生した場合は非破壊型の調停を実施し、フレームの優先度を選択します。
イベントトリガ方式
各ノードはバスのアイドル状態を見つけて自由にフレーム送信が可能です。
フレーム送信後はIFSが検出されたら、CSMA/CR方式でフレームの送信が可能です。
イベントトリガ方式 送信シーケンス
通常フレーム
PID(Protected ID領域)
フレームIDとIDパリティ(奇数パリティ)で構成される領域。
フレームIDに該当するノードはレスポンス領域の送信が可能。
フレーム情報
CT、NM、DLCで構成される領域
・CT:カウンタ情報、フレームの連続性(シーケンス情報)を示す。
・NM:Sleep/Wakeup処理に使用するWakeup.ind 1bit、Sleep.ind 1bitで構成される。
・DLC:データ長を表す
データ
データを格納する領域で通常フレームでは最大12byteまで格納可能。
CRC
CRCによる誤り検知領域で1byteで表す。
IBS(Inter Byte Space)
各バイトデータごとの間隔で9bit以下のレセシブ。
IFS(Inter Frame Space)
フレームとフレームの間隔を空けるために使用する20bit以上のレセシブ。
バーストフレーム
バーストフレームでは、データを最大255byteまで送信することができます。
通常フレームとの違いは下記の項目の通りです。
フレーム情報
・DLC:バーストフレームの指示を実施、4bitを1111で設定する。
フレーム情報(拡張DLC)
バーストフレームで追加された領域で、1byteでデータ長を設定する。
データ
最大255byteまでのデータを設定する。
CRC
CRCによる誤り検知領域で2byteで表す。
ポーリング方式
ポーリング方式はマスタノードが送信するヘッダに従い、イベント送信や定期への応答が可能になる方式です。
マスタノードが通信バス上にPID領域を送信した場合、フレームIDに該当するノードはレスポンスを送信することが可能で、マスタノードがPTYPE領域を送信した場合は、スレーブノードは任意のPID領域を送信することが可能です。
応答性はイベントトリガ方式には劣りますが、通信の定期性を重視する場合にはポーリング方式を採用します。
ポーリング方式 送信シーケンス
通常フレーム
バーストフレーム
ポーリング方式では、標準フレーム、バーストフレームの両方で、新たにヘッダ領域でPTYPE領域が選択可能になります。
PTYPE(Protected TYPE)
7bitのフレームTYPEと1bitのパリティビット(奇数パリティ)で構成される領域
マスタノードからイベント要求を表すPTYPE領域を受信した直後のみ、
任意のノードは非破壊型の調停で任意のフレームをイベントトリガ方式で送信することが可能。
(PTYPE領域はCRCの演算対象外)
Wakeup/Sleep管理
常時電源供給されるノードの消費電力抑制のため、省電力のSleepモードに遷移することが可能です。
Wakeup/Sleep機能の搭載はシステムごとに選択が可能です。
Sleepモード
Sleepモードでは、各ノードがデータの送受信を停止した省電力モードの状態を表します。
トランシーバは発振回路を停止し、PWM符号化をせずNRZで入出力します。
Standbyモード
StandbyモードはNormalモードへの遷移を待機する状態で、Sleepモードからだけ遷移します。
Standbyモード中のマスタノードの場合、通信バスにクロックの送信を開始するとNormalモードへ遷移し、スレーブノード且つ内部要因のイベントが発生したノードの場合、Wakeupパルスを通信バスへ送信し、マスタノードから通信バスへ送信されるクロックを受信した後Normalモードへ遷移します。クロックを受信しない場合はWakeupパルスを再送信できます。イベント送信が発生していないノードの場合は、マスタノードから通信バスへ送信されるクロックを受信するとNormalモードへ遷移します。
スレーブはWakeupパルスの送信・再送を行い、マスタはクロックを出力します。
Normalモード
NormalモードはStandbyモードからだけ遷移します。
マスタノードはNormalモードへ遷移後に定期送信を開始できます。スレーブノードはマスタノードが送信する任意のPID領域もしくはPTYPE領域を受信後にデータの送信が可能となります。
Normalモード中マスタノードはSleep条件成立後、Sleepフレームを通信バスへ送信し、クロック送信停止後にSleepモードへ遷移します。スレーブノードはマスタノードからSleepフレームを受信した後、規定時間経過後にSleepモードへ遷移します。
Sleepフレーム
SleepフレームはNormalモードの時に、マスタノードが各スレーブノードにSleep準備をさせるために使用します。
Sleepフレームは固定長で、PID領域とデータは固定値が格納されます。フレーム情報の領域は現在のステータスが反映されます。
Sleepシーケンス
全てのノードから一定期間Sleep禁止フレームを受信しない時もしくは、マスタノードがシステム要件で規定されたSleep条件に合致したとき、マスタノードはSleepフレームを送信することが可能です。
スレーブノードはSleepフレームを受信するとSleepの準備をし、規定時間経過後にSleepします。
マスタトリガのWakeupシーケンス
Sleepモード時にマスタノードは内部的なイベントを検知した後通信バスにクロックを送信します。
スレーブノードはマスタノードが送信したクロックをトリガに一定時間以内にStandbyモードへ遷移し、その後クロックを受信するとNormalモードへ遷移します。
マスタノードは起動完了時間以降、一定時間内に任意のPID領域またはPTYPE領域の送信を開始し、スレーブノードはマスタノードが送信する最初のPID領域またはPTYPE領域の受信を確認したタイミングで通信バスへ送信が可能になります。
スレーブトリガのWakeupシーケンス
Sleepモード時にスレーブノードは内部的なイベントを検知した後通信バスにWakeupパルスを送信します。
マスタノードはWakeupパルスを受信したあと一定時間以内に通信バスへクロックを送信する。各スレーブノードはWakeupパルスを受信後一定時間内にStandbyモードへ遷移し、その後クロックを受信した後にNormalモードへ遷移します。
マスタノードは起動完了時間以降、一定時間内に任意のPID領域またはPTYPE領域の送信を開始し、スレーブノードはマスタノードが送信する最初のPID領域もしくはPTYPE領域の受信を確認したタイミングで通信バスへの送信が可能になります。
Wakeupパルス再送信シーケンス
スレーブノードトリガのWakeup処理の時、スレーブノードがWakeupパルスを送信してもマスタノードが通信バスへクロックを送信しない場合は、Wakeupパルスを再送信することが可能です。Wakeupパルスを送信し、一定時間経過しても通信バスからクロックを受信しない場合、Wakeupパルスを送信したノードは再送信を含めて2度までWakeupパルスを送信することが可能です。
Wakeupパルスを再送信しても、マスタノードからクロックが送信しない場合は、フィジカルバスエラー処理によるSleep後に再度Wakeupシーケンスを実施することが可能です。
マルチクロックマスタ処理(オプション)
システムがWakeup状態へ遷移するとき、プライマリクロックマスタが通信バスへクロックを送信しない時、セカンダリクロックマスタが代わりにクロックを送信することが可能です。
この動作はプライマリクロックマスタの故障などによって、主要機能が動作しなくなることを一時的に防ぐためのものであり、プライマリクロックマスタ故障の恒久対策ではありません。
この処理はシステムごとに搭載を選択することが可能です。
エラーの種類
CXPIにはバスの異常やノードの故障を通知するために、8種類のエラーが存在します。
エラーの種類 | 検出ノード | エラー検出箇所 | 詳細 |
ビットエラー | 送信ノード | イベントトリガ方式 ・PID領域のスタートビット及びストップビット ・レスポンス領域 |
送信しているビットの値と受信しているビットの値を比較し、不一致の場合ビットエラーを検出し、送信処理を中断します。 |
CRCエラー | 受信ノード | ・PID領域 ・フレーム情報 ・データ |
送信ノードはエラー検出対象としたCRC演算結果をCRC領域に格納して送信し、受信ノードはCRC演算結果が受信したCRCと異なる場合にCRCエラーを検出する。エラーを検出した時にフレームは破棄されます。 |
パリティエラー | 受信ノード | イベントトリガ方式 ・PID領域 ポーリング方式 ・PTYPE領域 ・PID領域 |
送信ノードはイベントトリガ方式の時はPID領域、ポーリング方式の時はPTYPE領域またはPID領域の論理値1の数が奇数値になるようにパリティビットに0または1を入れてフレームを送信する。受信ノードは受信した同領域の論理値1の数を計算し、偶数個であった場合はパリティエラーを検出し、受信したPTYPE領域またはPID領域を無効として応答しません。 |
フィジカルバスエラー | 全てのノード | Wakeup/Sleep対応システム時 ・StandbyモードまたはNormalモード時に検出する Wakeup/Sleep非対応システム時 ・起動状態の時に検出する |
フレームTYPEまたはフレームIDの受信がない状態かつ、フィジカルバスエラー判定時間(4秒以上10以内)にフィジカルバスエラー条件が成立します。 Wakeup/Sleep対応システムの場合 エラーを検出すると自ノードがSleep許可状態の時はSleepへ遷移し、Sleep禁止状態の時は、StandbyモードもしくはNormalモードを維持してアプリケーションにエラーを通知します。 Wakeup/Sleep非対応システムの場合 エラーを検出するとアプリケーションにエラーを通知します。 |
データレングスエラー | 送信ノード 受信ノード |
送信ノード ・レスポンス領域 受信ノード ・フレームのDLC以降 ・バーストフレーム時はフレームの拡張DLC以降 |
送信ノードの場合 送信すべきデータ長と通信バス上のフレームのデータ長が異なる場合にデータレングスエラーを検出し、送信処理を中断します。 受信ノードの場合 フレーム情報のDLCと受信したフレームのデータ長を比較し、異なる場合はデータレングスエラーを検出しフレームを破棄します。 |
カウンタエラー(オプション) | 受信ノード | ・フレーム情報のCT | 受信ノードは任意のフレームのフレーム情報中のCTを確認し、その前に受信した同じフレームIDのフレームに含まれるCTの値と比較し、連続していなかった場合にカウンタエラーを検出し、アプリケーションにエラーを通知します。 |
オーバーランエラー | 受信ノード | ・受信データ全て | 受信ノードのコントローラが通信バスから受信したUARTデータをバッファレジスタから読み出す前に次のUARTデータが転送され、本来読み出すべきだったUARTデータが新しいUARTデータに上書きされた時にオーバーランエラーを検出し、受信処理を中断し受信中のフレームを破棄します。 |
フレーミングエラー | 送信ノード 受信ノード |
・UARTフレーム全て | 受信ノードが受信したUARTフレームの最後のストップビットの論理値が0であった場合にフレーミングエラーを検出し、送信ノードの場合は、送信処理を中断し、受信ノードの場合は、受信処理を中断し、受信中のフレームを破棄します。 |
LINとの比較
項目 | CXPI | LIN | |
アクセス方式 | CSMA/CR方式 (イベント対応、スレーブ間通信) |
スケジュールテーブルに基いたポーリング方式 | |
Wakeup/Sleep対応 | 〇 | 〇 | |
再送信プロセス | 即時再送可能 | 次のポーリング待ち | |
フレーム | ID(パリティ) | 7bit ID(1bitパリティ) | 6bit ID(2bitパリティ) |
データ長 | ・通常フレーム:0~12byte ・バーストフレーム:0~255byte(オプション) |
0~8byte | |
エラー検出 | ・通常フレーム:8bit CRC ・バーストフレーム:16bit CRC(オプション) |
チェックサム | |
フレームの非破壊調停 | 〇 | × | |
変調方式 | PWM方式(ビット毎に同期) | NRZ(フレーム毎に同期) | |
トランシーバ | アナログ+デジタル (符号化/複合化、調停、クロック生成) |
アナログ |
サニー技研のCXPI通信への取り組み
サニー技研では、CXPI通信にいち早く取り組み、CXPI評価ボードや通信ミドルウェアなどお客様がCXPI通信をすぐに立ち上げることが出来る環境をご用意しています。
CioRy通信ミドルCXPIスレーブソフトは、試作開発から量産ECU向けなど多数搭載実績があり、多くのお客様にご活用いただいています。その他にも、ご指定デバイスへの対応やOEM仕様対応などお客様のご要望へ柔軟に対応可能です。