Driver tampilan grafis stm32fxxx
Lapisan Bagan, Contoh Sirkuit dan Pengaturan:
- Lcd_drv.pdf (https://github.com/robertobenjami/stm32_graphics_display_drivers/blob/master/lcd_drv.pdf)
LCD I/O dan Driver I/O TouchScreen:
- LCD_IO_SPI: Perangkat Lunak SPI, SPI Perangkat Keras, Perangkat Keras SPI dengan DMA
- lcd_io_gpio8: 8 bit paralell tanpa layar sentuh resistif analog
- lcd_io_gpio16: 16 bit paralell tanpa layar sentuh resistif analog
- LCD_IO_FSMC8: 8 bit paralell tanpa layar sentuh resistif analog + FSMC atau FSMC dengan DMA
- LCD_IO_FSMC16: 16 bit paralell tanpa layar sentuh resistif analog + FSMC atau FSMC dengan DMA
- lcdts_io_gpio8: 8 bit paralell dengan layar sentuh resistif analog
- LCDTS_IO_FSMC8: 8 bit paralell dengan layar sentuh resistif analog + FSMC atau FSMC dengan DMA
- TS_XPT2046: driver layar sentuh XPT2046, perangkat lunak dan perangkat keras SPI, 4 atau 5 kabel
- LCDTS_IO_SPI_XPT2046: LCD dan XPT2046 dalam SPI, perangkat lunak dan perangkat keras SPI dengan DMA (DMA hanya di LCD)
| STM Family | SPI | gpio8 | GPIO16 | FSMC8 | FSMC16 | ts_gpio8 | TS_FSMC8 | TS_XPT2046 | SPI_XPT2046 | catatan |
|---|
| STM32F0 | + | + | + | | | | | | | |
| STM32F1 | + | + | + | | | + | | + | | |
| STM32F2 | + | + | + | + | + | + | + | + | + | |
| STM32F3 | + | + | + | | | | | | | |
| STM32F4 | + | + | + | + | + | + | + | + | + | |
| STM32F7 | + | + | + | | | | | | | |
| STM32G0 | | + | + | | | | | | | tidak diuji |
| STM32G4 | | + | + | | | | | | | tidak diuji |
| STM32L0 | + | + | + | | | | | | | tidak diuji |
| STM32L1 | + | + | + | | | | | | | |
| STM32L4 | + | + | + | | | | | | | tidak diuji |
| STM32L5 | | + | + | | | | | | | tidak diuji |
| STM32H7 | | + | + | | | | | | | |
Driver LCD:
- ST7735 (mode SPI diuji)
- ST7783 (mode paralell 8 bit diuji)
- ILI9325 (mode paralell 8 bit diuji)
- ILI9328 (mode paralell 8 bit diuji)
- ILI9341 (SPI, Mode Paralell 8 Bit dan 16 Bit, SPI dengan Mode LTDC diuji)
- ILI9486 (mode paralell 8 bit diuji)
- ILI9488 (SPI, Mode Paralell 8 bit diuji)
- HX8347G (mode paralell 8 bit diuji)
Aplikasi:
- LCDSPEEDTEST: Uji Kecepatan LCD
- TouchCalib: Program kalibrasi layar sentuh
- Cat: Arduino Paint Clone
- JPGViewer: Penampil File JPG dari SD Card atau Pendrive
- AnalogClock: Demo jam analog (printf: Hasilnya, saya menggunakan pin swo untuk penampil kawat seri st-link (swv). Lihat: contoh/src/syscalls.c)
- Vektor terisi 3D (dari https://github.com/cbm80amiga/ST7789_3D_FILLED_VECTOR_EXT)
Bagaimana cara menggunakan mulai dari nol?
- STM32F103C8 - SPI: https://www.youtube.com/watch?v=4nz1vwuqwhw
- STM32F103C8 - GPIO8: https://www.youtube.com/watch?v=2op4vgotuja
- STM32F103C8 - GPIO8 dengan layar sentuh: 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
- Buat Proyek untuk Cubemx atau Cubeide
- Mengatur RCC (Crystal/Keramik Resonator)
- Mengatur Debug (SYS / Serial Wire atau Trace Assyn SW)
- Mengatur Sumber Timebase (Saya suka timer dasar untuk ini)
- Jika FSMC: Mengatur FSMC (Chip Select, Type Memori = LCD, LCD REG SELECT, DATA = 8 atau 16 BIT, TIMING)
- Jika SDCARD: Mengatur mode SDIO, aktifkan FATFS, FATFS: Use_lfn, MAX_SS = 4096, FS_LOCK = 5, RTC Diaktifkan
- Jika USB Pendrive: Mengatur host USB, mengatur daya USB, aktifkan fatfs, use_lfn, max_ss = 4096, fs_lock = 5
- Jika jpg: mengaktifkan libjpeg
- Mengatur Konfigurasi Jam
- Pengaturan Proyek: Nama Proyek, Toolchain = Truestudio, Stack Size = 0x800
- menghasilkan kode sumber
- Truestudio atau Cubeide
- Proyek Buka Dari Sistem File (Hanya Truestudio)
- Buka Main.C
- Tambahkan Kode Pengguna Mulai PFP: void MainApp (void);
- Tambahkan kode pengguna Begin while: MainApp ();
- Buka Main.H
- Tambahkan Kode Pengguna Mulai Termasuk (#include "STM32F1XX_HAL.H" atau #include "STM32F4XX_HAL.H" atau ...)
- Tambahkan 2 folder baru untuk folder SRC (App, LCD)
- Salin file dari aplikasi/... ke aplikasi
- Salin 4 atau 7 file dari driver ke LCD (LCD.H, BMP.H, STM32_ADAFRUIT_LCD.H / C, If Touch: TS.H, STM32_ADAFRUIT_TS.H / C)
- Salin Folder Font ke Folder LCD
- Salin driver IO ke folder LCD (lcd_io _... h / c atau lcdts_io ... h / c atau ...)
- Salin driver LCD ke folder LCD (ST7735.H / C atau ILI9325.H / C atau ...)
- Jika printf ke SWO: Salin syscalls.c ke folder SRC
- Mengatur konfigurasi file header driver IO (pengaturan pin, pengaturan kecepatan dll ...)
- Mengatur konfigurasi LCD (orientasi, layar sentuh)
- Tambahkan Path: SRC/LCD
- Mengatur opsi kompilasi (aktifkan paralell build, optimalisasi)
- Kompilasi, jalankan ...
Contoh (Harap unzip aplikasi yang Anda sukai):
- F103C8T_APP: (STM32F103C8T HAL Applications, Cubemx, Truestudio)
- F103C8T_APP_RTOS: (STM32F103C8T HAL-FREERTOS Aplikasi, Cubemx, Truestudio)
- F407VET_APP: (STM32F407VET HAL-Applications, Cubemx, Truestudio)
- F407VET_APP_RTOS: (STM32F407VET HAL-FREERTOS Aplikasi, Cubemx, Truestudio)
- F407VET_APP_FSMC: (Aplikasi STM32F407VET HAL, FSMC, Cubemx, Truestudio)
- F407VET_APP_RTOS_FSMC: (STM32F407VET HAL-FREERTOS Aplikasi, FSMC, Cubemx, Truestudio)
- F407VET_APP_FSMC16: (STM32F407VET HAL Aplikasi, FSMC 16 Bit, Cubemx, Truestudio)
- f407zet_app_fsmc16_extsram: (stm32f407zet aplikasi hal, fsmc 16 bit, eksternal 1mb sram, cubemx, truestudio)
Bagaimana cara menambahkan dukungan SWO ke stlink murah?
https://lujji.github.io/blog/stlink-clone-trace/