PSoCでAQM1248を動かす話

ADCかUARTの話を書くと言ったな。あれは嘘だ。

はい、今回はPSoCでAQM1248を動かす話です。
PSoCでSPI動かす話がネットであまりなかったので(私に有益な日本語の情報って意味)、いつ記憶喪失になっても大丈夫なように書いておく。
とりあえず何かを表示させるところまで書いてます。



■使ったもの。
PSoC Creator4.0
PSoC 5LP Prototyping Kit
・AQM1248A小型グラフィック液晶ボード
 3.3V作るのがめんどくてこちらを購入。PSoCボードが5Vなんだよね。
 AQM1248A小型グラフィック液晶ボード - スイッチサイエンス


1.TopDesign

これ。UARTはデバッグに使ってただけなので液晶つけるだけなら必要ないよ。
f:id:matchqueen:20170331172738p:plain

SPIMの設定
f:id:matchqueen:20170331172918p:plain
f:id:matchqueen:20170331172942p:plain

2.ソース

3.解説

読めばわかるけど順番に解説。

  • SPIの開始処理をする

 LCD_SPIM_Start();
 コンポーネント:SPI_MasterのAPI
 LCD_SPIM_Init()とLCD_SPIM_Enable()を両方やってくれる。

  • LCDセットアップをする

 Lcd_Init();
 自作関数。
 AQM1248の取説にある初期化コマンド群。
 何をしているかはvoid Lcd_Init(void){}を参照。

 Lcd_Cmd(cmd);
 自作関数。
 LCDのRSピンをHiにしてコマンドモードにしてから、コマンド送信する。

 Lcd_Data(data);
 自作関数。
 LCDのRSをLowにしてデータモードにしてから、データ送信を行う。

  • LCDのVRAMをクリアする

 Lcd_Crear();
 自作関数。
 ゴミが残ってることがあったので、クリアしようかなって。
 ただひたすら全てに0を送るだけ。

  • 一休み

 CyDelay(1000);
 無くても動くのでなくていいよ。

  • データを送る

 while(1){・・・}
 スイッチサイエンスさんのデータをパクったので、スイッチサイエンスって表示される。

 これをコメントにして、
 Lcd_Data(pic[page][col]);

 これを有効にすると、画面真っ黒になる。
 Lcd_Data(255);