組み込みシステム設計者のためのLIN2.0マイコン実装術(中編) ――使用するCPU性能に応じたオプション選び
● WakeUp信号検出はマイコンだけでは困難な場合もある
"NETWORK MANAGEMENT"という章には,スリープとウェイクアップについて記述されています.
1) ウェイクアップ(wake up)
ウェイクアップ要求は,250μs~5msの間,バスをドミナント状態("L"レベル)にすることで行います.これは,あるボーレートにおける5ビット分のロー・パルスであり,UARTで0xF0を送信することに相当します(例えば,250μsは20kbpsにおける5ビット幅の"L"に相当する).
起こされる側のスレーブ・ノードは,150μs以上のドミナント・パルス(ロー・パルス)をウェイクアップ信号と認識して,ドミナント・パルスの終了(すなわち立ち上がり)から100ms以内に通常の動作状態になる必要があります.
最初の150μsのドミナント・パルスの認識ですが,マイコン単体では実現困難な場合があります.なぜなら,マイコンがスリープから復帰する際に主発振器の発振安定時間などでms単位の時間が必要なことがあるためです.この場合,ウェイクアップ信号の処理は,物理回線のドライバ回路を用いて行うしかありません.立ち上がりからの100msはわざわざ計測する必要はなく,この時間内にマイコンが正常動作に戻ることが保証できていればよいだけです.
スレーブからウェイクアップ要求を出した場合,150ms以内にマスタからのヘッダがない場合はリトライします.
3回リトライしてもだめな場合,4回目の送信まで少なくとも1.5秒待たねばなりません.
2) 強制スリープ(go-to sleep)
ID=0x3cで,データの最初のバイトが0x00のフレームが,クラスタに対するスリープ命令です.この命令が出された場合以外でも,バスが4秒以上動かなければ各ノードは勝手にスリープします.