組み込みシステム設計者のためのLIN2.0マイコン実装術(後編) ――スレーブ・ノード用ドライバ・ソフトウェア開発のポイント

舘 伸幸

tag: 組み込み

技術解説 2006年2月17日

● レスポンス衝突時のブレーク受信に注意

 同期バイト処理では,イベント・トリガ・フレーム時にレスポンスの衝突が起こった場合,注意が必要です.

 図11は,故意にこの現象を起こしたものです.図のいちばん下は,マスタ・ノードの送信波形です.イベント・トリガ・フレームのヘッダに続いて,レスポンスを送信しています(通常,別のスレーブ・ノードがレスポンスを送信するが,ここでは実験の便宜上,マスタ・ノードに送信させている).

 中段の波形は,別のスレーブ・ノードがイベント・トリガのヘッダに対してレスポンスを送信しているものです.LINバスでは,ドミナント("L"レベル)が優先されるので,たまたま(1)と(2)のような波形がタイミング良く重なると,LINバス上では(3)のように11ビットを超えるロー・パルスが生成されてしまう場合があります.ドライバ・ソフトウェアは,これをフレーム途中のブレークと解釈してしまう可能性があり,その場合,後に続くパルス列を計測してボーレート値を求めてしまいます.異常なボーレート値を算出しても±14%のガードをかけておけば,2度と通信できなくなるような状態に陥ることは免れます(コラム「ボーレート補正範囲のなぞ」を参照).しかし,内部の処理状態は保護ID受信に遷移するので,次に来る正しいブレークをうまく認識できず,1フレーム受信しそこなってしまうかもしれません注4

 注4;保護ID以降の受信において,ロー・パルスをブレークと判断する方法には,先に述べたようにフレーミング・エラーを利用している.このため,ボーレートが大きく(±5%以上,±14%以内)ずれると,ブレークとは認識できず単なる受信エラーとなる可能性がある.

f11_01.gif
図11 衝突時のロー・パルス合成
同時に複数のノードが送信を行うと,LINバス上では負論理の論理和の波形となる.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日