STM32FXXX Graphics Displays
Gráfico de capa, Circuitos y configuraciones de ejemplos:
- Lcd_drv.pdf (https://github.com/robertoBenjami/stm32_graphics_display_drivers/blob/master/lcd_drv.pdf)
E/S LCD y controlador de E/S de pantalla táctil:
- LCD_IO_SPI: Software SPI, Hardware SPI, Hardware SPI con DMA
- LCD_IO_GPIO8: Paralelo de 8 bits sin pantalla táctil resistiva analógica
- LCD_IO_GPIO16: Paralelo de 16 bits sin pantalla táctil resistiva analógica
- LCD_IO_FSMC8: paralelo de 8 bits sin pantalla táctil resistiva analógica + FSMC o FSMC con DMA
- LCD_IO_FSMC16: Paralelo de 16 bits sin pantalla táctil resistiva analógica + FSMC o FSMC con DMA
- LCDTS_IO_GPIO8: paralelo de 8 bits con pantalla táctil resistiva analógica
- LCDTS_IO_FSMC8: paralelo de 8 bits con pantalla táctil resistiva analógica + FSMC o FSMC con DMA
- TS_XPT2046: controlador de pantalla táctil XPT2046, software y hardware SPI, 4 o 5 cables
- LCDTS_IO_SPI_XPT2046: LCD y XPT2046 en SPI, software y hardware Common SPI con DMA (DMA solo en LCD)
| Familia STM | SPI | GPIO8 | GPIO16 | FSMC8 | FSMC16 | TS_GPIO8 | TS_FSMC8 | TS_XPT2046 | SPI_XPT2046 | nota |
|---|
| STM32F0 | + + | + + | + + | | | | | | | |
| Stm32f1 | + + | + + | + + | | | + + | | + + | | |
| STM32F2 | + + | + + | + + | + + | + + | + + | + + | + + | + + | |
| Stm32f3 | + + | + + | + + | | | | | | | |
| Stm32f4 | + + | + + | + + | + + | + + | + + | + + | + + | + + | |
| STM32F7 | + + | + + | + + | | | | | | | |
| Stm32g0 | | + + | + + | | | | | | | no probado |
| Stm32g4 | | + + | + + | | | | | | | no probado |
| STM32L0 | + + | + + | + + | | | | | | | no probado |
| Stm32l1 | + + | + + | + + | | | | | | | |
| Stm32l4 | + + | + + | + + | | | | | | | no probado |
| Stm32l5 | | + + | + + | | | | | | | no probado |
| STM32H7 | | + + | + + | | | | | | | |
Controlador LCD:
- ST7735 (modo SPI probado)
- ST7783 (modo paralelo de 8 bits probado)
- ILI9325 (modo paralelo de 8 bits probado)
- ILI9328 (modo paralelo de 8 bits probado)
- ILI9341 (Modo paralelo de 8 bits y 16 bits, SPI con modo LTDC probado)
- ILI9486 (modo paralelo de 8 bits probado)
- ILI9488 (SPI, modo paralelo de 8 bits probado)
- HX8347G (modo paralelo de 8 bits probado)
Aplicación:
- LCDSPeedTest: prueba de velocidad LCD
- Touchcalib: programa de calibración de pantalla táctil
- Pintura: clon de pintura arduino
- JPGViewer: JPG File Viewer desde la tarjeta SD o Pendrive
- AnalogClock: Demo de reloj analógico (printf: el resultado, uso el pasador SWO para el visor de alambre de serie ST-Link (SWV). Ver: Ejemplos/src/syscalls.c)
- Vector 3D lleno (desde https://github.com/cbm80amiga/st7789_3d_filled_vector_ext)
¿Cómo usar desde cero?
- STM32F103C8 - SPI: https://www.youtube.com/watch?v=4nz1vwuqwhw
- STM32F103C8 - GPIO8: https://www.youtube.com/watch?v=2op4vGotuja
- STM32F103C8 - GPIO8 con pantalla táctil: https://www.youtube.com/watch?v=qycctzabd2g
- STM32F407ZET - FSMC16, SDCARD, JPG: https://www.youtube.com/watch?v=hfekmzxt2l8
- STM32F429Zi Discovery - SPI -DMA, USBHOST PENDRIVE, JPG: https://www.youtube.com/watch?v=qi8ctnjgwfw
- Crear proyecto para cubemx o cuboide
- Configuración del RCC (resonador de cristal/cerámica)
- Configuración de la depuración (sys / cable serie o traza assyn sw)
- Establecer la fuente de la base de tiempo (me gusta el temporizador básico para esto)
- Si FSMC: configurando el FSMC (Seleccionar chip, tipo de memoria = LCD, LCD REG SELECT, DATA = 8 o 16 bits, tiempo)
- Si sdcard: configurando el modo SDIO, habilite los fatfs, fatfs: use_lfn, max_ss = 4096, fs_lock = 5, RTC habilitado
- Si USB Pendrive: configurar el host USB, configurar la potencia USB, habilitar los fatfs, use_lfn, max_ss = 4096, fs_lock = 5
- Si JPG: habilitó el libjpeg
- Configuración de la configuración del reloj
- Configuración del proyecto: Nombre del proyecto, ToolChain = TruStudio, Tamaño de pila = 0x800
- Generar código fuente
- Truestudio o cubo
- Abra proyectos desde el sistema de archivos (solo Truestudio)
- Abierto Main.C
- Agregar código de usuario Begin PFP: Void MainApp (void);
- Agregue el código de usuario Begin while: mainApp ();
- abierto main.h
- Agregar código de usuario Begin incluye (#include "stm32f1xx_hal.h" o #include "stm32f4xx_hal.h" o ...)
- Agregue 2 carpetas nuevas para la carpeta SRC (APP, LCD)
- Copiar archivos de la aplicación/... a la aplicación
- Copie 4 o 7 archivos de controladores a LCD (LCD.H, BMP.H, STM32_ADAFRUit_LCD.H / C, If Touch: Ts.H, STM32_ADAFRUit_TS.H / C)
- Copiar la carpeta de fuentes a la carpeta LCD
- Copie el controlador IO en la carpeta LCD (LCD_IO _... H / C o LCDTS_IO ... H / C o ...)
- Copie el controlador LCD en la carpeta LCD (ST7735.H / C o ILI9325.H / C o ...)
- Si printf a swo: copie syscalls.c a la carpeta SRC
- Configuración de la configuración El archivo del encabezado del controlador IO (configuración del pin, configuración de velocidad, etc.)
- Configuración de la configuración LCD (orientación, pantalla táctil)
- Agregar Puta de incluido: SRC/LCD
- Configuración de las opciones de compilación (habilitar la compilación de paralell, la óptima)
- compilar, ejecutar ...
Ejemplo (desembolse la aplicación que le gusta):
- F103C8T_APP: (STM32F103C8T HAL Aplicaciones, Cubemx, Truestudio)
- F103C8T_APP_RTOS: (STM32F103C8T HAL-FREERTOS Aplicaciones, Cubemx, Truestudio)
- F407VET_APP: (STM32F407VET HAL-APLICACIONES, Cubemx, Truestudio)
- F407VET_APP_RTOS: (STM32F407VET HAL-FREERTOS Aplicaciones, Cubemx, Truestudio)
- F407VET_APP_FSMC: (STM32F407VET HAL Aplicaciones, FSMC, Cubemx, TruStudio)
- F407VET_APP_RTOS_FSMC: (STM32F407VET HAL-FREERTOS Aplicaciones, FSMC, Cubemx, Truestudio)
- F407VET_APP_FSMC16: (STM32F407VET HAL Aplicaciones, FSMC 16 bit, Cubemx, Truestudio)
- F407ZET_APP_FSMC16_EXTSRAM: (STM32F407ZET HAL Aplicaciones, FSMC 16 bits, SRAM externo 1 MB, Cubemx, Truestudio)
¿Cómo agregar el soporte SWO a Stlink barato?
https://lujji.github.io/blog/stlink-clone-trace/