組み込みシステム設計者のためのLIN2.0マイコン実装術(中編) ――使用するCPU性能に応じたオプション選び

舘 伸幸

tag: 組み込み

技術解説 2006年1月17日

● パルス幅の測定は時間的制約やCPU性能を考えて選択

 ブレークの次に来る同期バイト(synch byte)は,通信レート同期のためのフィールドです.LIN 1.3では同期フィールド(synch field)という名称でした.

 マスタ・タスクは,単にUARTで0x55を送信するだけです.一方,スレーブ・タスクは複数の処理手段が考えられます.水晶などの高精度の発振を利用していて十分な精度が見込まれる場合,単にUART受信を行って結果が0x55であることを確認するというのが,処理的にはもっとも簡単な方法です.精度の高くない発振回路を使用して仕様に忠実に設計する場合,タイマなどを利用してパルス幅を計測する処理が必要となります.

 このあたりの詳細は"LIN Physical Layer Specification"の"Bit TIMING REQUREMENTS AND SYNCRONIZA-TION PROCEDURE"という章で記述されています.(理由はわからないが)パルス幅は立ち下がりエッジ間で計測しなければならないと記述されているので,実際の設計・実装でも仕様と一致しておいたほうがよいでしょう.また,計算を簡単にするため,2,4,6,8ビット・タイムの距離で計測するとも記述されています.非力なマイコンでは比較的重い処理になるので,シフト演算1回で計算できる6ビット以外を選ぶとよいでしょう.

 なお,プロトコル仕様書ではスタート・ビットの立ち下がりからビット7の立ち下がりまでの8ビット分を計測して,1/8にする方法が推奨されています(図4).この場合,計測完了から同期バイトのストップ・ビットの終わりまで2ビット分の時間しかないので,とくに非力なマイコンの場合,ボーレート補正処理が同期バイトの次に来る保護IDの受信開始までに終了するかどうかを十分に検討しなくてはなりません.

 十分な時間的余裕が見込まれるなら8ビットで,ややリスキーなら4ビットで計測というのが,実際の設計における選択肢になろうかと思います.

f04_01.gif
図4 ボーレート計測
仕様書ではスタート・ビットの立ち下がりからビット7の立ち下がりまでの8ビット分を計測して,1/8にする方法が推奨されている.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日