YS電子工作ラボ
第84回PICクラブ 情報交換会 (開催日 2022.04.16)
<紹介作品

INT035 by Legato
    
 グラフィック デモ
以下、 第84回情報交換会報告(後閑さん、FaceBook Picfun.club.より) 
   ■ 講評 …… 後閑さん
(4) PIC32MXで7インチLCD制御 : 斎藤さん
 いつものPIC32MZを使って、800×480ドットの7インチLCDを制御した製作例の紹介でした。16ビットパラレルでグラフィック制御、SPIでタッチパネルの制御をしているが、試作の時は問題なかったが、プリント基板化したら、転送エラーで問題発生。プルアップ抵抗と直列抵抗とコンデンサのフィルタが必要になってしまった。高い周波数で動作させた場合の、信号反射による誤動作には要注意です。
 以下、紹介に際し使用した資料
 
INT070 by Legato
    グラフィック デモ
2022.04.16 PIC情報交換会資料 
YS電子工作デザイン http://www.ys-labo.com/  斎藤
YS電子工作ショップ http://ys-labo.shop-pro.jp/
1.  概要
  1.1 要約
 ・PIC32MZでグラフィック液晶INT070(7.0 インチ、WVGA(800 x 480 pixel)) を制御
   グラフィックI/F: 8080 16ビットパラレル EBI
   タッチI/F: SPI
 ・グラフィックライブラリ: Harmony Ver.3 Legato(レガート)
 ・マイコン: PIC32MZ2048EFH100
 ・デモ内容:
  1. ビットマップファイル画像表示、 ASCII文字列の表示、 ボタンウィジェットへのタッチによる表示スクリーンの切り替え
  2. LED用ボタンで キバン上のLEDを ON/OFF
  3. 円、直線、矩形の表示をターマーで 切り替え表示するスライドショー
  4. タッチ位置座標をキャラクタ液晶に表示
1.2 システム構成
2. 外観 
 
全体 
構成 
分解した状態 液晶(INT070)部のみ
組み立てた状態(上面)
液晶(INT070)部のみ
組み立てた状態(側面)
グラフィックス液晶
アダプターキバン外観
3.  回路図(→PDFファイル) 
4. 開発環境
 ・ Harmony v.3 XC32 v3.01 、グラフィックライブラリ: Legato
 ・ PIC: PIC32MZ2048EFH100
 5. 動作結果
 
  1. 動画   →  YouTube (1080pのHD動画)  
2. 各画面
第1モード  ラベル
ウィジェット
文字 
    Welcome to
    PIC32MZ Evaluation Board 
    INT070: 7" 800 x 480 pixel
    <Harmony Ver.3>
    Touch LCD INT070
    by Legato
結果 
第2モード   LED 
ON/OFF
OFF ON
結果
タッチ位置
座標表示
左上部 中央下部
結果
第3モード   モード  ・円、直線、長方形のウィジェット等 何も表示しない。
・RG15のLEDを点灯する。他は消灯 
・I2C液晶: 表示なし
・円ウィジェットの図形のみ表示する。
・RD4のLEDを点灯する。他は消灯 
・I2C液晶: Circles
結果 
モード  ・円、直線ウィジェットの図形を表示する。
・RA15のLEDを点灯する。他は消灯 
・I2C液晶:Circles & Lines
・円、直線、長方形ウィジェットの図形を表示する。
・RA14のLEDを点灯する。他は消灯
・I2C液晶: Circles & Lines & Rectangles
結果 
 
 
6. プログラムの作成プロセス 及び内容 
1. プロジェクトファイルの生成
 ① Project Graphに 所要のコンポーネントの配置して、設定 及び結線を行う。
 ② MHC PinSettingsによりピン設定を行う。 制御ポートWR、RD、RS、CSのピンのFunctionをGPIOとし、また下記指定の下記名称に設定し、8080 16ビットパラレルモード送信とする(→Pin Settings)  plib_gpio.h
 GFX_DISP_INTF_PIN_CS、GFX_DISP_INTF_PIN_RSDC、GFX_DISP_INTF_PIN_RD
 GFX_DISP_INTF_PIN_WR、 GFX_DISP_INTF_PIN_RESET
 ③ コンポーネントの設定を行う。 例グラフィックドライバ(→LE External Controller)
 ④ MHCから生成されるファイルdrv_gfx_external_controller.c内のグラフィックドライバー関数をINT070液晶表示が適正になるまで修正(ファイル比較 INT070 vs INT035)
 
 (注)グラフィック関係設定の技術情報
   ・マイクロチップサンプルプログラム(右の画像参照)
      Legato_Quickstart( legato_qs_mzef_cu_tm4301b_ssd1963.X) 
      ボード: Curiosity PIC32MZ EF 2.0 Development Board
      I/Fボード: SSD1963 LCD Adapter Graphics Card(16 bit EBIパラレルI/F用 AC320214)
      液晶: 4.3" 480 x 272 WQVGA Display Module with maXTouch(AC320005-4)
   ・液晶INT070データシート
   ・液晶INT070メーカのフォーラム(SEACOMP Forum: 旧Displaytech Forum)  ←液晶初期化情報など
   ・液晶ドライバーIC(SSD1963)データシート
   ・8080 R/W Timing、 6800 R/W Timing
   ・EBI(External Bus Interface)

・Curiosity PIC32MZボードのmikroBusに 自作ボードからキャラクタ液晶、LEDなどを接続して実験(動画→ URL)
2. Graphic Composer によるScreen作成
 ・Screenに ラベルウィジェット、ボタンウィジェット、ピクチャーウィジェットなどドラッグで配置して、レイアウトを行う
 ・配置したウィジェットの設定を行う。
 ・Screenのソースコードの生成を行う。
 ・プロジェクト全体のソースコード生成を行う。
     le_gen_screen_Screen1.c

 
  (参考)ファイル差分検出ソフト WinMerge

3. タッチ情報をプロジェクトにインポート
void SYS_Tasks ( void )
{
    /* Maintain Device Drivers */
        DRV_SSD1963_Update();

        ys_DRV_TOUCH_INT070();//タッチ検出、タッチ種類、タッチ位置とシステムに注入

    /* Maintain Middleware & Other Libraries */    
    Legato_Tasks();

    SYS_INP_Tasks();

    /* Maintain the application's state machine. */
        /* Call Application task APP. */
    APP_Tasks();
}


app.c
tasks.c
INT070_Touch_lib_XC32.h
INT070_Touch_lib_XC32.c

4. グラフィック制御とI2Cキャラクタ液晶制御の同時動作化対応
   ( 参照 → 2022.01.10 PIC情報交換会資料、INT035 by Legato グラフィック デモ
 
7. 参考
 1. YS電子工作ラボHP での紹介/プロジェクトファイル
         PIC32MZ Harmony v3版   → URL