■ストロベリーリナックスのI2CLCDをPIC24FJ64GA002で動かしてみました。
1)I2Cのハードウエア制御の設定
 データシートのpage146を参照に・・・
 I2C1CONの15ビット目のI2CENを'1'にするとI2CがENABLEになります。
 I2C1CONbits.I2CEN = 1;
 I2C1STATはステータスレジスタです。
2)ボーレートの設定
 データシートのpage145のEQUATION15-1を参照に・・・
 I2CxBRG={FCY/FSCL-FCY/107}-1
 FOSC=32MHzで設定したとすると・・・
 ⇒FCY=FOSC/2=16MHzとなります。
 FSCL=100kHzで使いたいとすると・・・
 ⇒I2C1BRG = 157.4 四捨五入して↓
 ⇒⇒I2C1BRG = 157;
 データシートのpage145-TABLE15-1の値と同じになりました。
3)LCDの初期化
 LCDコントローラ【ST7032i】のデータシートpage34を参照に・・・
 コントラストとFollowerを少しいじりました。
 コントラストは上位2bit(C5、C4)だけPower/ICONと同じ場所です。







レジスタDB7DB6DB5DB4DB3DB2DB1DB0設定値
ContrastSet0111C3C2C1C001111111
Power/contrast0101IONBONC5C401011111
FollowerControl0110FONR2R1R001101010

 (ド嵌りしましたが)LCDのアドレスは7bitで'0111110'と書かれているので⇒'3E'としてしまいそうになりますが、
 さらにLSB「write=0」を付け加える必要があるので⇒'01111100’⇒'7C'です。
4)プログラム
 Microchip_PIC24F_Peripheral_Library.chmを参照にすればプログラムは構築出来ます。
 でもi2c.hを使うとすべて「xxx();」で出来てしまうので↑資料(英文)を読みながら自分なりにトライしました。
 ■「StartI2C1();」⇒「I2C1CONbits.SEN = 1;」
 ■「IdleI2C1();」⇒I2C1CONのStartConditionEnableBIT=SEN、StopCondetionEnableBIT=PEN、ReceiveEnableBIT=RCEN、AcknowledgeSequenceEnable=ACKEN、I2C1STATのTransmitStatusBIT=TRSTAT、計5bitのクリア待ちなようです。
 while(I2C1CONbits.SEN || I2C1CONbits.PEN || I2C1CONbits.RCEN || I2C1CONbits.ACKEN || I2C1STATbits.TRSTAT);
 ■「StopI2C1();」⇒「I2C1CONbits.PEN = 1;」
間違ってたらゴメンね
↓回路図はこちら
fce82c00.jpg