Lock P00–P08 with in/out scope, frozen APIs, verify commands, and one-phase-per-session protocol for the IDF modular UI work.
59 lines
2.4 KiB
Markdown
59 lines
2.4 KiB
Markdown
# P07 — JC4827W543 display + GT911 + STOP
|
||
|
||
STATUS: TODO
|
||
DEPENDS: P06
|
||
READ: this file, `docs/TARGET_ARCHITECTURE.md` dual-board + UI strategy, vendor pin notes below
|
||
OUT: LVGL in `app_machine`; changing recipes; assigning WROOM STEP/DIR onto S3 without a pin table comment; pumps
|
||
FORBIDDEN: `lv_*` types in `ui_cmd.h` / `app_machine.h`; blocking in flush_cb beyond DMA wait; copying WROOM GPIO map blindly
|
||
|
||
## IN
|
||
|
||
S3 firmware shows the **same five screens** via a colour adapter. Touch STOP = same path as Esc (`hal_motor_request_stop` + CMD_STOP). Custom draw first (no LVGL unless bring-up is otherwise blocked — if LVGL used, confine to `hal_display` + `app_ui` board files).
|
||
|
||
Mechatronics on S3: keep motor EN `GPIO_NUM_NC` **unless** a spare pin is documented in `board.c` comments with the header pin number. Do not invent STEP/DIR. S3 image is operator-panel-capable; agitation may remain on WROOM until pins proven.
|
||
|
||
## Pins (lock from community JC4827W543C)
|
||
|
||
Display NV3041A QSPI: CS 45, SCK 47, D0 21, D1 48, D2 40, D3 39, BL 1, 480×272.
|
||
|
||
GT911 I2C: SDA 8, SCL 4, INT 3, RST 38, addr 0x5D. Reset: RST low 200 ms then high; INT as input.
|
||
|
||
PSRAM octal 80 MHz already in `sdkconfig.s3`.
|
||
|
||
Free IO is scarce. Do not steal QSPI/GT911 pins for motor.
|
||
|
||
## FILES
|
||
|
||
```
|
||
components/board_jc4827w543/board.c # update comments/pins
|
||
components/hal_display/hal_display_nv3041a.c # or .cpp
|
||
components/hal_input/hal_input_gt911.c
|
||
components/app_ui/app_ui_color.c # or ifdefs in app_ui.c
|
||
```
|
||
|
||
`hal_display_text` still works (glyph blit at cell grid 24×8 or similar) so `app_ui.c` can stay shared. Prefer: `app_ui` calls abstract `ui_draw_program_select()` implemented per board.
|
||
|
||
STOP hit-test: rectangle bottom of Running/Stopped/Complete screens, label `STOP`. On touch inside: `hal_motor_request_stop()` then CMD_STOP (same as keypad X). Resume/Back buttons on Stopped.
|
||
|
||
## VERIFY
|
||
|
||
S3 `idf.py` build pass.
|
||
|
||
WROOM build still pass (do not regress P06).
|
||
|
||
Host tests pass.
|
||
|
||
Hardware S3: ProgramSelect visible, tap process, Running shows name/remaining/temp, STOP stops if motor wired else still transitions UI to Stopped.
|
||
|
||
## COMMITS
|
||
|
||
1. `Add NV3041A and GT911 HAL for jc4827w543`
|
||
2. `Map colour screens and STOP hit-test to existing commands`
|
||
|
||
## DoD
|
||
|
||
- [ ] Same commands as keypad
|
||
- [ ] No lv types in machine/process/cmd headers
|
||
- [ ] WROOM firmware unchanged in behaviour
|
||
- [ ] STATUS→DONE
|