El problema que describes apunta a un firmware TFT funcionando sin sus recursos gráficos correctos, no de Marlin ni del eje Z. El hecho de que todo funcione pero los iconos estén en blanco huele a que el firmware del TFT carga, pero no encuentra o no puede leer los archivos gráficos.
Aunque el firmware arranque, si el controlador no es el correcto, o los recursos no coinciden con ese controlador, los iconos aparecen en blanco. El firmware debe estar compilado específicamente para STM. No basta con que funcione.
La única solución real es usar o generar un firmware TFT compilado específicamente para TU pantalla STM y usar los recursos gráficos que corresponden exactamente a ese binario. No hay atajos ni parches.
La verdad es que la solución no es sencilla, tienes que dar varios pasos y si cualquiera de ellos falla el problema no se solucionará.
Tienes que compilar el firmware TFT para STM. Usa BigTreeTech TFT Firmware (no binarios sueltos):
Código:
https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware
En platformio.ini debes seleccionar STM, no GD:
Código:
default_envs = STM32F103RET6_btt
Selecciona el modelo exacto de pantalla:
Código:
User/User_Configuration.h
Activa solo uno (ejemplo TFT35):
Código:
#define TFT35_V3_0
Y comenta todos los demás. Si eliges mal aquí, tendrás iconos blancos aunque compile.
Compilar con PlatformIO: Build
El binario válido será algo como:
Recursos gráficos correctos (CLAVE)
Usa los recursos del mismo commit:
Ruta: Copy to SD Card root directory/
Copia completo:
TFT35/
firmware.bin
bmp/
font/
NO mezcles recursos de:
- otro repo
- otra versión
- otro tipo de pantalla
Actualizar
- SD FAT32
- Inserta con la impresora apagada
- Enciende
- Debe mostrar mensaje de actualización
- Reinicia solo
Si no hay mensaje, la SD no se está leyendo.