1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ST7789P3をLovyan GFXで使った設定

1
Last updated at Posted at 2026-07-11

ST7789P3を使った液晶パネルGMT147SPI(Aliexpressで購入)をESP32で動かそうとした時のメモ.日本語で情報があまり無かったように思う.

買った物

  • 1.47 "1.47 インチ 172x320 SPI フルカラー TFT HD IPS スクリーン LCD LED ディスプレイモジュール 172*320 ST7789 コントローラ 3.3V SPI インターフェイス

  • ST7789はよく使うから楽勝!と思っていた

設定

// SPIバスの設定
      cfg.spi_host = VSPI_HOST;     // 使用するSPIを選択  (VSPI_HOST or HSPI_HOST)
      cfg.spi_mode = 0;             // SPI通信モードを設定 (0 ~ 3)
      cfg.freq_write = 40000000;    // 送信時のSPIクロック (最大80MHz, 80MHzを整数で割った値に丸められます)
      cfg.freq_read  = 16000000;    // 受信時のSPIクロック
      cfg.spi_3wire  = true;        // 受信をMOSIピンで行う場合はtrueを設定
      cfg.use_lock   = true;        // トランザクションロックを使用する場合はtrueを設定
      cfg.dma_channel = SPI_DMA_CH_AUTO;          // Set the DMA channel (1 or 2. 0=disable)   使用するDMAチャンネルを設定 (0=DMA不使用)
      cfg.pin_sclk = PIN_LCD_CLK;            // SPIのSCLKピン番号を設定 CLK
      cfg.pin_mosi = PIN_LCD_DIN;            // SPIのMOSIピン番号を設定 DI
      cfg.pin_miso = -1;            // SPIのMISOピン番号を設定 (-1 = disable)
      cfg.pin_dc   = PIN_LCD_DC;            // SPIのD/Cピン番号を設定  (-1 = disable) DC


  // 表示パネル制御の設定
     cfg.panel_width      =   240;  // 実際に表示可能な幅
     cfg.panel_height     =   320;  // 実際に表示可能な高さ
     cfg.offset_x         =   -34;  // パネルのX方向オフセット量
     cfg.offset_y         =     0;  // パネルのY方向オフセット量
     cfg.offset_rotation  =     0;  // 回転方向の値のオフセット 0~7 (4~7は上下反転)
     cfg.dummy_read_pixel =     8;  // ピクセル読出し前のダミーリードのビット数
     cfg.dummy_read_bits  =     1;  // ピクセル以外のデータ読出し前のダミーリードのビット数
     cfg.readable         =  true;  // データ読出しが可能な場合 trueに設定
     cfg.invert           =  true;  // パネルの明暗が反転してしまう場合 trueに設定
     cfg.rgb_order        = false;  // パネルの赤と青が入れ替わってしまう場合 trueに設定
     cfg.dlen_16bit       = false;  // データ長を16bit単位で送信するパネルの場合 trueに設定
     cfg.bus_shared       = false;  // SDカードとバスを共有している場合 trueに設定(drawJpgFile等でバス制御を行います)

  • cfg.spi_mode = 0にしないと動作しない.

  • バックライトはVDDに繋げば光る(ので制御しない)

  • 画面の大きさは縦方向がデフォルトで,幅172x高さ320とされている.これに従ってcfg.panel_width=172という値を入れると,ノイズを画面に表示してしまう.いろいろ試行錯誤したところ,cfg.panel_width=240とし,実際の画面の大きさとの差分68pxの半分だけずらすためにcfg.offset_x = -34とすることで,ノイズが現れなくなった.

最後のあたり,とても泥縄的ですが,もっと良い方法があったら教えてください…

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?