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/