STM32FXXX圖形顯示驅動程序
圖層圖,示例電路和設置:
- lcd_drv.pdf(https://github.com/robertobenjami/stm32_graphics_display_drivers/blob/master/master/lcd_drv.pdf)
LCD I/O和触摸屏I/O驅動程序:
- LCD_IO_SPI:軟件SPI,硬件SPI,硬件SPI帶DMA
- LCD_IO_GPIO8:8位Paralell無模擬電阻觸摸屏
- lcd_io_gpio16:16位帕拉雷爾沒有模擬電阻觸摸屏
- LCD_IO_FSMC8:8位Paralell,沒有模擬電阻觸摸屏 + FSMC或fsmc with dma
- lcd_io_fsmc16:16位Paralell沒有模擬電阻觸摸屏 + FSMC或fsmc with dma
- LCDTS_IO_GPIO8:8位Paralell帶有模擬電阻觸摸屏
- LCDTS_IO_FSMC8:8位Paralell帶有模擬電阻觸摸屏 + FSMC或fsmc with dma
- TS_XPT2046:XPT2046觸摸屏驅動程序,軟件和硬件SPI,4或5條線
- lcdts_io_spi_xpt2046:lcd和xpt2046 in Common SPI,軟件和硬件SPI(僅在LCD中DMA)
| STM家族 | spi | GPIO8 | GPIO16 | FSMC8 | FSMC16 | TS_GPIO8 | TS_FSMC8 | TS_XPT2046 | SPI_XPT2046 | 筆記 |
|---|
| STM32F0 | + | + | + | | | | | | | |
| STM32F1 | + | + | + | | | + | | + | | |
| STM32F2 | + | + | + | + | + | + | + | + | + | |
| STM32F3 | + | + | + | | | | | | | |
| STM32F4 | + | + | + | + | + | + | + | + | + | |
| STM32F7 | + | + | + | | | | | | | |
| STM32G0 | | + | + | | | | | | | 未測試 |
| STM32G4 | | + | + | | | | | | | 未測試 |
| STM32L0 | + | + | + | | | | | | | 未測試 |
| STM32L1 | + | + | + | | | | | | | |
| STM32L4 | + | + | + | | | | | | | 未測試 |
| STM32L5 | | + | + | | | | | | | 未測試 |
| STM32H7 | | + | + | | | | | | | |
LCD驅動器:
- ST7735(SPI模式測試)
- ST7783(測試8位Paralell模式)
- ILI9325(測試8位Paralell模式)
- ILI9328(測試8位Paralell模式)
- ILI9341(SPI,8位和16位Paralell模式,SPI,LTDC模式測試)
- ILI9486(測試8位Paralell模式)
- ILI9488(SPI,8位ParaLell模式測試)
- HX8347G(測試8位Paralell模式)
應用程式:
- LCDSPEEDTEST:LCD速度測試
- TouchCalib:觸摸屏校準程序
- 油漆:arduino油漆克隆
- JPGViewer:SD卡或Pendrive的JPG文件查看器
- AnalogClock:模擬時鐘演示(printf:結果,我使用SWO PIN用於ST-Link系列電線查看器(SWV)。請參閱:示例/src/syscalls.c)
- 3D填充向量(來自https://github.com/cbm80amiga/st7789_3d_filld_vector_ext)
如何從零開始使用?
- STM32F103C8- SPI:https://www.youtube.com/watch?v=4NZ1VWUQWHW
- STM32F103C8 -GPIO8:https://www.youtube.com/watch?v=2op4vgotuja
- STM32F103C8 -GPIO8帶觸摸屏:https://www.youtube.com/watch?v=qycctzabd2g
- STM32F407ZET -FSMC16,SDCARD,JPG:https://www.youtube.com/watch?v=hfekmzxt2l8
- STM32F429ZI發現-SPI -DMA,USBHOST PENDRIVE,JPG:https://www.youtube.com/watch?v=qi8ctnjgwfw
- 為Cubemx或Cubeide創建項目
- 設置RCC(水晶/陶瓷諧振器)
- 設置調試(SYS / Serial Wire或Trace Assyn SW)
- 設置時間庫來源(我喜歡此的基本計時器)
- 如果FSMC:設置FSMC(芯片選擇,內存類型= LCD,LCD Reg Select,data = 8或16位,時機)
- 如果SDCARD:設置SDIO模式,請啟用FATFS,FATFS:USE_LFN,MAX_SS = 4096,FS_LOCK = 5,啟用RTC
- 如果USB pendrive:設置USB主機,設置USB功率,啟用FATFS,use_lfn,max_ss = 4096,fs_lock = 5
- 如果JPG:啟用了libjpeg
- 設置時鐘配置
- 項目設置:項目名稱,工具鏈= truestudio,堆棧大小= 0x800
- 生成源代碼
- Truestudio或Cubeide
- 從文件系統開放項目(只有truestudio)
- OPEN MAIN.C
- 添加用戶代碼開始pfp:void mainapp(void);
- 添加用戶代碼開始時:mainapp();
- 開放main.h
- 添加用戶代碼開始包括(#include“ stm32f1xx_hal.h”或#include“ stm32f4xx_hal.h”或...)
- 為SRC文件夾添加2個新文件夾(App,LCD)
- 將文件從應用程序/...複製到應用
- 將4或7個文件從驅動程序複製到LCD(LCD.H,BMP.H,STM32_ADAFRUIT_LCD.H / C,如果觸摸:TS.H,STM32_ADAFRUIT_TS.H / C)
- 將字體文件夾複製到LCD文件夾
- 將IO驅動程序複製到LCD文件夾(LCD_IO _... H / C或LCDTS_IO ... H / C或...)
- 將LCD驅動器複製到LCD文件夾(ST7735.H / C或ILI9325.H / C或...)
- 如果printf到SWO:將syscalls.c複製到src文件夾
- 設置配置IO驅動程序標頭文件(引腳設置,速度設置等...)
- 設置LCD配置(方向,觸摸屏)
- 添加包括路徑:SRC/LCD
- 設置編譯選項(啟用ParaLell構建,最佳化)
- 編譯,運行...
示例(請解開您喜歡的應用程序):
- F103C8T_APP :( STM32F103C8T HAL應用程序,Cubemx,Truestudio)
- F103C8T_APP_RTOS :( STM32F103C8T HAL-FREERTOS應用程序,Cubemx,Truestudio)
- F407VET_APP :( STM32F407VET HAL-APPLICATIONS,CUBEMX,TRUESTUDIO)
- F407VET_APP_RTOS :( STM32F407VET HAL-FREERTOS應用程序,Cubemx,Truestudio)
- F407VET_APP_FSMC :( STM32F407VET HAL應用程序,FSMC,Cubemx,Truestudio)
- F407VET_APP_RTOS_FSMC :( STM32F407VET HAL-FREERTOS應用程序,FSMC,Cubemx,Truestudio)
- F407VET_APP_FSMC16 :( STM32F407VET HAL應用程序,FSMC 16位,Cubemx,Truestudio)
- F407ZET_APP_FSMC16_EXTSRAM :( STM32F407ZET HAL應用程序,FSMC 16位,外部1MB SRAM,CUBEMX,TRUESTUDIO)
如何將SWO支撐添加到便宜的STLINK中?
https://lujji.github.io/blog/stlink-clone-trace/