CAN-LINゲートウェイのソフトウェア・モジュールの実装 ――高い信頼性を確保して異なるプロトコル通信間をつなぐ
● CANとLINのID変換のルールを決める
ネットワーク内のノードIDに合わせて,CANとLINのID変換ルールを決める必要があります.今回は,IDテーブルを作成して変換ルールを実装しています(表3).
また,作成したゲートウェイはLINマスタとしての機能を兼ねているため,LINのスリープ・コマンドや,ウェイクアップ・コマンド処理も実装しています.
エラー制御としては,CANドライバとLINマスタ・ドライバ,およびゲートウェイ自身からのエラー・フラグをモニタできるようにしました.今回用意したエラー情報を表4に示します.
表3 ID変換テーブル例
LIN ID
|
CAN ID
|
メッセージ属性
|
0x80 | 0x80000C00 | BROADCAST :全ノードに送信 (それぞれのIDはブロードキャストIDとなる) |
0x03 | 0xC0000C03 | CAN_NET :CANネットワーク中のCANノードから開始 |
0x85 | 0xC0000C05 | CAN_GW :ゲートウェイ(CANノード)から開始 |
0x0D | 0x80000C0D | LIN_M :ゲートウェイ(LINマスタ)から開始 |
0xFF | 0xFFFFFFFF | END :テーブルの終端 |
表4 エラー一覧
場所
|
エラー情報
|
LIN | バス応答なし メッセージ・タイムアウト ビット・エラー フレーミング・エラー IDパリティ・エラー チェックサム・エラー オーバラン・エラー |
CAN | パリティ・エラー CANモジュール・ステータス・エラー 設定済みエラー メッセージ未取得エラー |
GW | メモリ・バッファあふれ |
- オーバラン・エラー
受信バッファ・レジスタからデータを読み出す前に,次のデータを受信した場合に発生する(UARTのオーバラン・エラーと同じ) - CANモジュール・ステータス・エラー
CANの通信速度やサンプル・ポイントを設定するためには,CANマクロが初期化モードでなければならない.初期化モードでないときに変更しようとした場合,このエラーが発生する - 設定済みエラー
すでにCAN コントローラが起動されており,CANクロックの設定ができない場合に発生する