STM32FXXX กราฟิกแสดงไดรเวอร์
แผนภูมิเลเยอร์ตัวอย่างวงจรและการตั้งค่า:
- lcd_drv.pdf (https://github.com/robertobenjami/stm32_graphics_display_drivers/blob/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 บิต paralell โดยไม่มีหน้าจอสัมผัสแบบอะนาล็อก
- LCD_IO_FSMC8: 8 บิต paralell โดยไม่ต้องใช้หน้าจอสัมผัสแบบอะนาล็อก + FSMC หรือ FSMC ด้วย DMA
- LCD_IO_FSMC16: 16 บิต paralell โดยไม่ต้องใช้หน้าจอสัมผัสแบบอะนาล็อก + FSMC หรือ FSMC ด้วย DMA
- LCDTS_IO_GPIO8: 8 บิต paralell พร้อมหน้าจอสัมผัสแบบอะนาล็อก
- LCDTS_IO_FSMC8: 8 บิต paralell พร้อมหน้าจอสัมผัสแบบอะนาล็อก + FSMC หรือ FSMC ด้วย DMA
- TS_XPT2046: XPT2046 ไดรเวอร์หน้าจอสัมผัสซอฟต์แวร์และฮาร์ดแวร์ SPI, 4 หรือ 5 สาย
- LCDTS_IO_SPI_XPT2046: LCD และ XPT2046 ใน SPI ทั่วไปซอฟต์แวร์และฮาร์ดแวร์ SPI พร้อม DMA (DMA เท่านั้นใน LCD)
| ครอบครัว 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 (ทดสอบโหมด Paralell 8 บิต)
- ILI9325 (ทดสอบโหมด Paralell 8 บิต)
- ILI9328 (ทดสอบโหมด Paralell 8 บิต)
- ILI9341 (SPI, 8 บิตและ 16 บิตโหมด Paralell, SPI พร้อมโหมด LTDC ที่ผ่านการทดสอบ)
- ILI9486 (ทดสอบโหมด Paralell 8 บิต)
- ILI9488 (SPI, การทดสอบโหมด Paralell 8 บิต)
- HX8347G (ทดสอบโหมด Paralell 8 บิต)
แอป:
- LCDSPEEDTEST: การทดสอบความเร็ว LCD
- TouchCalib: โปรแกรมการสอบเทียบหน้าจอสัมผัส
- สี: Arduino Paint Clone
- jpgViewer: jpg ตัวแสดงไฟล์จากการ์ด SD หรือ Pendrive
- AnalogClock: การสาธิตนาฬิกาแบบอะนาล็อก (PRINTF: ผลลัพธ์ฉันใช้ PIN SWO สำหรับ ST-LINK Serial Wire Viewer (SWV) ดู: ตัวอย่าง/src/syscalls.c)
- เวกเตอร์ที่เติมเต็ม 3D (จาก https://github.com/cbm80amiga/st7789_3d_filled_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 Discovery - SPI -DMA, USBHost Pendrive, JPG: https://www.youtube.com/watch?v=qi8ctnjgwfw
- สร้างโครงการสำหรับ cubemx หรือ cubeide
- การตั้งค่า RCC (Resonator คริสตัล/เซรามิก)
- การตั้งค่าการดีบัก (SYS / สายอนุกรมหรือการติดตาม Assyn SW)
- การตั้งค่าแหล่งที่มาของฐานเวลา (ฉันชอบตัวจับเวลาพื้นฐานสำหรับสิ่งนี้)
- ถ้า FSMC: การตั้งค่า FSMC (Chip Select, Memory Type = 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
- การตั้งค่าการกำหนดค่านาฬิกา
- การตั้งค่าโครงการ: ชื่อโครงการ, toolchain = truestudio, สแต็กขนาด = 0x800
- สร้างซอร์สโค้ด
- Truestudio หรือ Cubeide
- เปิดโครงการจากระบบไฟล์ (เฉพาะ truestudio)
- เปิด main.c
- เพิ่มรหัสผู้ใช้เริ่มต้น PFP: เป็นโมฆะ MainApp (เป็นโมฆะ);
- เพิ่มรหัสผู้ใช้เริ่มต้นในขณะที่: MainApp ();
- เปิด main.h
- เพิ่มรหัสผู้ใช้เริ่มต้นรวมถึง (#include "STM32F1XX_HAL.H" หรือ #include "STM32F4XX_HAL.H" หรือ ... )
- เพิ่ม 2 โฟลเดอร์ใหม่สำหรับโฟลเดอร์ SRC (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 to swo: คัดลอก syscalls.c ไปยังโฟลเดอร์ src
- การตั้งค่าการกำหนดค่าไฟล์ส่วนหัวไดรเวอร์ IO (การตั้งค่า PIN, การตั้งค่าความเร็ว ฯลฯ ... )
- การตั้งค่าการกำหนดค่า LCD (การวางแนวหน้าจอสัมผัส)
- เพิ่ม PATH: SRC/LCD
- การตั้งค่าตัวเลือกการรวบรวม (เปิดใช้งาน Paralell Build, Optimalization)
- คอมไพล์เรียกใช้ ...
ตัวอย่าง (โปรดคลายซิปแอพที่คุณชอบ):
- F103C8T_APP: (STM32F103C8T HAL Applications, Cubemx, Truestudio)
- F103C8T_APP_RTOS: (STM32F103C8T แอปพลิเคชัน Hal-Freertos, Cubemx, Truestudio)
- F407VET_APP: (STM32F407VET HAL-APPETIONS, COBEMX, Truestudio)
- F407VET_APP_RTOS: (STM32F407VET HAL-FREERTOS แอปพลิเคชัน Cubemx, Truestudio)
- F407VET_APP_FSMC: (STM32F407VET HAL Applications, FSMC, Cubemx, Truestudio)
- F407VET_APP_RTOS_FSMC: (STM32F407VET HAL-FREERTOS แอปพลิเคชัน FSMC, Cubemx, Truestudio)
- F407VET_APP_FSMC16: (STM32F407VET HAL Applications, FSMC 16 บิต, Cubemx, Truestudio)
- F407ZET_APP_FSMC16_EXTSRAM: (STM32F407ZET HAL Applications, FSMC 16 บิต, SRAM 1MB ภายนอก, Cubemx, Truestudio)
วิธีการเพิ่มการสนับสนุน SWO ให้กับ Stlink ราคาถูก?
https://lujji.github.io/blog/stlink-clone-trace/