nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

sunlike社のi2c液晶SCG002B接続にはPIC12F1822のMSSPを使用しました

sunlike社のi2c液晶SCG002Bというものに取り掛かってますが、
マスターはPIC12F1822を使用します。そしてMSSPによりi2cインターフェイス制御することにします。

PIC12F683の時にはソフトi2cも作り、タイミングのお勉強もしました。今回はi2cタイミングはさらっと済ませたいのでPIC12F1822でハードインターフェイスで行きます。

MSSPのセットアップは次。SCLの速度はSSP1ADDの設定値で決まるようです。デバッグ時は観測にし易さも勘案して遅めでいきます。

 
ーーーーーーーーーーーーーーーーーーー
 MSSP initialize
ーーーーーーーーーーーーーーーーーーー
void mssp_init(void){ 
       /* SSP1CON1 REGISTERS */
       SSP1EN     = 1;    //Enables Serial Port Mode
       SSPM3      = 1;    /////////
       SSPM2      = 0;    //I2C Master Mode
       SSPM1      = 0;    // clock= Fosc/(4*(SSP1ADD+1))
       SSPM0      = 0;    ////////
       /* SSPCON2 REGISTERS */
       SSP1CON2   = 0x00;
       /* SSPCON3 REGISTERS */
       SSP1CON3   = 0x00;
      /* SSP1STAT REGISTERS */
       SMP       = 1;    //SPI MASTER MODE
       CKE       = 1;    //SMBus Specific Inputs Enabled
       //SSP1ADD    = 0x19;     //~75kHz
       //SSP1ADD    = 0x13;     //~100kHz
       //SSP1ADD    = 0x07;     //~400kHz
       SSP1ADD   = 0x50;         // デバッグは10KHzぐらいで
}

CCSのCコンパイラをお使いの場合はi2cのサービス関数が組み込まれているようですので、以上のようなセットアップに悩むことはないと思います。

マイクロチップ社のPIC12F1822のマニュアルの237ページぐらいからi2c制御に関する詳しい説明があります。
http://ww1.microchip.com/downloads/jp/DeviceDoc/jp547368.pdf
日本語の方が読みやすいと思われる方は同一系統のPIC16F1933の日本語版マニュアルPIC16F193X_JP.pdfがお役に立つと思います。
http://www.robotsfx.com/robot/img/PIColo/PIC16F193X_JP.pdf
該当のレジスタの機能を説明しているページは267ページ以降です。

なおnobchaの電子回路日記のホームページでもi2c関連を扱っております。下記ポータルページで左側選択部「実験用チップス(アイデア)」から入って、一覧表、6番目(マスター)、8番目(スレーブ)がi2cに関する実験報告です。「PIC12F1822,PIC16F1823/1827/1933」の実験報告の中でも液晶表示、RTC制御でi2c制御を行った実験例をいくつか掲載しております。

http://chitose6thplant.web.fc2.com/

PICでi2cを取り組む際の刊行物での参考書は次があります。