Archive for the ‘SPRESENSE’ Category
GAME with SPRESENSE
SPRESENSE で GAME。 2024.03.24
3.5 inch 480 x 320 LCD と Spresense で ゲーム を動かしました。
費用:2200円。( Spresenseを除く。LCD代は 73% )
LCD Interface は 300円です。
ディスプレーは 3.5inch 480 x 320 LCD with Touchを使用し 見やすいサイズです。
SPRESENSE と LCDの接続は LCD Interface基板を製作しました。
LCD Interface基板は 3.5″ ILI9488, 3.5″ ST7796, 2.8″ ILI9341 に対応しています。
基板の費用は コネクターと Level Shifter を含め 300円です。
LCD Interface基板:Gerber data を公開しました。
Down Load:SPRESENSE LCD V_1_pcbe.zip ( pdf になっています)
DL 又は pdf保存後に[ _-1.pdf ]を削除し[ SPRESENSE LCD V_1_pcbe.zip ]にします。
🔴 Gerber data(zip)を JLCPCBへ発注すれば 低価格 (1枚 110円)で使用できます。
発注時に PCB Thickness (基板の厚み) は 1.0mm にします。
発注の詳細は macsbug ESP32 S3 v2.1 を参照ください。
ケース:Raspberry Pi 3 Case (91x62x31mm) を使用し低価格 (266円)で 綺麗です 。
構成:
LCD Interface , LCD Side | LCD Interface , Spresense Side : 300円 |
上から LCD , LCD Interface , Spresense | Raspberry Pi 3 Case:266円 |
Raspberry Pi 3 Case に装着 | 3.5 inch 480×320 + Spresense |
Raspberry pi 4 Acrylic Case, 3.5″ LCD 520円。 アクリルケースは LCDを固定する ネジ穴4つの 工作のみで使用できます。 |
開発環境:
HARD:Spresense + Arduino 拡張基板
HARD:3.5inch 480×320 ILI9488 SPI LCD XPT2046 Touch
HARD:Spresense LCD Interface ( Gerber data public / macsbug production )
HARD:Raspberry Pi 3 Case
Dev environment : Arduino IDE 2.3.2
Board Manager : arduino-esp32 2.0.14
Library:LovyanGFX 1.1.12
Down Load:
Tetris_ILI9488_Spresense.zip : 3.5 inch ILI9488用
Tetris_ST7796_Spresense.zip : 3.5 inch ST7796用
Tetris_ILI9341_Spresense 2.zip : 2.8 inch ILI9341用
3D_Cube_ILI9488_spresense.zip
3D_Filled_Vector_ILI9488_Spresense.zip:18fps
Maze_generator_ILI9488_Spresense.zip
MovingCircles_ILI9488_Spresense.zip:7fps
Raytrace_ILI9488_Spresense.zip
Resistor_CALC_ILI9488_Spresense.zip
uncannyEyes_ILI9488_Spresense.zip:リアルな目。
Touch_Test_Spresense.zip :タッチ操作のテスト用。
DL 又は pdf保存後に「.pdf」を削除し 「xxx.zip」 にします。
回路図:
1. LCDのVCC(電源)は 5Vdcで Arduino拡張ボードの5Vを使用します。
LCDのVCC(電源)は 5Vdcであることを確認します。(3.3Vの物もある為)
2. LCDのSPI Display接続は Arduino拡張ボードの SPI4を使用します。
3. LCDのSPI Touch接続は MAINボードの SPI5を使用します。
4. Touch信号(3V3)は Level Shifter でレベル変換され SPI5(1V8)に接続。
基板:基板製作の経験ない人も基板を作れます。
Gerber data:SPRESENSE LCD V_1_pcbe.zipを入手します。
DL 又は pdf保存後に「.pdf」を削除し「spresense-lcd-v_1_pcbe.zip」 にします。
JLCPCBの発注方法は macsbug ESP32 S3 V2.1 か ネット記事を参照ください。
部品リスト1: 基本構成。
No. | Nomen Symbol |
Spec Quantity |
Purchase pcs, Price |
Price ¥/1 Set |
1 | SPRESENSE メインボード |
1 pcs | 秋月電子通商 114584 |
6050 |
2 | SPRESENSE 拡張ボード |
1 pcs | 秋月電子通商 114585 |
3850 |
TOTAL | ———- | ———- | 9900 |
部品リスト2: LCD と LCD Interface。
緑色を購入。灰色は参考です。灰色のLevel Shifterは検討が必要です。
費用:2200円。 LCDは 全体の73%で LCD Interface の費用は 300円です。
No. | LCD | Spec Quantity |
Purchase pcs, Price |
Price ¥/1 Set |
1 | ILI9488 , XPT2046 v1.0 , SKU=MPS3520 |
1 pcs | JR E-Shop 輸送期間 = 6 day |
1593 |
1 | ILI9488 , XPT2046 SKU=MPS3520 |
1 pcs | Hong Kong fend tai 輸送期間 = 9 day |
1592 |
1 | ST7796 , XPT2046 | 1 pcs | HEHUI Electronic 輸送期間 = 6 day |
1706 |
2 | LCD Interface |
1 pcs | JLCPCB 5 pcs , $3.46 538円 |
108 |
3 | ロープロファイル ピンヘッダ(低オス) 1×40(40P) 8.5mm For Main Board. 13pin x 2pcs |
1 pcs | 秋月電子通商 102899 1個 ¥40 |
40 |
4 | Level Shifter |
1 pcs | Diy-Modules 5 pcs 318円 |
64 |
4 | Level Shifter | 1 pcs | 秋月電子通商 113837 1個 ¥200 |
200 |
5 | シングルピンソケット (低メス) 1×20 (20P) For LCD. 14pin |
1 pcs | 秋月電子通商 103138 1個 ¥80 |
80 |
6 | ピンヘッダ 1×40 (40P) For Arduino Connector |
2 pcs | 秋月電子通商 100167 1個 ¥35 |
70 |
7 | Raspberry Pi 3 Case |
1 pcs | IC Supers 輸送期間=21 day ( 11 day ) |
266 |
7 | Raspberry pi 4 Acrylic Case, 3.5″ LCD |
1 pcs | DIYzone Store 1個 520円 輸送期間=7 day |
520 |
TOTAL | ———- | 2181 |
LCD:
JR E Shop の LCDは LCDからFlex Cableで Parallel信号も出ています。
Parallel動作をさせる時に Flex Connector で接続する事が出来ます。
RPi 3 Caseに入れる為に 基板工作時(切断)に便利な構造です。
参照:M5Stamp C3 BOX
Hong Kong fend の LCDは LCDから内部でハンダ付けされています。
参照:Use ILI9488 with M5Stack
HEHUI Electronics のST7796 LCD も同様のFlex wire接続です。
ただし Bus Freq_Writeは20MHz までで 表示速度は遅いです。
LCDの種類とLovyanGFXの設定:ILI9488は 複数の種類があります。
LovyanGFX | setup | bus | bus | panel | Touch | |
LCD | size | setRotation | spi_mode | freq_write | invert | offset_rotation |
ILI9488 JR E Shop |
3.5″ | 3 | 0 | 40MHz | false | 0 |
ILI9488 JR E Shop |
3.5″ | 3 | 0 | 40MHz | true | 0 |
ILI9488 v1.0 MSP3520 |
3.5″ | 1 | 0 | 40MHz | false | 6 |
ST7796 v1.1 | 3.5″ | 1 | 3 | 20MHz | true | 6 |
ILI9341 | 2.8″ | 3 | 0 | 40MHz | false | 4 |
Level Shifter:ピン配置は多種ある為に要注意です。
GND:HV GNDとLV GNDは共通で浮いています。
基板のピン配置:🔴 GND, HV, GND, LV の配置を確認してください。
注意:配置の異なる基板や接続は Spresenseを破損する恐れがあります。
異なる配置により破損した場合は 自己責任でお願いします。
参照:レベル変換(6)I2C その1 MOSFET。GNDは共通で浮いています。
Aliexpress EC-Buying ALLは ピン配置が異なり 使用しない事。
秋月電子通商の Level Shifterは 今回の基板配置と異なり 使用しない事。
Aliexpress Diy-Modules |
秋月電子通商 HV,GND, LV,GND は Aliexpressと逆の位置です。GNDは共通です。 左:HV, LVは 逆ですが 電源の位置は問題ありません。 右:GNDが共通の為に 🔴 HV(3V3)とLV(1V8)がSHORTします。 |
部品リスト3:スタンド。
スマホ用ですが 綺麗に乗せられます。LCDにタッチしても位置を保てます。
Aliexpresですが 2回とも3日で届きました。
No. | Nomen Symbol |
Spec Quantity |
Purchase pcs, Price |
Price ¥/1 Set |
1 | Stand |
1 pcs | Mr. A’s mobile phone accessories 1個 684円 輸送期間 3 day |
684 |
工作:
LCD基板:
Raspberry Pi 3 Case (91x62x31mm)に入れる為に加工します。
Raspberry Pi 3用のLCDは 高さのあるコネクターを使用していますので
SPRESENSEは入りません。
コネクタ:1 か 2 の方法があります。
1. ピン先を切る方法:
先端のバリ取りは必要ですが簡単でピンヘッダ交換不要です。
2. 高さ 8.5mmのピンヘッダを取り付けます。隙間のない長さが重要です。
交換:
ピンを一つづつ取り除き ロープロファイルピンヘッダ(低オス)をハンダ付け。
3.5inch LCDは ケースにピッタリ入ります。
LCD基板は長い為に 分解し SD SLOT側を切断します。
注意:スルーホールを痛めない事とLCDのガラスは割れ易い為に注意です。
LCD Interface:
1. 低メスシングルピンソケットを LCDコネクター部(右)へ取り付けます。
2. オスピンヘッダを Arduinoコネクター部と Main Board部へ取り付けます。
Main Boad部は Arduino側より低く 短いピン(8.5mm)を使用します。
🔴 注意:ピンヘッダは 垂直に取り付ける必要があります。
少しでも斜めになると SPRESENSE側のメスピンに正しく装着されず
SPRESENSE側のメスピンを曲げる事になります。
ハンダ付け前に SPRESENSEと接続し 位置極めをするのも手です。
そのままハンダ付けをすると コネクターのプラスチック部分が
溶けて溶着する場合があります。
完成後の装着時は 垂直に接続します。斜めに装着しますと
SPRESENSE側のピンが曲がり 入らなくなります。
3. Level Shiter基板を LCD IntaerfaceのSPRESENSE側へ取り付けます。
🔴 注意:逆向きに付けると1V8と3V3の電源がショートします・
LCD Interface基板とLevel Shift のスルーホールにハンダで埋めてから
基板を重ねハンダ付けします。GNDはハンダ付け不用で位置決めに使用します。
2.8 inch 320 x 240 ILI9341 + Spresense 版の製作:
画面が小さい為に ボタンの位置は 背景画像に重ねています。
2.8 inch 320 x 240 ILI9341 + Spresense |
LCDと接続方式: SPI接続とParallel接続について。
Arduino MEGAやDUEでは 既に 8bit/16bit Parallelのdisplayが動作しています。
2023から2024年にかけて ESP32界隈でのLCD は 8bit Parallel 接続の時代へ。
TTGO や MakerFabsは 8bit Parallel を採用しています。
Libraryは LovyanGFXを採用しています。
最速の経験は Making a board of ST7789 8bit Parallel Display です。
MovingCirclesで 115 fps を達成しています。
3D Filled Vector Ext では
Super M5Stack 16bit Parallel:146fps。
ESP32 S3 + ST7789 8bit Parallel :100fps を達成しています。
Spresens + SPI ILI9488 は 18fps です。SPIは 遅すぎます。
SpresenseとLCD:
LCDは 4inch 800×480 16bit Parallel LCD を希望ですが まだ その環境では無いです。
理由は Parallel接続の Libraryが無い為です。
Library開発に費用をかけても Parallelの効果は大きいです。
LovyanGFXでの Spresense Parallel 対応を期待しています。
SpresenseとSD:JPG , PNGを直接操作できません。2024.03現在。
LovyanGFXの SD操作は SDFat , JPG , PNG の対応が可能です。
つまり SD内の JPG , PNGデーターを LCDに容易に表示できます。
それは 以下の命令でできます。
lcd.drawJpgFile(SD,file,x,y); // JPG
lcd.drawPngFile(SD,file,x,y); // PNG
SDを指定し SD内の File(JPG,PNG)を x,y に表示します。
この命令が無いと JPGDecode Libraryが必要になり複雑になります。
速度:
TFT_Graphicstest_PDQで速度を計測し グラフは 短い方が速い事を示しています。
Display Library には AdafuritGFX , TFT-eSPI , LovyanGFX があります。
Adafurit-GFX は TFT-eSPI より遅く TFT-eSPI は LovyanGFX の1/2で遅いです。
結果 Adafurit-GFX は 大変遅く LovyanGFX をお勧めします。
参照:LCD and ESP32 speeds with LovyanGFX
Spresenseと ILI9488 , ST7796 , ILI9341 の速度を計測しました。
ILI9488 は bus freq_write = 40000000; で動作。( Max 40MHz )
ST7796 は bus freq_write = 20000000; で動作。( Max 20MHz )
結果 ILI9488 の方が速度は 速いです。
ILI9341 は bus freq_write = 40000000; で動作。( Max 40MHz )
ILI9488 を 320×240 サイズで測定。
16bit Parallel, 8bit Parallel, SPI の比較。
SPI:これまでの 比較で ILI9486 は 一番遅い Driver です。
ILI9488 SPI + Spresense は ILI9486 よりは速いですが 他より遅いです。
ILI9341 SPI + Spresense は M5Stack より遅いです。
結論:Spresense は SPI接続で ESP32 より遅いです。
対策:8bit 又は 16bit Parallel接続が必要です。
感想:
初めての SPRESENSEです。
見やすい 3.5inch 480×320 SPI LCD+Touchをを選択。
本家には Touchの接続方法や具体例は見つかりませんでした。
SPIは 低速ですが 高速なParallel接続の Libraryは無く 現状の選択です。
SPIは ESP32 Parallel 8bit と比較し Graphic表示で6倍遅いです。
3D_Filled_Vectorは 18fps , MovingCirclesは 7fps と遅いです。
SPRESENSEでは 我慢しかありません。
ケースは Raspberry Pi 3 Case (91x62x31 mm)(266円)を使用し ピッタリ収まります。
.
Spresense . LovyanGFX , Raspberry Pi 3 Case , SPI ,
How to use LVGL9
LVGL9 の 使用方法。 2024.03.22
5種類のディスプレーと79のデモが動作します。
3.97 inch 800 x 480 MRB3973 ( NT35510 ) + ESP32 S3 |
3.5 inch 480 x 320 ILI9488 + Spresense |
2.8 inch 320 x 240 ILI9341 + Spresense |
2.8 inch 320 x 240 ESP32-2432S028R |
2 inch 320 x 240 M5Core2 |
LVGL v9 は January 23, 2024 にリリースされました。
LVGL は バージョンアップ毎に 命令や使用方法が変化し解りづらいです。
v7 や v8 のスケッチは v9 では エラーが出て動作しません。
理解できていない所もあるかと思いますが v9 の使用方法を まとめました。
スケッチの例:
以下のスケッチを参照してください。
スケッチは demos , example , Widget の 79個のデモを 動作できます。
Down Load:basic_configuration.zip
内容: lv_conf.h , lv_demo_benchmark.c , lv_demo_music.c, lv_demo_render.c
lv_conf.h:LVGLを動作させる設定。設定:1-2 で説明。
lv_demo_benchmark.c, lv_demo_music.c, lv_demo_render.c
コンパイルエラー防止の階層修正。設定:6-4 で説明。
Down Load:LVGL9_exsample_MRB3973.zip ( NT35510 )
Down Load:LVGL9_exsample_ILI9488_Spresense.zip ( with LCD Interface )
Down Load:LVGL9_exsample_ILI9341_Spresense.zip ( with LCD Interface )
Down Load:LVGL9_exsample_ESP32-2432S028.zip:ESP32-2432S028R
Down Load:LVGL9_exsample_ESP32-8048S043C.zip:ESP32-8048S043C
Down Load:LVGL9_exsample_M5Core2.zip:M5Core2
Down Load 又は pdfで保存後に pdf を削除しzip にします。次に zipを解凍します。
結果:
demos ( lv_demo_benchmark , lv_demo_keypad_encoder ,
lv_demo_music , lv_demo_stress , lv_demo_widgets は 動作しています。
example にある 76個のスケッチは 修正なくそのまま 69個動作しています。
get_started (4個) , others (6個) も 動作しています。
以下 setup中にある // を削除すると その行のデモが動作します。
合計 79のデモが書かれてあり 試すことが出来ます。
// You can use it by removing the comment symbol (//). // demos ------------------------------------------------------------ //lv_demo_widgets(); //lv_demo_benchmark(); //lv_demo_keypad_encoder(); //lv_demo_music();
開発環境:
PC:Mac Studio 2023 , macOS Sonoma 14.4
Arduino IDE 2.3.2
esp32 by Espressif Systems 2.0.14
HARD:MRB3973 ESP32 S3。他の ESP32 Boardでも同じです。
LVGL ( Light and Versatile Graphics Library )
LVGL Documentation 9.0 / Feb 27, 2023:LVGL9 Library pdf:
Llibrary:LovyanGFX 1.1.9
SPRESENSE:タッチ操作の為に LCD Interafce ( 300円 )が必要です。
GAME with SPRESENSE を参照ください。
設定:
1. 準備:
1-1. LVGL9のDownload。Arduino IDE BOARD MANAGER から DLします。
1-2. lv_conf.h の設定
「実例:basic_configuration.zip」で DLした lv_conf.h を
lvgl / src / の中(階層)へ入れてください。
注意:lv_conf.h の変更は エラーが出てコンパイルできない場合があります。
* src Foldeは 「#include」で使用できる階層です。
1-3. Arduino IDE 2.3.2
1-4. esp32 by Espressif Systems 2.0.14
* 3.0.0-al がありますが エラーが出るために 2.0.14 にしています。
1-5. Llibrary:LovyanGFX 1.1.9
1-6. LVGLは lv_conf.h , Buffer , display , touch の準備が出来れば動作します。
2. Libraryと変数設定:
* 4inch 800×480 MRB3973 LCD を LovyanGFX(lgfx_NT35510.h)で使用します。
* 他の LCDでの場合は DLしたスケッチ内の説明を参照ください。
* 画面サイズと Bufferの設定。
* tick は 正しい時間を得る為に loopで使用。無いとtouch操作ができません。
//=================================================== #pragma GCC optimize("Ofast") #include <SPI.h> #include <lvgl.h> #define LGFX_USE_V1 #include <LovyanGFX.hpp> #include "lgfx_NT35510.h" static const uint32_t screenWidth = 800; static const uint32_t screenHeight = 480; static uint8_t draw_buf[screenWidth*screenHeight/10]; static ulong lvgl_tick_millis = millis(); //===================================================
3. display設定。
* 上の init_display は display Initializeの為。
* 下の flush は display部分。 LovyanGFX display を使用する為に
lgfx::rgb565_t * で接続しています。
//=================================================== void init_display(){ static lv_display_t *disp; disp =lv_display_create(screenWidth, screenHeight); lv_display_set_flush_cb(disp, flush); lv_display_set_buffers (disp, draw_buf, NULL, sizeof(draw_buf), LV_DISPLAY_RENDER_MODE_PARTIAL); } //=================================================== void flush(lv_display_t *disp,const lv_area_t *area,uint8_t *px_map){ uint32_t w = (area->x2 - area->x1 + 1); uint32_t h = (area->y2 - area->y1 + 1); tft.setAddrWindow(area->x1, area->x1, area->y1, w, h); //tft.pushColors((uint16_t *)px_map, w * h, true); tft.writePixelsDMA((lgfx::rgb565_t *)px_map, w * h); // LGFX tft.endWrite(); lv_display_flush_ready(disp); } //===================================================
3. touch設定。
* 上の init_touch は touch Initializeの為。
ただし この Initialize だけでは touch機能は動作しません。
変数設定の tick と loop 内の tick で動作します。
v8 との大きな違いです。
* 下の my_touchpad_read は touch入力(tft.getTouch)の為です。
//==================================================== void init_touch() { lv_indev_t *indev = lv_indev_create(); lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER); //Touchpad should have POINTER type lv_indev_set_read_cb(indev, my_touchpad_read); } //==================================================== void my_touchpad_read(lv_indev_t *indev, lv_indev_data_t *data) { uint16_t touchX, touchY; bool touched = tft.getTouch( &touchX, &touchY ); if(!touched){ data->state = LV_INDEV_STATE_REL; return;} if(touchX < screenWidth && touchY < screenWidth{ data->state = LV_INDEV_STATE_PR; data->point.x = touchX; data->point.y = touchY; //Serial.printf("%d,%d\n", touchX, touchY); } } //=====================================================
4. setup:
* lvgl, display , touch を Initialize します。
* LVGLの表示とタッチの準備ができました。
* これ以降に example とかを配置し実行されます。
//===================================================== void setup(){ tft.begin(); tft.setRotation(1); tft.fillScreen(TFT_BLUE); lv_init(); init_display(); init_touch(); lv_example_button_2(); } //======================================================
5. loop:
* v8 では lv_timer_handler でしたが v9 では lv_task_handler。
* 正しい時間を取得するために tick を使用します。
* この tick が無いと touch は動作しません。
* v8 との大きな違いです。
//====================================================== void loop(){ lv_task_handler(); unsigned long tick_millis = millis() - lvgl_tick_millis; lvgl_tick_millis = millis(); lv_tick_inc(tick_millis); yield(); delay(5); } //======================================================
6. demos と example Folder:
6-1. lvgl の中に demos があります。この位置では呼び出せません。
呼び出す為には demos Folder を src Foleder内に移動します。
6-2. lvgl の中に example があります。この位置では呼び出せません。
呼び出す為には example Folder を src Foleder内に移動します。
6-3. demos と example を使用する為に Libraryと変数設定の下に追加(12,13,14)します。
#pragma GCC optimize("Ofast") #include <SPI.h> #include <lvgl.h> #define LGFX_USE_V1 #include <LovyanGFX.hpp> #include "lgfx_NT35510.h" static const uint32_t screenWidth = 800; static const uint32_t screenHeight = 480; static uint8_t draw_buf[screenWidth*screenHeight/10]; static ulong lvgl_tick_millis = millis(); #include <examples/lv_examples.h> #include <examples/widgets/lv_example_widgets.h> #include <demos/lv_demos.h>
6-4. コンパイル時にエラーが出る為に 3箇所 修正し入れ替えます。
「実例:basic_configuration.zip」で DLした
lv_demo_benchmark.c と lv_demo_music.c と lv_demo_render.c
の修正済みを入れ替えます。
1. 修正内容:lvgl / src / demos / benchmark / lv_demo_benchmark.c
27 ../../ を ../ に変更。
28 ../../ を ../ に変更。
2. 修正内容:lvgl / src / demos / music / lv_demo_music.c
13 ../../ を ../ に変更。
3. 修正内容:lvgl / src / demos / render / lv_demo_render.c
13 ../../ を ../ に変更。
14 ../../ を ../ に変更。
コンパイル時に関連する箇所も見るようで エラーが出る場合があります。
6-5. include で example や demos等を接定すると関連先をチェックしながら進みます。
関連先が不完全の場合 エラーが出ます。lv_conf.h 設定との関係もあります。
LVGL9 documentationを読むのは重要です。ただし v8 までしか選択できません。
LVGL forum も参考になります。
6-6. Memory : demos の4つのデモは 大きなMemory容量を必要とします。
Spresense は “768 KB (Default)” で不足しますので 最大 “1536 KB” にします。
ESP32 S3 ( ESP32-S3-WROOM-1-N16R8 ) は 16MB Flashです。
N16R8の書き込める最大容量は 3.3MBです。画像等を多用する時は注意します。
6-7. exampleを Librayから呼ぶ方法もありますがスケッチ内への配置も可能です。
6-8. demos や example 内のスケッチを .bin file にすると50MB程になります。
ESP32 S3 は. .bin file があると PC上の ESP32 S3(USB OTG:ESP32-FWMSC)
アイコンに Drag & Drop で動作します。
感想:
V9 のサンプルを動かせる様になりました。
V7 でなんとか動作し V8 で 命令の変更等で全てのサンプル動作をチェック。
その内に V9 が出てきて 再度 全てのサンプルをチェックしました。
全体像が少し把握できた感じで 忘れない内に 備忘録として まとめておきました。
画面サイス:
冒頭の画像を見ると解りますが 画面が小さいと 見ずらいです。
操作もしにくいです。よって 4 inch 800 x 480 が必要になります。
さらに Parallel 接続が必要になります。
ESP32 S3 USB OTG:
USB OTG で bin を S3のアイコンに Dog and Drop するとデモが起動します。
既に 79の bin のデモ ( 50MB ) を作成してあり 直ぐ試すことができています。
SPI接続:
SPI接続の表示速度は遅いです。特に demos の様な大きな容量は 遅くなります。
LVGL9 , example , demos ,