2400BPSで256バイト長程度のHDLCに対応したシステムを検討していますが
使い慣れているRL78で対応できるものでしょうか?
もしくは対応したマイコンはありますでしょうか?
Tanakarさん
HLDCってハイレベルデータリンクですよね。HDLCの電気的な変換回路を外部に入れる前提ならRL78でも行けると思いますよ。RL78のSAUでCSIの連続送信モードを使えば、256バイトのデータ列を生成することができます。(マスター送信としてSOだけ使って、SCKは使いません)
受信の方は、同期用のシリアルクロックがもらえないのでCSIでは受けられないため、フラグシーケンス(0x7E)の最初の1ビット目の立下りエッジをトリガとして、TAUで416.666usecの周期で入力ポートをサンプリングすればよいかと思います。(例えばP137/INTP0に入力を接続して、INTP0の立下りエッジでタイマースタート、ハーフビット分の208.333usec待ってから以降1ビット分416.666usecごとにP137をリードしてデータを成形)NRZ,RZ対応や、2400bps程度ならデータの解析やビットスタッフィングはソフト処理でがんばればなんとかなると思います。
P.S.M32C/80シリーズ(M32C81とか)にはHDLC専用のハード機能が搭載されていますけれども保守製品になっているようで、新規の調達は難しそうです。
RL78/G14の評価ボードで試してみたところ外部発振子20MHzで100Kbpsで256バイトの送受信ができました。(とりあえず、HDLC波形として送信と受信ができるところまでは)
2400bpsなら再同期を含めて、もう少し複雑なソフト処理を入れても余裕で間に合うと思います。
気を付けないといけないのはビット列が長いと、それだけクロックの精度が要求されるのでビットのセンターをサンプリングできる前提で2048ビット長だと0.02%くらいのクロック精度が必要です。すなわちチップの内蔵発振器だと精度が悪いので対応できません!
INTP立下り検出→1/2ビット長の時間待ち→サンプリング用のインターバルタイマースタートをDTCを使って制御すれば、タイミング制御が簡単(タイミングを固定化)になると思います。終わりのフラグシーケンスを検出後に次のフレームをうまく再同期する仕組みを考えるのが大変そうですけれども。
Kirin様
アイデアご教授ありがとうございます。
送信はSAUデータの取り込みはTAUの機能にて対応できることが分かりました。
メインの処理とあわせてHDLCの同期処理など間に合うか検討してみたいと思います。
クロックの精度についてもありがとうございます。また、HLDCと打ち間違えてしまったのでタイトルを修正させていただきました。