Beschreibung :
Mit dieser Library können Grafik-LCD Funktionen (24bit RGB) auf dem STM32F746 Discovery-Board benutzt werden. Der Zugriff erfolgt über den TFT-Controller. Die Auflösung ist 480 x 272 Pixel. Der Farbmode hat 16bit. Das Display ist von Rocktech und hat die Module Bezeichnung: RK043FN48H-CT672B. Es ist ein 4.3″ TFT mit LED Backlight und kapazitives Touch Panel. Hier das Datenblatt vom Hersteller:
Das Display benutzt folgende CPU-Pins :
PI15 = R0 PJ7 = G0 PE4 = B0 PJ0 = R1 PJ8 = G1 PJ13 = B1 PJ1 = R2 PJ9 = G2 PJ14 = B2 PJ2 = R3 PJ10 = G3 PJ15 = B3 PJ3 = R4 PJ11 = G4 PG12 = B4 PJ4 = R5 PK0 = G5 PK4 = B5 PJ5 = R6 PK1 = G6 PK5 = B6 PJ6 = R7 PK2 = G7 PK6 = B7 PI14 = CLK PK7 = DE PI10 = HSYNC PI9 = VSYNC PK3 = Backlight PI12 = Display
Das externe SDRAM wird als Grafik-RAM benutzt HSYNC+VSYNC im H-File aktivieren falls notwendig.
Module :
1 | stm32_ub_lcd_480x272.h, stm32_ub_lcd_480x272.c |
Includes :
1 | #include "stm32_ub_system.h" |
Defines :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | //-------------------------------------------------------------- // aktivieren von HSync/VSync Impulsen (an PI9, PI10) // 0 = HSYNC, VSYNC wird nicht benutzt // 1 = HSYNC, VSYNC wird benutzt //-------------------------------------------------------------- #define USE_SYNC_GPIO 1 // HSYNC, VSYNC GPIOs werden benutzt //#define USE_SYNC_GPIO 0 // HSYNC, VSYNC GPIOs werden nicht benutzt //-------------------------------------------------------------- // Display Timing //-------------------------------------------------------------- #define RK043FN48H_HSYNC ((uint16_t)41) /* Horizontal synchronization */ #define RK043FN48H_HBP ((uint16_t)13) /* Horizontal back porch */ #define RK043FN48H_HFP ((uint16_t)32) /* Horizontal front porch */ #define RK043FN48H_VSYNC ((uint16_t)10) /* Vertical synchronization */ #define RK043FN48H_VBP ((uint16_t)2) /* Vertical back porch */ #define RK043FN48H_VFP ((uint16_t)2) /* Vertical front porch */ #define RK043FN48H_FREQUENCY_DIVIDER 5 /* LCD Frequency divider */ //-------------------------------------------------------------- // Display-Pin //-------------------------------------------------------------- #define LCD_DISP_PIN GPIO_PIN_12 #define LCD_DISP_GPIO_PORT GPIOI #define LCD_DISP_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() #define LCD_DISP_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE() //-------------------------------------------------------------- // Backlight-Pin //-------------------------------------------------------------- #define LCD_BL_CTRL_PIN GPIO_PIN_3 #define LCD_BL_CTRL_GPIO_PORT GPIOK #define LCD_BL_CTRL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOK_CLK_ENABLE() #define LCD_BL_CTRL_GPIO_CLK_DISABLE() __HAL_RCC_GPIOK_CLK_DISABLE() //-------------------------------------------------------------- // Standard Farbwerte // 16bit Farbwert (R5G6B5) // Red (5bit) -> Bit15-Bit11 // Green (6bit) -> Bit10-Bit5 // Blue (5bit) -> Bit4-Bit0 //-------------------------------------------------------------- #define RGB_COL_BLACK 0x0000 #define RGB_COL_BLUE 0x001F #define RGB_COL_GREEN 0x07E0 #define RGB_COL_RED 0xF800 #define RGB_COL_WHITE 0xFFFF #define RGB_COL_CYAN 0x07FF #define RGB_COL_MAGENTA 0xF81F #define RGB_COL_YELLOW 0xFFE0 #define RGB_COL_GREY 0xF7DE //-------------------------------------------------------------- // Display Mode //-------------------------------------------------------------- typedef enum { PORTRAIT =0, LANDSCAPE }LCD_MODE_t; LCD_MODE_t LCD_DISPLAY_MODE; //-------------------------------------------------------------- // Globale Variabeln //-------------------------------------------------------------- uint32_t LCD_CurrentFrameBuffer; // aktuelle Adresse zum zeichnen uint32_t LCD_CurrentLayer; // 0=Hintergrund, 1=Vodergrund uint32_t LCD_CurrentOrientation; // 0=0Grad, 1=180Grad //-------------------------------------------------------------- // Defines vom Display (im Landscape-Mode) //-------------------------------------------------------------- #define LCD_MAXX ((uint16_t)480) // Pixel in X-Richtung #define LCD_MAXY ((uint16_t)272) // Pixel in Y-Richtung #define LCD_PIXEL LCD_MAXX*LCD_MAXY #define LCD_INIT_PAUSE 16600 // ca 1ms //-------------------------------------------------------------- // Defines für das Display-RAM //-------------------------------------------------------------- #define LCD_FRAME_BUFFER SDRAM_START_ADR // Start vom SDRAM #define LCD_FRAME_OFFSET ((uint32_t)(LCD_PIXEL*2)) // größe von einem Puffer (in Byte) //-------------------------------------------------------------- // sonst //-------------------------------------------------------------- #define RK043FN48H_WIDTH LCD_MAXX #define RK043FN48H_HEIGHT LCD_MAXY |
Funktionen :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ErrorStatus UB_LCD_Init(void); void UB_LCD_LayerInit_Fullscreen(void); void UB_LCD_SetLayer_1(void); void UB_LCD_SetLayer_2(void); void UB_LCD_FillLayer(uint16_t color); void UB_LCD_SetTransparency(uint8_t wert); void UB_LCD_SetCursor2Draw(uint16_t xpos, uint16_t ypos); void UB_LCD_DrawPixel(uint16_t color); void UB_LCD_SetMode(LCD_MODE_t mode); void UB_LCD_Rotate_0(void); void UB_LCD_Rotate_180(void); void UB_LCD_Copy_Layer1_to_Layer2(void); void UB_LCD_Copy_Layer2_to_Layer1(void); void UB_LCD_Refresh(void); |
Beispiel :
Siehe: 01-F746-Demo LED, Button, LCD, Text und Grafik
Hier die Library zum Download :
04 = LCD : f746_lcd480272_v100