{"id":1393,"date":"2017-12-16T18:03:14","date_gmt":"2017-12-16T17:03:14","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=1393"},"modified":"2018-01-07T18:39:32","modified_gmt":"2018-01-07T17:39:32","slug":"04-lcd-library-stm32f746","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=1393","title":{"rendered":"04-LCD-Library (STM32F746)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=1391\" title=\"03-SDRAM-Library (STM32F746)\"><span class=\"meta-nav\">\u2190<\/span> 03-SDRAM-Library (STM32F746)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=1395\" title=\"05-FONT-Library (STM32F746)\">05-FONT-Library (STM32F746) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p><strong>Beschreibung :<\/strong><\/p>\n<p>Mit dieser Library k\u00f6nnen Grafik-LCD Funktionen (24bit RGB) auf dem STM32F746 Discovery-Board benutzt werden. Der Zugriff erfolgt \u00fcber den TFT-Controller. Die Aufl\u00f6sung ist 480 x 272 Pixel. Der Farbmode hat 16bit. Das Display ist von <a href=\"http:\/\/www.rocktech.com.hk\/\" target=\"_blank\" rel=\"noopener\">Rocktech<\/a> und hat die Module Bezeichnung: <strong>RK043FN48H-CT672B<\/strong>.\u00a0Es ist ein 4.3&#8243; TFT mit LED Backlight und kapazitives Touch Panel. Hier das Datenblatt vom Hersteller:<\/p>\n<ul>\n<li><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2018\/01\/RK043FN48H-CT672B-V1.0.pdf\" target=\"_blank\" rel=\"noopener\">RK043FN48H-CT672B-V1.0<\/a><\/li>\n<li><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2018\/01\/OTA5180A-0.9.pdf\" target=\"_blank\" rel=\"noopener\">OTA5180A-0.9<\/a><\/li>\n<\/ul>\n<p>Das Display benutzt folgende CPU-Pins :<\/p>\n<pre>  PI15 = R0    PJ7  = G0    PE4  = B0\r\n  PJ0  = R1    PJ8  = G1    PJ13 = B1\r\n  PJ1  = R2    PJ9  = G2    PJ14 = B2\r\n  PJ2  = R3    PJ10 = G3    PJ15 = B3\r\n  PJ3  = R4    PJ11 = G4    PG12 = B4\r\n  PJ4  = R5    PK0  = G5    PK4  = B5\r\n  PJ5  = R6    PK1  = G6    PK5  = B6\r\n  PJ6  = R7    PK2  = G7    PK6  = B7\r\n  PI14 = CLK   PK7  = DE\r\n \r\n  PI10 = HSYNC       PI9  = VSYNC\r\n  PK3  = Backlight   PI12 = Display\r\n<\/pre>\n<p>Das externe SDRAM wird als Grafik-RAM benutzt HSYNC+VSYNC im H-File aktivieren falls notwendig.<\/p>\n<p><strong>Module :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">stm32_ub_lcd_480x272.h, stm32_ub_lcd_480x272.c\r\n<\/pre>\n<p><strong>Includes :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">#include \"stm32_ub_system.h\"\r\n<\/pre>\n<p><strong>Defines :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ aktivieren von HSync\/VSync Impulsen (an PI9, PI10)\r\n\/\/ 0 = HSYNC, VSYNC wird nicht benutzt\r\n\/\/ 1 = HSYNC, VSYNC wird benutzt\r\n\/\/--------------------------------------------------------------\r\n#define   USE_SYNC_GPIO    1  \/\/ HSYNC, VSYNC GPIOs werden benutzt\r\n\/\/#define   USE_SYNC_GPIO    0  \/\/ HSYNC, VSYNC GPIOs werden nicht benutzt\r\n\r\n\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Display Timing\r\n\/\/--------------------------------------------------------------\r\n#define  RK043FN48H_HSYNC            ((uint16_t)41)   \/* Horizontal synchronization *\/\r\n#define  RK043FN48H_HBP              ((uint16_t)13)   \/* Horizontal back porch      *\/\r\n#define  RK043FN48H_HFP              ((uint16_t)32)   \/* Horizontal front porch     *\/\r\n#define  RK043FN48H_VSYNC            ((uint16_t)10)   \/* Vertical synchronization   *\/\r\n#define  RK043FN48H_VBP              ((uint16_t)2)    \/* Vertical back porch        *\/\r\n#define  RK043FN48H_VFP              ((uint16_t)2)    \/* Vertical front porch       *\/\r\n#define  RK043FN48H_FREQUENCY_DIVIDER    5            \/* LCD Frequency divider      *\/\r\n\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Display-Pin\r\n\/\/--------------------------------------------------------------\r\n#define LCD_DISP_PIN                    GPIO_PIN_12\r\n#define LCD_DISP_GPIO_PORT              GPIOI\r\n#define LCD_DISP_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOI_CLK_ENABLE()\r\n#define LCD_DISP_GPIO_CLK_DISABLE()     __HAL_RCC_GPIOI_CLK_DISABLE()\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Backlight-Pin\r\n\/\/--------------------------------------------------------------\r\n#define LCD_BL_CTRL_PIN                  GPIO_PIN_3\r\n#define LCD_BL_CTRL_GPIO_PORT            GPIOK\r\n#define LCD_BL_CTRL_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOK_CLK_ENABLE()\r\n#define LCD_BL_CTRL_GPIO_CLK_DISABLE()   __HAL_RCC_GPIOK_CLK_DISABLE()\r\n\r\n\r\n\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Standard Farbwerte\r\n\/\/ 16bit Farbwert (R5G6B5)\r\n\/\/ Red   (5bit) -&gt; Bit15-Bit11\r\n\/\/ Green (6bit) -&gt; Bit10-Bit5\r\n\/\/ Blue  (5bit) -&gt; Bit4-Bit0\r\n\/\/--------------------------------------------------------------\r\n#define  RGB_COL_BLACK          0x0000\r\n#define  RGB_COL_BLUE           0x001F\r\n#define  RGB_COL_GREEN          0x07E0\r\n#define  RGB_COL_RED            0xF800\r\n#define  RGB_COL_WHITE          0xFFFF\r\n\r\n#define  RGB_COL_CYAN           0x07FF\r\n#define  RGB_COL_MAGENTA        0xF81F\r\n#define  RGB_COL_YELLOW         0xFFE0\r\n\r\n#define  RGB_COL_GREY           0xF7DE\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Display Mode\r\n\/\/--------------------------------------------------------------\r\ntypedef enum {\r\n  PORTRAIT =0,\r\n  LANDSCAPE\r\n}LCD_MODE_t;\r\nLCD_MODE_t  LCD_DISPLAY_MODE;\r\n\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Globale Variabeln\r\n\/\/--------------------------------------------------------------\r\nuint32_t LCD_CurrentFrameBuffer;   \/\/ aktuelle Adresse zum zeichnen\r\nuint32_t LCD_CurrentLayer;         \/\/ 0=Hintergrund, 1=Vodergrund\r\nuint32_t LCD_CurrentOrientation;   \/\/ 0=0Grad, 1=180Grad\r\n\r\n\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Defines vom Display (im Landscape-Mode)\r\n\/\/--------------------------------------------------------------\r\n#define  LCD_MAXX           ((uint16_t)480)      \/\/ Pixel in X-Richtung\r\n#define  LCD_MAXY           ((uint16_t)272)      \/\/ Pixel in Y-Richtung\r\n#define  LCD_PIXEL  LCD_MAXX*LCD_MAXY\r\n\r\n#define  LCD_INIT_PAUSE   16600 \/\/ ca 1ms\r\n\r\n\r\n\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Defines f\u00fcr das Display-RAM\r\n\/\/--------------------------------------------------------------\r\n#define  LCD_FRAME_BUFFER     SDRAM_START_ADR         \/\/ Start vom SDRAM\r\n#define  LCD_FRAME_OFFSET   ((uint32_t)(LCD_PIXEL*2)) \/\/ gr\u00f6\u00dfe von einem Puffer (in Byte)\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ sonst\r\n\/\/--------------------------------------------------------------\r\n#define  RK043FN48H_WIDTH    LCD_MAXX\r\n#define  RK043FN48H_HEIGHT   LCD_MAXY\r\n<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">ErrorStatus UB_LCD_Init(void);\r\nvoid UB_LCD_LayerInit_Fullscreen(void);\r\nvoid UB_LCD_SetLayer_1(void);\r\nvoid UB_LCD_SetLayer_2(void);\r\nvoid UB_LCD_FillLayer(uint16_t color);\r\nvoid UB_LCD_SetTransparency(uint8_t wert);\r\nvoid UB_LCD_SetCursor2Draw(uint16_t xpos, uint16_t ypos);\r\nvoid UB_LCD_DrawPixel(uint16_t color);\r\nvoid UB_LCD_SetMode(LCD_MODE_t mode);\r\nvoid UB_LCD_Rotate_0(void);\r\nvoid UB_LCD_Rotate_180(void);\r\nvoid UB_LCD_Copy_Layer1_to_Layer2(void);\r\nvoid UB_LCD_Copy_Layer2_to_Layer1(void);\r\nvoid UB_LCD_Refresh(void);\r\n\r\n<\/pre>\n<p><strong>Beispiel :<\/strong><br \/>\nSiehe: <a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=1449\">01-F746-Demo LED, Button, LCD, Text und Grafik<\/a><\/p>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p>04 = LCD :\u00a0<a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2015\/07\/f746_lcd480272_v100.zip\">f746_lcd480272_v100<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beschreibung : Mit dieser Library k\u00f6nnen Grafik-LCD Funktionen (24bit RGB) auf dem STM32F746 Discovery-Board benutzt werden. Der Zugriff erfolgt \u00fcber den TFT-Controller. Die Aufl\u00f6sung ist 480 x 272 Pixel. Der Farbmode hat 16bit. Das Display ist von Rocktech und hat &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=1393\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":182,"menu_order":4,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[130],"tags":[139,9,105],"class_list":["post-1393","page","type-page","status-publish","hentry","category-stm32f746","tag-lcd","tag-library","tag-stm32f746"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/1393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1393"}],"version-history":[{"count":8,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/1393\/revisions"}],"predecessor-version":[{"id":1919,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/1393\/revisions\/1919"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/182"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}