Files
thermostat-hw/sdkconfig.defaults
T
mattandClaude Fable 5 dd2d4283e2 Fix WiFi reconnect bugs, negative-temp rounding, and stale docs
- Clear WIFI_CONNECTED_BIT on disconnect so wifi_is_connected() stops
  reporting a link that is gone; the weather task's reconnect path was
  dead code without it.
- After the 8 fast retries are spent, retry every 30s via an esp_timer
  forever instead of giving up until power cycle. FAIL_BIT now only
  unblocks the boot-time wait and is cleared on reconnect.
- Start the weather task even when the boot-time connect times out --
  the background retries may still bring WiFi up later. Only an empty
  SSID skips it.
- Round temperatures with lroundf(): the old +0.5f-and-truncate rounded
  toward zero below 0degF (-10.6 displayed as -10).
- Drop the stale single-framebuffer "Partial-mode flush" comment in
  display_rgb.c, fix the README paragraph claiming the bounce buffer is
  disabled (it is enabled and load-bearing), and correct the
  sdkconfig.defaults header to N16R8/16MB.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 20:48:19 -07:00

85 lines
3.3 KiB
Plaintext

# Elecrow CrowPanel 7.0" Advance HMI -- ESP32-S3-WROOM-1-N16R8
# 16MB flash, 8MB octal PSRAM, 800x480 RGB panel.
CONFIG_IDF_TARGET="esp32s3"
# --- Flash / partitions ---
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
CONFIG_ESPTOOLPY_FLASHFREQ_80M=y
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
# --- CPU ---
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
CONFIG_FREERTOS_HZ=1000
# --- PSRAM ---
# The R8 suffix is 8MB OCTAL PSRAM. QSPI mode will not sustain an 800x480
# RGB framebuffer; octal at 80MHz is required for a stable panel.
CONFIG_SPIRAM=y
CONFIG_SPIRAM_MODE_OCT=y
# 80MHz. The vendor's Arduino build uses 120MHz, which would give the RGB
# panel 50% more bandwidth -- but on ESP-IDF 5.3 selecting 120MHz PSRAM raises
# the shared MSPI core clock and forces flash to 120MHz too. That needs flash
# High Performance Mode plus a DC-aware bootloader, and getting it wrong
# leaves the board unbootable. Not worth it; the bounce buffer covers the gap.
CONFIG_SPIRAM_SPEED_80M=y
CONFIG_SPIRAM_USE_MALLOC=y
# Do NOT enable SPIRAM_FETCH_INSTRUCTIONS / SPIRAM_RODATA here. Espressif
# documents them as incompatible with an RGB panel framebuffer in PSRAM: the
# LCD DMA and the instruction fetch path contend for the same bus, which
# blanks the panel and stalls TLS handshakes.
# --- Cache: reduces RGB panel tearing/drift ---
CONFIG_ESP32S3_DATA_CACHE_64KB=y
CONFIG_ESP32S3_DATA_CACHE_LINE_32B=y
# --- LCD ---
CONFIG_LCD_RGB_ISR_IRAM_SAFE=y
# Re-align the scanout to vsync if it ever does slip.
CONFIG_LCD_RGB_RESTART_IN_VSYNC=y
# The bounce-buffer ISR faults if the cache is disabled by a flash write while
# the panel is running. app_main finishes WiFi bring-up before starting the
# panel; this stops the WiFi stack writing to flash afterwards too.
CONFIG_ESP_WIFI_NVS_ENABLED=n
# --- WiFi buffer trim ---
# Frees ~25KB of internal RAM so the LVGL draw buffers fit there rather than
# in PSRAM. Keeping them out of PSRAM removes a third round trip over the same
# bus the LCD is streaming from, which is what causes the refill artefacts.
# This board only polls a small JSON endpoint, so the smaller pools are ample.
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=4
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=16
CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=16
CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
# --- Console ---
# Console reaches us over the CH340 UART bridge. The USB-Serial-JTAG
# peripheral is left off: it is hardwired to GPIO19/20 on the ESP32-S3, which
# the Basic CrowPanel uses for touch I2C. The Advance uses 15/16 so this is
# not strictly required here, but nothing needs it and it keeps those pins free.
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
# --- TLS ---
# The LVGL draw buffers take ~62KB of internal RAM, which leaves too little
# for an mbedTLS session (it fails with MBEDTLS_ERR_SSL_ALLOC_FAILED, -0x7F00).
# Push TLS allocations to PSRAM and shrink the outgoing content buffer -- the
# only request this makes is a short GET.
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=y
CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
# --- LVGL 9 ---
CONFIG_LV_COLOR_DEPTH_16=y
CONFIG_LV_USE_LOG=y
CONFIG_LV_LOG_LEVEL_WARN=y
CONFIG_LV_FONT_MONTSERRAT_14=y
CONFIG_LV_FONT_MONTSERRAT_28=y
CONFIG_LV_FONT_MONTSERRAT_48=y
# --- Main task needs headroom for driver init ---
CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192