【PIC24FJ64GA002】I2C低電圧キャラクタ液晶モジュールを使ってみる。(ストロベリーリナックスのLCD)
■ストロベリーリナックスのI2CLCDをPIC24FJ64GA002で動かしてみました。

I2Cのハードウエア制御の設定
データシートのpage146を参照に・・・
I2C1CONの15ビット目のI2CENを’1’にするとI2CがENABLEになります。
I2C1CONbits.I2CEN = 1;
I2C1STATはステータスレジスタです。
ボーレートの設定
データシートの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の値と同じになりました。
LCDの初期化
LCDコントローラ【ST7032i】のデータシートpage34を参照に・・・
コントラストとFollowerを少しいじりました。
コントラストは上位2bit(C5、C4)だけPower/ICONと同じ場所です。
レジスタ | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | 設定値 |
ContrastSET | 0 | 1 | 1 | 1 | C3 | C2 | C1 | C0 | 01111111 |
Power/Contrast | 0 | 1 | 0 | 1 | ION | BON | C5 | C4 | 01011111 |
FollowerControl | 0 | 1 | 1 | 0 | FON | R2 | R1 | R0 | 01101010 |
(ド嵌りしましたが)LCDのアドレスは7bitで’0111110’と書かれているので
⇒’3E’としてしまいそうになりますが、
さらにLSB「write=0」を付け加える必要があるので⇒’01111100’⇒’7C’です。
ソース
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;」
ディスカッション
コメント一覧
まだ、コメントがありません