From 0679d84500c20912a345ba9194c1bf4418c333ae Mon Sep 17 00:00:00 2001 From: "DESKTOP-PUHFO60\\dsx2016" Date: Tue, 27 Oct 2026 20:26:57 +0800 Subject: [PATCH] Harden 3.5 CYD support: GT911 reset, larger UI, dual firmware export. Align touch init with wifitest; scale fonts/bars for 480x320; refresh firmware/cyd and firmware/cyd_35r packages. --- README.md | 19 ++++++++++++++----- firmware/cyd/VERSION.txt | 4 ++-- firmware/cyd/firmware.bin | Bin 574512 -> 574496 bytes firmware/cyd_35r/VERSION.txt | 4 ++-- firmware/cyd_35r/firmware.bin | Bin 588832 -> 607488 bytes src/touch.cpp | 14 +++++++------- src/ui.cpp | 26 ++++++++++++++++++-------- 7 files changed, 43 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 24bbcdd..43b232b 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,21 @@ 在 **2.8" / 3.5" CYD** 上显示当前电脑的 **CPU、GPU、内存、磁盘** 等主要信息。显示/触控骨架对齐 [tftest](../tftest) / [wifitest](../wifitest);板型差异按 [CYD_PROJECT_GUIDE.md](../CYD_PROJECT_GUIDE.md)。 -| 板型 | env | 屏 / 触控 | 背光 | -|------|-----|-----------|------| -| **2.8" · 2432S028R** | `cyd`(默认) | ILI9341 + XPT2046 SoftSPI | GPIO**21** | -| **3.5" · 3248S035C** | `cyd_35r` | ST7796 + GT911 I2C | GPIO**27** | +| 板型 | env | 屏 / 触控 | 背光 | 刷写目录 | +|------|-----|-----------|------|----------| +| **2.8" · 2432S028R** | `cyd`(默认) | ILI9341 + XPT2046 SoftSPI · UI 320×240 | GPIO**21** | [`firmware/cyd/`](firmware/cyd/) | +| **3.5" · 3248S035C** | `cyd_35r` | ST7796 + GT911 I2C · UI 480×320(`UX/UY` 缩放) | GPIO**27** | [`firmware/cyd_35r/`](firmware/cyd_35r/) | -本工程**无外设接线**(只吃 USB 供电 + 串口)。 +本工程**无外设接线**(只吃 USB 供电 + 串口)。主机 `send_sysinfo` **与板型无关**(同一 SI 协议)。 + +**认板再刷**:2.8 / 3.5 固件不可互刷(BL / 屏驱 / 触控全不同)。3.5: + +```powershell +pio run -e cyd_35r -t upload +# 或 +cd firmware\cyd_35r +.\flash.ps1 +``` ## 原理 diff --git a/firmware/cyd/VERSION.txt b/firmware/cyd/VERSION.txt index 5fbd784..a8296f0 100644 --- a/firmware/cyd/VERSION.txt +++ b/firmware/cyd/VERSION.txt @@ -1,5 +1,5 @@ name: CYD serverinfotest (cyd) -git: 683d0f2 +git: f83df3f date: 2026-10-27 board: ESP32-2432S028R (ILI9341) flash_size: 4MB @@ -11,5 +11,5 @@ offsets: sha256: bootloader.bin 3D234A7471F67B013686DABD4DEE7C1FA915C9928463616A94BC9297ACF1ABF8 boot_app0.bin F94C5D786A7A8FAB06AC5D10E33BF37711A6697636DC037559EA19CC410A17F0 - firmware.bin 85838702F4062A3679CAE17D0365B1E14DDBB4C3BA235A0A6500FDDB84A56B6A + firmware.bin C37191D2A95FDA84053DDB2F6BF3EE42ADF1C7C1527495284DD071EB9E7B1863 partitions.bin 148B959CBFF1C38AA8E1D5C0BA9D612C54997B945E56A63F41223EEF650653A1 diff --git a/firmware/cyd/firmware.bin b/firmware/cyd/firmware.bin index f51e26953748d7352e585b37e4c853702117ef7f..c4ef93d69adade8b02a643cb1528b12cbf615fbd 100644 GIT binary patch delta 13312 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 Yqq<++F>2yhdzYP>R;B8QD;?7Q2X7V}Bme*a delta 13336 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 CLrc2= diff --git a/firmware/cyd_35r/VERSION.txt b/firmware/cyd_35r/VERSION.txt index 8c2e0d8..e91ca16 100644 --- a/firmware/cyd_35r/VERSION.txt +++ b/firmware/cyd_35r/VERSION.txt @@ -1,5 +1,5 @@ name: CYD serverinfotest (cyd_35r) -git: unknown +git: f83df3f date: 2026-10-27 board: ESP32-3248S035 (ST7796) flash_size: 4MB @@ -11,5 +11,5 @@ offsets: sha256: bootloader.bin 3D234A7471F67B013686DABD4DEE7C1FA915C9928463616A94BC9297ACF1ABF8 boot_app0.bin F94C5D786A7A8FAB06AC5D10E33BF37711A6697636DC037559EA19CC410A17F0 - firmware.bin 93C0D8E2A7C31848960C2DBA2894DE9D18BF21D3D94B47DDD5406CF18A1FD1B3 + firmware.bin 8B3BA7D83EE4180FE18E8E3E78EFCB88906B1DCDD86043D3A807E6C8A4B40460 partitions.bin 148B959CBFF1C38AA8E1D5C0BA9D612C54997B945E56A63F41223EEF650653A1 diff --git a/firmware/cyd_35r/firmware.bin b/firmware/cyd_35r/firmware.bin index 4afded31c65a398c2b74c48bf81d5655c8923ffe..27ce6c5bc9f558469f85ce066ca9a8eb26edab21 100644 GIT binary patch delta 67659 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 CYNO2n delta 50422 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 I$rnQZ2T_;eVE_OC diff --git a/src/touch.cpp b/src/touch.cpp index bd64e07..fca8f59 100644 --- a/src/touch.cpp +++ b/src/touch.cpp @@ -101,15 +101,15 @@ void touch_init() { Wire.setTimeOut(50); #endif + /* Always hw-reset: probe-only leaves some boards with stuck buffer / bad INT. */ + Serial.println("GT911 hw reset 0x5D"); + gt_hw_reset(false); if (!gt_find_addr()) { - Serial.println("GT911 not found — hw reset 0x5D"); - gt_hw_reset(false); - if (!gt_find_addr()) { - Serial.println("GT911 not found — hw reset 0x14"); - gt_hw_reset(true); - gt_find_addr(); - } + Serial.println("GT911 not found — hw reset 0x14"); + gt_hw_reset(true); + gt_find_addr(); } + gt_write8(GT_POINT_INFO, 0); Serial.printf("GT911 probe 0x5D=%s 0x14=%s using=0x%02X\n", gt_probe(0x5D) ? "OK" : "no", gt_probe(0x14) ? "OK" : "no", diff --git a/src/ui.cpp b/src/ui.cpp index 5a7f7b8..9d30aae 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -17,6 +17,16 @@ static constexpr uint32_t COL_BAD = 0xE85D4C; static constexpr uint32_t COL_ACCENT = 0x4FC3F7; static constexpr uint32_t COL_BAR_BG = 0x162230; +#if defined(CYD_BOARD_3248S035) +static const lv_font_t *font_title = &lv_font_montserrat_20; +static const lv_font_t *font_body = &lv_font_montserrat_16; +static constexpr int BAR_H = 14; +#else +static const lv_font_t *font_title = &lv_font_montserrat_18; +static const lv_font_t *font_body = &lv_font_montserrat_14; +static constexpr int BAR_H = 10; +#endif + struct MetricRow { lv_obj_t *lbl_tag; lv_obj_t *lbl_name; @@ -76,7 +86,7 @@ static MetricRow make_row(lv_obj_t *parent, const char *tag, int y) { r.lbl_tag = lv_label_create(parent); lv_label_set_text(r.lbl_tag, tag); lv_obj_set_style_text_color(r.lbl_tag, lv_color_hex(COL_ACCENT), 0); - lv_obj_set_style_text_font(r.lbl_tag, &lv_font_montserrat_14, 0); + lv_obj_set_style_text_font(r.lbl_tag, font_body, 0); lv_obj_set_pos(r.lbl_tag, UX(8), UY(y)); r.lbl_name = lv_label_create(parent); @@ -84,17 +94,17 @@ static MetricRow make_row(lv_obj_t *parent, const char *tag, int y) { lv_label_set_long_mode(r.lbl_name, LV_LABEL_LONG_DOT); lv_obj_set_width(r.lbl_name, UW(190)); lv_obj_set_style_text_color(r.lbl_name, lv_color_hex(COL_INK), 0); - lv_obj_set_style_text_font(r.lbl_name, &lv_font_montserrat_14, 0); + lv_obj_set_style_text_font(r.lbl_name, font_body, 0); lv_obj_set_pos(r.lbl_name, UX(52), UY(y)); r.lbl_pct = lv_label_create(parent); lv_label_set_text(r.lbl_pct, "--%"); lv_obj_set_style_text_color(r.lbl_pct, lv_color_hex(COL_MUTED), 0); - lv_obj_set_style_text_font(r.lbl_pct, &lv_font_montserrat_14, 0); + lv_obj_set_style_text_font(r.lbl_pct, font_body, 0); lv_obj_align(r.lbl_pct, LV_ALIGN_TOP_RIGHT, UX(-8), UY(y)); r.bar = lv_bar_create(parent); - lv_obj_set_size(r.bar, UI_HOR_RES - UW(16), UH(10)); + lv_obj_set_size(r.bar, UI_HOR_RES - UW(16), UH(BAR_H)); lv_obj_set_pos(r.bar, UX(8), UY(y + 18)); style_bar(r.bar); @@ -126,21 +136,21 @@ void ui_create() { lbl_title = lv_label_create(scr); lv_label_set_text(lbl_title, "PC Monitor"); lv_obj_set_style_text_color(lbl_title, lv_color_hex(COL_INK), 0); - lv_obj_set_style_text_font(lbl_title, &lv_font_montserrat_18, 0); + lv_obj_set_style_text_font(lbl_title, font_title, 0); lv_obj_set_pos(lbl_title, UX(8), UY(6)); lbl_status = lv_label_create(scr); lv_label_set_text(lbl_status, "waiting"); lv_obj_set_style_text_color(lbl_status, lv_color_hex(COL_WARN), 0); - lv_obj_set_style_text_font(lbl_status, &lv_font_montserrat_14, 0); + lv_obj_set_style_text_font(lbl_status, font_body, 0); lv_obj_align(lbl_status, LV_ALIGN_TOP_RIGHT, UX(-8), UY(8)); lbl_host = lv_label_create(scr); - lv_label_set_text(lbl_host, "Connect USB + run host script"); + lv_label_set_text(lbl_host, "Plug USB + host/run.bat"); lv_label_set_long_mode(lbl_host, LV_LABEL_LONG_DOT); lv_obj_set_width(lbl_host, UI_HOR_RES - UW(16)); lv_obj_set_style_text_color(lbl_host, lv_color_hex(COL_MUTED), 0); - lv_obj_set_style_text_font(lbl_host, &lv_font_montserrat_14, 0); + lv_obj_set_style_text_font(lbl_host, font_body, 0); lv_obj_set_pos(lbl_host, UX(8), UY(28)); lv_obj_t *line = lv_obj_create(scr);