ミッドレンジPICの新MSSPモジュールは、シリアル通信のSPIとI2Cに対応した機能を提供する。今回は、I2C通信を利用しているが、正しい設定方法を理解しておこうと思う。スタート、ストップ、ACKなどのシーケンスについては、解説されているものが多く、理解も容易なため、基本、それらについては、理解していることを前提とし、タイミングチャートによって、動作速度、信号ラインの立上り下り条件などを集中的に解明する。
接続するデバイスが、超高速で応答してくれるのであれば、適当な値を設定しても大丈夫と思われるが、実際には、応答時間に制約があるため、それにきちんと合わせて利用しないと、正しく通信できないことになる。当たり前だが、実際に利用しようとした場合、具体的なパラメータの選択方法が結構難しい。その部分を中心に解明しようと思う。
今回は、I2C通信ではマイクロチップPIC16F1823をマスタに、秋月I2C通信LCDをスレーブにした。デバイスの動作を説明するドキュメントは、以下を参照した。
・CPU
品名:PIC16F1823
ドキュメント:PIC12(L)F1822/PIC16(L)F1823データ シート(DS41413C_JP)
秋月電子 PIC16F1823
・LCD
品名:秋月I2C接続キャラクタLCDモジュール(16x2行白色バックライト付)
ドキュメント:ACM1602NI-FLW-FBW-M01(DISPLAYTRONIC) VER1.2
今回から複数回に分けて、I2C通信のタイミングについての検証結果をレポートする。PICのI2Cモジュールで、I2C通信LCD制御を行おうとした際に、なかなか思うようにいかなかった経験から、その理由を解明し、動作タイミングについての理解を深めた結果を紹介する。