ようこそ.あなたは 2987 人目のお客様です.キリ番踏んだら連絡してね.
このサイトはniiimがオープンな情報を元に適当なまとめた情報を掲載しています.間違いがあればご指摘頂けると助かります.
CAN,CAN-FD通信にあたり,コントローラは通信相手のコントローラとビットタイミングを同期する必要があります.このためにコントローラは1ビットあたりのタイミングを元に,これをより細かい単位に分解して定義して,所定の方法で調整します.どれくらい細かい単位で管理できるかは,どのクロック数で動作するかという話に他なりません.そこで本稿ではビットタイミングの調整方法と,必要なクロック数について説明します.
なお本稿では特に記載がない限り,コントローラとはCAN,CAN-FDコントローラの両方を指すものとします.
コントローラ内で管理する時間の最小単位をTime Quantum(TQ)と呼びます.コントローラは入力クロック数に対してBaudRate Prescaler(BRP)で分周したものを実際に使用するクロック数として扱います.TQはその1クロックあたりの時間です.
例を示します.コントローラへの入力クロック数が40 MHz,BRPが2であれば,実際に使用するクロック数は20 MHzであり,従って1TQ = 0.5 usとなります.
コントローラ内では,1ビットの時間をより細かい4つのセグメントに区分します.これらをSYNC_SEG, PROP_SEG, PHASE_SEG1, PHASE_SEG2と呼びます.その単位はTQです。SYNC_SEGのみ1TQであると定義されています.
それぞれのセグメントの役割は次の通りです.
名称 | 説明 |
---|---|
SYNC_SEG | ・バス上の各ノードの同期がとれているかの判定に使われる ・各ビットの立下りがSYNC_SEGに入っていれば同期がとれていると判定 |
PROP_SEG | ・ネットワークの物理的な遅延時間を補正する期間 |
PHASE_SEG1 PHASE_SEG2 | ・PHASE_SEG1とPHASE_SEG2の境界がサンプリングポイントとなる |
なおCAN-FDにおいては調停とデータ転送の2種類の転送モードがありますので,ビットタイミングはそれぞれ別々で定義されます.
上述の通りコントローラはSYNC_SEGの立下りで同期を判断します.SYNCが同期されなかった時に,このタイミングの調整に使用するパラメータをSJW(reSynchronization Jump Width)呼びます.同期方法は以下の通りです.
通常CANの転送レートは500 KHzです.また通常CAN-FDでは調停に500 KHz、データ転送には2.0 MHzを転送レートに使用します.
先述の通り,コントローラではこれらの1ビットあたりに対して,より細かいTQに分解して管理します.従って(プロトコルの転送レート) * (1ビットあたりのTQの数) のクロック数が最低限必要となることが分かります.
CAN-FDの調停、データ転送時における適当なビットタイミングの設定例を示します.コントローラへの入力クロック数は40 MHzとします.
項目 | 調停 | データ転送 |
---|---|---|
転送ビットレート | 500 KHz | 2.0 MHz |
PROP_SEG | 23 TQ | 5 TQ |
PHASE_SEG1 | 8 TQ | 2 TQ |
PHASE_SEG2 | 8 TQ | 2 TQ |
1ビットあたりの時間 (TQ) | 40 TQ | 10 TQ |
1ビットあたりの時間 (us) | 80 us | 5 us |
サンプリングポイント | 80 % | 80 % |
最低限必要なクロック数 | 20.0 MHz | 20.0 MHz |
PBR | 2 | 2 |