2022年3月21日月曜日

1.14 inch IPS LCD 135x240 (ST7789)

1.14 Inch LCDをRaspberry Piと接続してRetroPieで使用してみました。




1.14 inch IPS LCD Display Module



始めに書いておきますが自分の満足のいく結果にはなっていなく、まだ途中ですが私的メモ代わりに残して置きます。
Waveshareにある手順とほぼ同じで、自分の環境による違いのみ一部変更しました。




1.14 inch IPS LCD Module
1.14 inch IPS LCD Module



用意したSPI LCD


テストした機材
Raspberry Pi 3 Model B+ [retropie-buster-4.7.1-rpi2_3.img.gz]
Raspberry Pi 4 [retropie-buster-4.7.1-rpi4_400.img.gz]


[参考リンク]
Waveshare 1.14inch_LCD_Module → [Guides for Pi]



raspberry Piとの接続は以前までの機器となるべく互換性と、他のGPIOと被らない配置にしました。


GND → PIN20(GND)
VCC → PIN17(3V3:power)
SCL → PIN23(GPIO11:SPI_SCLK)
SDA → PIN19(GPIO10:SPI_MOSI)
RES → PIN13(GPIO27)
DC → PIN22(GPIO25)
CS → PIN24(GPIO8:SPI_CE0)
BLK → PIN18(GPIO24)




fbcp-ili9341をダウンロード
sudo apt-get install cmake cd ~ wget https://www.waveshare.com/w/upload/8/8d/Waveshare_fbcp-main.7z sudo apt-get install p7zip-full 7z x Waveshare_fbcp-main.7z cd waveshare_fbcp-main



ビルド
mkdir build cd build cmake -DSPI_BUS_CLOCK_DIVISOR=20 -DWAVESHARE_1INCH14_LCD=ON -DBACKLIGHT_CONTROL=ON -DSTATISTICS=0 .. make -j


/etc/rc.localに追記
sudo vi /etc/rc.local sudo /home/pi/waveshare_fbcp-main/build/fbcp & exit 0


再起動
sudo reboot


※設定変更時はディレクトリを削除後ビルドから
cd waveshare_fbcp-main rm -rf build




/boot/config.txtを変更
sudo vi /boot/config.txt hdmi_group=2 hdmi_mode=87 hdmi_cvt=960 540 60 3 0 0 0 hdmi_force_hotplug=1 display_rotate=0


"hdmi_cvt=240 135 60 3 0 0 0"の解像度の部分は任意で変更します。
この変な解像度は手持ちのHDMIディスプレイでのテスト用です。






Waveshare_fbcp
Waveshare_fbcp



Raspberry Pi 3 では"config.txt"の"display_rotate"は反映されて回転できるのだが
Raspberry Pi 4 では"display_rotate"の設定が有効にならない。

これはネット等で調べると"config.txt"のdtoverlay=vc4-fkms-v3d”をコメントアウトすることになっているのでがコメントアウトするとEmulationStationの起動できなくなる。
以前からこの問題に悩まされてるのだが、余りネット等で問題にされていないのは自分の環境の問題なのか?

一応EmulationStation等を個別で設定してやればいいのはわかっているのだが、正直面倒なので出来ればシステムで一括管理したい。
今後もこの問題がついて回りそうなので一度しっかり調べてみたいのだが、何せ自分のスキル不足でなかなか進んでいません。


[関連記事]





メモ


fbcp-ili9341だけで180°回転するやり方を探ってみました。
多分正しいやり方では無いと思いますが一応メモしておきます。



fbcp-ili9341をダウンロード
sudo apt-get install cmake cd ~ git clone https://github.com/juj/fbcp-ili9341.git cd fbcp-ili9341


st7735r.cppを変更
sudo vi st7735r.cpp if ((madctl & MADCTL_ROW_ADDRESS_ORDER_SWAP)) SPI_TRANSFER(0x37/*VSCSAD: Vertical Scroll Start Address of RAM*/, 0, 40); #endif


ビルド
mkdir build cd build cmake -DSTATISTICS=0 -DST7789VW=ON -DSPI_BUS_CLOCK_DIVISOR=10 -DGPIO_TFT_DATA_CONTROL=25 -DGPIO_TFT_RESET_PIN=27 -DGPIO_TFT_BACKLIGHT=24 .. make -j


/etc/rc.localに追記
sudo vi /etc/rc.local sudo /home/pi/fbcp-ili9341/build/fbcp-ili9341 & exit 0
先の設定と"/etc/rc.local"の使い分けで共存します。





再起動
sudo reboot


※設定変更時はディレクトリを削除後ビルドから
cd fbcp-ili9341 rm -rf build



/boot/config.txtを変更
sudo vi /boot/config.txt hdmi_group=2 hdmi_mode=87 hdmi_cvt=240 135 60 3 0 0 0 hdmi_force_hotplug=1 display_rotate=2





fbcp-ili9341
fbcp-ili9341










ここからは完全に失敗メモです。




st7735r.h
sudo vi st7735r.h #if defined(ST7789) || defined(ST7789VW) #define DISPLAY_NATIVE_WIDTH 240 #define DISPLAY_NATIVE_HEIGHT 135
解像度をあわせてみる。
画面が90°回転するが反転している。




st7735r.cpp
sudo vi st7735r.cpp #if defined(DISPLAY_FLIP_ORIENTATION_IN_HARDWARE) madctl |= MADCTL_ROW_COLUMN_EXCHANGE; #endif //madctl |= MADCTL_ROW_ADDRESS_ORDER_SWAP;
反転を直すと画面の位置が正しくない。

0 件のコメント:

コメントを投稿