ルネサスRx231へのファームウェア移行開発の状況(通信IF編)

 Rxマイクロコントローラ(MCU)へのファームウエア移行開発のご依頼を頂き、H8/300Hシリーズ向けに開発されたユーザーアプリケーションをRx231へ移行する作業を進めています。ルネサスエレクトロニクス社が提供するSCI(シリアル通信IF)モジュールとRIIC(I2Cバスインタフェース)モジュールを、ユーザアプリケーションと連携しましたので、移行時の注意点をまとめてみました。

EEPROM 1バイト書込み処理の比較(H8/300HシリーズとRx231シリーズ)
  • Fitモジュールがない場合
    H8/300Hシリーズを用いたときのEEPROM バイト書込み処理のフローチャートが左側になります。このシリーズはI2C I/Fがペリフェラルとして用意されていないため、汎用IOのポート制御を用いてデータの生成や、EEPROMからのACK/NACK応答の監視を行います。
    送信データ(1Byte)をEEPROMへ出力し、EEPROMからのACK応答を待つ動作を繰り返します。Stopビット出力後は、ターゲットのEEPROMにセットされたデータが記憶されるまで、NACK応答となるため、完了するまでウエイトを入れます。ウエイト時間は使用するEEPROMにより異なるため、データシートのWrite Cycle Time (Max.値)に基づいて時間を決定します。
  • Fitモジュールがある場合(Rxシリーズ)
     Rx231シリーズを用いたときのフォローチャートが右側になります。ACK/NACK応答監視やStart/Stopフラグ出力等は全てスマートコンフィグレータ(SC)が生成したプログラムがステートに応じて制御し、Stop発出後にセットされる完了フラグをユーザプログラムに追加することで通信機能の実装が可能になります。
  • 注意点(1 HWのタイミング)
     Fitモジュールを用いてI2Cインタフェースを実装したとしても、Write Cycle Timeを考慮したウエイトはEEPROMのハードウエア仕様を考慮してユーザ側で実装する必要があります。Write Cycle Timeを理解しないと、Clock周波数を下げたり、必要以上にウエイト時間を追加するなど、リソースを無駄遣いすることになります。オシロスコープで波形を見る、データをデコードして適切に処理されていることの確認は必要です。
  • 注意点(2 完了フラグの実装)
     SCが出力するプログラム内にアプリケーション側と連携するフラグを追加する場合、SC側で指定されたユーザコード用の領域内に入れる必要があります。これを忘れるとSCがコードを吐き出すタイミングで追加したコードがすべて消去されますので注意が必要です。

図 EEPROMバイト書込み処理フローの比較
(H8/300HとRx231の比較)

図 I2C送信タイミングの例
(ターゲットは Microchip製24LC256)