wie schon geschrieben findet man für das WT32-SC01 Plus keine brauchbare Radiosoftware. YoRadio scheitert schon gleich beim ESP32S3-Prozessor, und alle großen Pakete unterstützen die ST7796UI Grafik nicht. Als Grafik-Library kommen nach meinen Recherchen nur LovyanGFX und Adafruit_GFX in Frage.
Als ich entdeckte dass macsbug Retro style WebRadio auf LovyanGFX aufbaut hatte ich die Idee mir ein Paket mit dieser wunderschönen Kassettensimulation zusammenzustricken.
macsbug bietet einige fertige Varianten zum Download:
- WebRadio_MRB_Cassett.zip für ein 3.9″ 800×480 MRB3973 Display
- WebRadio_MRB_AppleCassett ebenfalls für das 3.9″ 800×480 MRB3973 Display
- WebRadio_M5Stack_OpenTape für ein 2.0″ 320×240 M5Stack
- WebRadio_2432S028R_OpenTape für das 2.8″ 320×240 ESP32-2432S028R Modul
- WebRadio_3248S035C_OpenTape für das 3.5″ 480×320 3ESP32-248S035C Modul
- WebRadio_MRB3511_OpenTape für 3.5″ 320×480 MRB3511 Display
als Basis musste ich ein Paket nehmen welches von der Auflösung des WT32-SC01 Plus von 480x320 her passt. Ein Ändern der Grafiken ist der größere Aufwand gegenüber der Änderung des Grafik-Chip, da die Grafiken aus animierten gif, Zeichenbefehlen und Touchfeldern bestehen. Ich wählte dann WebRadio_3248S035C_OpenTape. Dieses ist geschrieben für die SPI-Variante des ST7796 und den LCD Touch XPT2046. Ich benötigte die 8Bit-Parallel Variante des ST7796 und den LCD Touch FT5x06. Das ist unter Lovyan nicht mal eben mit einer anderen Treiber Definition erledigt, sondern mit einer ganzen Konfigurationsseite. Den Aufbau dieser Seite entnahm ich dem 16Bit Parallel Panel NT35510 des Paketes WebRadio_MRB_Cassett und die Belegungen und Werte übernahm ich von den WT32-SC01 Plus Beispielen von DrNeurosurg.
//---------------------------------------------------------------------- // https://github.com/lovyan03/LovyanGFX/blob/master/examples/HowToUse/2_user_setting/2_user_setting.ino //===================================================================== class LGFX : public lgfx::LGFX_Device{ lgfx::Panel_ST7796 _panel_instance; lgfx::Bus_Parallel8 _bus_instance;//16bit Parallelのインスタンス(ESP32) lgfx::Light_PWM _light_instance; lgfx::Touch_FT5x06 _touch_instance; public:LGFX(void){ // バス制御の設定を行います。 auto cfg = _bus_instance.config(); // バス設定用の構造体を取得します。 // 16ビットパラレルバスの設定 cfg.freq_write =40000000;// 送信クロック(最大20MHz,80MHzを整数割の値に丸める) cfg.pin_wr = 47; // WR を接続しているピン番号 cfg.pin_rd = -1; // RD を接続しているピン番号 cfg.pin_rs = 0; // RS(D/C)を接続しているピン番号 cfg.pin_d0 = 9; // D0 を接続しているピン番号 cfg.pin_d1 = 46; // D1 を接続しているピン番号 cfg.pin_d2 = 3; // D2 を接続しているピン番号 cfg.pin_d3 = 8; // D3 を接続しているピン番号 cfg.pin_d4 = 18; // D4 を接続しているピン番号 cfg.pin_d5 = 17; // D5 を接続しているピン番号 cfg.pin_d6 = 16; // D6 を接続しているピン番号 cfg.pin_d7 = 15; // D7 を接続しているピン番号 _bus_instance.config(cfg);// 設定値をバスに反映します。 _panel_instance.setBus(&_bus_instance); // バスをパネルにセットします。 {// 表示パネル制御の設定 auto cfg = _panel_instance.config(); // 表示パネル設定用の構造体を取得します。 cfg.pin_cs = -1; // CSが接続されているピン番号 (-1 = disable) cfg.pin_rst = 4; // RSTが接続されているピン番号 (-1 = disable) cfg.pin_busy = -1; // BUSYが接続されているピン番号 (-1 = disable) cfg.memory_width = 320; // ドライバICがサポートしている最大の幅 cfg.memory_height= 480; // ドライバICがサポートしている最大の高さ cfg.panel_width = 320; // 実際に表示可能な幅 cfg.panel_height = 480; // 実際に表示可能な高さ cfg.offset_x = 0; // パネルのX方向オフセット量 cfg.offset_y = 0; // パネルのY方向オフセット量 cfg.offset_rotation = 2; // 回転方向の値のオフセット 0~7 (4~7は上下反転) cfg.dummy_read_pixel= 8; // ピクセル読出し前のダミーリードのビット数 cfg.dummy_read_bits = 1; // ピクセル以外のデータ読出し前のダミーリードのビット数 cfg.readable = false; // データ読出しが可能な場合 trueに設定 cfg.invert = true; // パネルの明暗が反転してしまう場合 trueに設定 cfg.rgb_order = false; // パネルの赤と青が入れ替わってしまう場合 trueに設定 cfg.dlen_16bit = false; // データ長を16bit単位で送信するパネルの場合trueに設定 cfg.bus_shared = true; // SDカードとバス共有はtrueに設定 _panel_instance.config(cfg); } { // バックライト制御の設定を行います(必要なければ削除) auto cfg = _light_instance.config();// バックライト設定用の構造体を取得します。 cfg.pin_bl = 45; // バックライトが接続されているピン番号 cfg.invert = false; // バックライトの輝度を反転させる場合 true cfg.freq = 44100; // バックライトのPWM周波数 cfg.pwm_channel = 0; // 使用するPWMのチャンネル番号 _light_instance.config(cfg); _panel_instance.setLight(&_light_instance); // バックライトをパネルにセットします。 } { // タッチスクリーン制御の設定を行います。(必要なければ削除) auto cfg = _touch_instance.config(); cfg.x_min = 0; // タッチスクリーンから得られる最小のX値(生の値) cfg.x_max = 319; // タッチスクリーンから得られる最大のX値(生の値) cfg.y_min = 0; // タッチスクリーンから得られる最小のY値(生の値) cfg.y_max = 479; // タッチスクリーンから得られる最大のY値(生の値) cfg.pin_int = 7; // INTが接続されているピン番号 43 cfg.bus_shared = false; // 画面と共通のバスを使用している場合 trueを設定 cfg.offset_rotation = 0; // 表示とタッチの向きのが一致しない場合の調整 0~7の値で設定 // SPI接続の場合 //cfg.spi_host = SPI2_HOST;// 使用するSPIを選択 (HSPI_HOST or VSPI_HOST) //cfg.freq = 1000000; // SPIクロックを設定, Max 2.5MHz, 8bit(7bit) mode //cfg.pin_sclk = 41; // SCLKが接続されているピン番号, TP CLK //cfg.pin_mosi = 44; // MOSIが接続されているピン番号, TP DIN //cfg.pin_miso = 2; // MISOが接続されているピン番号, TP DOUT //cfg.pin_cs = 42; // CS が接続されているピン番号, TP CS // For I2C connection cfg.i2c_port = 0; // Select I2C to use (0 or 1) cfg.i2c_addr = 0x38; // I2C device address number cfg.pin_sda = 6; // pin number where SDA is connected cfg.pin_scl = 5; // pin number to which SCL is connected cfg.freq = 400000; // set I2C clock _touch_instance.config(cfg); _panel_instance.setTouch(&_touch_instance);// タッチスクリーンをパネルにセットします。 } setPanel(&_panel_instance); // 使用するパネルをセットします。 } }; LGFX tft; // 準備したクラスのインスタンスを作成します。
das WT32-SC01 Plus war beim Aufspielen der Software sehr schwierig in den Flashing-Mode zu bringen. Erfolg hatte ich dann endlich mit dieser Methode:
GPIO 0 auf Masse legen:
wenn dann nach Drücken auf die Reset-Taste der Bildschirm dunkel wird kann der Upload starten. Schafft man das nicht dann muss die Reset-Taste kurz vor dem Verbindungsaufbau der IDE betätigt werden. Der richtige Zeitpunkt ist nicht leicht zu finden. Bis zum Verbindungsaufbau muss der Baustein wieder hochgefahren sein. Danach kann die GPIO 0 Brücke wieder entfernt werden.
Nachtrag: Das Flashen geht problemlos mit dem Debbuging Tool
Die Einstellungen der IDE (alle Versionen):
Board: "ESP32S3 Dev Module"
Upload Speed : "921600"
CPU Frequency : "240MHz (WiFi/BT)"
Flash Frequency : "80MHz"
Flash Mode : "DIO"
Flash Size : "8MB (64Mb)"
Partition Scheme : "8 MB with SPIFFS)"
PSRAM : "QSPI PSRAM"
USB CDC on Boot: "Enabled" (diesen Eintrag hab ich von DrNeurosurg übernommen)
Beim Download von macsbug ist zu beachten dass die zip-Dateien als PDF getarnt sind. Also rechte Maustaste, Speichern unter.., und vor dem Speichern die Endung pdf entfernen!
Videolink:


Keine Kommentare:
Kommentar veröffentlichen