{"id":295,"date":"2017-11-23T20:15:58","date_gmt":"2017-11-23T19:15:58","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=295"},"modified":"2017-12-30T19:29:10","modified_gmt":"2017-12-30T18:29:10","slug":"07-lcd_ili9341-library-stm32f429","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=295","title":{"rendered":"07-LCD_ILI9341-Library (STM32F429)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=293\" title=\"06-SPI_LoLevel-Library (STM32F429)\"><span class=\"meta-nav\">\u2190<\/span> 06-SPI_LoLevel-Library (STM32F429)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=297\" title=\"08-LCD_Font-Library (STM32F429)\">08-LCD_Font-Library (STM32F429) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>diese Library dient zum ansteuern des Grafik LC-Displays auf dem STM32F429-Discovery mit dem ILI9341-Chip. (240 x 320 Pixel und 16bit Farbe)<\/p>\n<p>Das Display h\u00e4ngt am TFT-Controller der CPU und wird im RGB-Mode (mit HSync, VSync und 24bit Farben) betrieben. Der Chip selber wird per SPI-5 angesteuert.<br \/>\n(aus dem Grund wird die SPI-5 Library zus\u00e4tzlich ben\u00f6tigt)<\/p>\n<p>Als Grafik-RAM wird ein Teil vom externen SD-RAM benutzt<br \/>\n(aus dem Grund wird die SDRAM-Library zus\u00e4tzlich ben\u00f6tigt)<\/p>\n<p>die Library bedient die Grundfunktionen wie Initialisierung, Screen-Ausrichtung, setzen vom Layer und der Transparenz, setzen vom Cursor und l\u00f6schen vom Layer.<\/p>\n<p>F\u00fcr die Textausgabe gibt es eine\u00a0Font-Library<br \/>\nF\u00fcr Grafik-Funktionen gibt es eine Grafik-Library<\/p>\n<p><em>Hinweise zu den Layern :<br \/>\n<\/em>Das Grafik-RAM ist in zwei Layer unterteil. Layer_1 und Layer_2.<br \/>\nLayer_1 = Hintergrund, Layer_2 = Vordergrund.<br \/>\nBeide Layer haben einen Transparenz Wert [0&#8230;255]<br \/>\nNach dem Init ist die Transparenz von beiden auf 255 aus dem Grund ist nur Layer_2 zu sehen (er verdeckt Layer_1). Man kann in beide Layer Daten schreiben und entweder Layer_1 oder Layer_2 oder beide gemischt darstellen.<br \/>\nDazu muss zuvor per Funtkion \u201cUB_LCD_SetLayer\u201d der aktive Layer ausgew\u00e4hlt werden in den geschrieben oder dessen Transparenz ge\u00e4ndert werden soll.<\/p>\n<p><em>Hinweise zum Refresh :<\/em><br \/>\nUm bewegte Objekte darstellen zu k\u00f6nnen, wird ein Layer angezeigt und der andere wird aktiviert um Daten aufzunehmen. Wenn das beschreiben vom zweiten Layer fertig ist, reicht es, einmal die Funktion \u201cUB_LCD_Refresh\u201d aufzurufen. Diese tauscht den Layer der angezeigt wird mit dem der die Daten aufnimmt.<\/p>\n<p><em><strong>BUG Hinweis von \u201cFlo\u201d :<\/strong><\/em><br \/>\nNach Power-On per USB werden falsche Farben angezeigt.<br \/>\nWorkaround : In der Funktion \u201cP_LCD9341_InitChip\u201d<br \/>\neinen LCD-Software Reset einf\u00fcgen<br \/>\nper \u201cP_LCD9341_CMD(0\u00d701)\u201d und danach eine 7ms Pause.<\/p>\n<p><strong>Benutzte Pins :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">PA3  = B5         PD3  = G7\r\nPA4  = VSYNC      PD6  = B2\r\nPA6  = G2         PD13 = WRX (CMD\/DATA)\r\nPA11 = R4         PF7  = SPI_CLK\r\nPA12 = R5         PF8  = SPI_MISO\r\nPB0  = R3         PF9  = SPI_MOSI\r\nPB1  = R6         PF10 = DE (Enable)\r\nPB8  = B6         PG6  = R7\r\nPB9  = B7         PG7  = CLK\r\nPB10 = G4         PG10 = G3\r\nPB11 = G5         PG11 = B3\r\nPC2  = SPI_CS     PG12 = B4\r\nPC6  = HSYNC\r\nPC7  = G6\r\nPC10 = R2<\/pre>\n<p><strong>Standard Farben :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">#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<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">ErrorStatus UB_LCD_Init(void);                             \/\/ zum init vom Display\r\nvoid UB_LCD_LayerInit_Fullscreen(void);                    \/\/ zum init der Layer\r\nvoid UB_LCD_SetLayer_1(void);                              \/\/ stellt auf Hintergrund Layer\r\nvoid UB_LCD_SetLayer_2(void);                              \/\/ stellt auf Vordergrund Layer\r\nvoid UB_LCD_FillLayer(uint16_t color);                     \/\/ f\u00fcllt den aktuellen Layer\r\nvoid UB_LCD_SetTransparency(uint8_t wert);                 \/\/ setzt die Transparenz\r\nvoid UB_LCD_SetCursor2Draw(uint16_t xpos, uint16_t ypos);  \/\/ setzt den Cursor\r\nvoid UB_LCD_DrawPixel(uint16_t color);                     \/\/ zeichnet ein Pixel\r\nvoid UB_LCD_SetMode(LCD_MODE_t mode);                      \/\/ Modus : Portrait,Landscape\r\nvoid UB_LCD_Rotate_0(void);                                \/\/ Rotieren um 0 Grad\r\nvoid UB_LCD_Rotate_180(void);                              \/\/ Rotieren um 180 Grad\r\nvoid UB_LCD_Copy_Layer1_to_Layer2(void);                   \/\/ kopiert Inhalt von Hintergrund zum Vordergrund\r\nvoid UB_LCD_Copy_Layer2_to_Layer1(void);                   \/\/ kopiert Inhalt vom Vordergrund zum Hintergrund\r\nvoid UB_LCD_Refresh(void);                                 \/\/ wechselt Layer und zeigt neuen Inhalt an<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 24.10.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F429\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der LCD-Library (ILI9341)\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/ In Configuration diese Define hinzuf\u00fcgen :\r\n\/\/ \"STM32F429_439xx\" , \"__ASSEMBLY__\" , \"USE_STDPERIPH_DRIVER\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_lcd_ili9341.h\"\r\n\r\nint main(void)\r\n{\r\n  uint32_t n;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ Init vom LCD\r\n  UB_LCD_Init();\r\n  \/\/ Init der Layer\r\n  UB_LCD_LayerInit_Fullscreen();\r\n  \/\/ auf Hintergrund schalten\r\n  UB_LCD_SetLayer_1();\r\n  \/\/ Hintergrund komplett mit einer Farbe f\u00fcllen\r\n  UB_LCD_FillLayer(RGB_COL_WHITE);\r\n  \/\/ auf Vordergrund schalten\r\n  UB_LCD_SetLayer_2();\r\n  \/\/ Vordergrund komplett mit einer Farbe f\u00fcllen\r\n  UB_LCD_FillLayer(RGB_COL_GREEN);\r\n\r\n  \/\/ Cursor setzen\r\n  UB_LCD_SetCursor2Draw(10,50);\r\n  \/\/ einen roten Strich zeichnen\r\n  for(n=0;n&lt;100;n++) {\r\n    UB_LCD_DrawPixel(RGB_COL_RED);\r\n  }\r\n\r\n  while(1)\r\n  {\r\n\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2013\/11\/lcd_ili9341_f429_v102.zip\">lcd_ili9341_f429_v102<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2013\/11\/Demo_F429_07.zip\">Demo_F429_07<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">25 Antworten auf <em>07-LCD_ILI9341-Library (STM32F429)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-1031\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1031\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a1e0a8e80c6d5d32dd9f864066bf8066?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Michael<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">12. November 2013 um 23:29<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<br \/>\ndanke erstmal f\u00fcr deine Arbeit! Ich beginne gerade damit, mich mit Mikrocontrollern zu besch\u00e4ftigen und deine Librarys und Infos haben den Start erleichtert und beschleunigt.<\/p>\n<p>Ich h\u00e4tte eine Frage zu dieser Library:<br \/>\nMan kann ja den Displayinhalt \u00fcber Memory Access Control (0\u00d736) drehen und spiegeln, indem man die Scanrichtung \u00fcber die Bits MV, MX, MX ver\u00e4ndert. Das verwendest du auch in UB_LCD_Rotate_0 und UB_LCD_Rotate_180.<br \/>\nVielleicht stehe ich gerade auf dem Schlauch, aber w\u00e4re es nicht sinnvoll, genau das f\u00fcr den Landscape-Modus zu benutzen (Command 0\u00d736, Data 0\u00d768 oder 0xA8), damit sich das Koordinatensystem nicht ver\u00e4ndert \u2013 also z.B. 0,0 weiterhin oben links ist, wenn man das Board dreht, anstatt unten links? Ich wei\u00df nicht, ob man dann nicht noch ein paar andere Dinge anpassen m\u00fcsste (Sync und\/oder LCD_COLUMN_ADDR bzw. LCD_PAGE_ADDR etc.), aber ich denke, dass es so m\u00f6glicherweise \u201cgedacht\u201d ist, damit man nur initialisieren muss und der Rest mehr oder weniger von selbst passiert.<br \/>\nFalls das kein v\u00f6lliger Unsinn ist (wie gesagt, ich bin Anf\u00e4nger \u2026), w\u00e4re es toll, wenn du dir das mal ansehen k\u00f6nntest.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1037\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1037\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">14. November 2013 um 09:48<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>ja\u2026dann probier das mal und sag bescheid wie es geht\u2026ich habs nicht geschafft. Das Display wird im RGB-Mode angesteuert (mit HSync,VSync) und in dem Mode scheint es IMMER zuerst die Horizontale (kleine) Bildseite zu zeichnen, egal was man in die Register schreibt.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1045\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-1045\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a1e0a8e80c6d5d32dd9f864066bf8066?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Michael<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">16. November 2013 um 15:56<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Schade, aber wenn es nicht geht, geht\u2019s eben nicht. Scheint wohl an der Art der Ansteuerung zu liegen. Man kann das Bild drehen, aber dann fehlt auf der langen Seite ein 80 Pixel breiter Streifen (eben 320 \u2013 240). Diesen bekomme ich breiter, aber nie schmaler als 80 Pixel oder gar ganz weg. Habe so etwas inzwischen auch im Mikrocontroller-Forum und auf my.st.com gelesen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-1222\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-1222\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/0ebabf4181f33dd15aa6f23d2fa22fb2?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Oliver<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. Dezember 2013 um 23:48<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<br \/>\ntolle webseite.<br \/>\nHabe eine Anwendung in der das externe RAM sinnvoll w\u00e4re aber das display zweitrangig ist, zumindest nicht die schnelle Ansteuerung n\u00f6tig ist bzw. das display besser separat vom board. Ist es m\u00f6glich\/sinnvoll die Display Pins anders zu nutzen bzw. welche Pins bleiben trotzdem nicht nutzbar und m\u00fcssen auf high oder low gesetzt werden. Kenn mich nicht so aus, aber k\u00f6nnte mir z.B. vorstellen wenn ich das display im Dauerreset halte, dass dann die uC pins nutzbar sind (brauche insgesamt 16 inputs + 16 outputs). Die meinsten Pins sind ja bei diesem Demo board schon vorbelegt\u2026<br \/>\nWenn jemand das auf die schnelle \u00fcberblickt w\u00fcrde ich mich \u00fcber einen Tipp freuen.<br \/>\nDanke.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1223\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-1223\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">28. Dezember 2013 um 10:47<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>wenn du das Display gar nicht brauchst, kannst du es auch komplett vom Eval-Board runterl\u00f6ten. Das hat \u201cVampire\u201d gemacht und dann einen VGA-Monitor angeschlossen. Hier ist die Pinbelegung zu finden : <a href=\"indexd275.html?page_id=2848\" rel=\"nofollow\">http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=2848<\/a><br \/>\nEs m\u00fcssen keine Pins der CPU auf irgendwelche festen Signale gelegt werden.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1229\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-1229\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/9f6723faf6e062fbaf0edc8a761c0a1b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Frank<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">30. Dezember 2013 um 20:46<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>K\u00f6nnte man eigentlich auch per DMA auf einem Layer bzw. zwischen den beiden Layern alles oder Bereiche kopieren? Also so \u00e4hnlich wie mit UB_Graphic2D_CopyImgDMA in der 22-Graphic-DMA2D-Library, aber mit einem der Layer als Quelle?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1233\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-1233\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">31. Dezember 2013 um 11:20<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>klar, dem DMA ist egal woher er die Daten holt. Die Source-Adresse muss dann halt eine aus dem externen SD-RAM sein. Ich hab hier ein Beispiel das einen kompletten Screen (320\u00d7240) vom SD-RAM in einen anderen Bereich kopiert. (aus dem Oszi-Projekt)<\/p>\n<pre lang=\"c\" line=\"1\">uint32_t LCD_MenuFrameBuffer=LCD_FRAME_BUFFER + (2*LCD_FRAME_OFFSET);\r\nuint32_t LCD_ADCFrameBuffer=LCD_FRAME_BUFFER + (3*LCD_FRAME_OFFSET);\r\n\r\nvoid UB_Graphic2D_Copy1DMA(void)\r\n{\r\n  DMA2D_InitTypeDef      DMA2D_InitStruct;\r\n  DMA2D_FG_InitTypeDef   DMA2D_FG_InitStruct;\r\n\r\n  uint32_t  dest_address = 0;\r\n  uint32_t  source_address1 = 0;\r\n\r\n  \/\/ Ziel Adresse im Display RAM\r\n  dest_address = LCD_CurrentFrameBuffer;\r\n\r\n  \/\/ Quell Adresse vom ADC\r\n  source_address1  = LCD_ADCFrameBuffer;\r\n\r\n  DMA2D_DeInit();\r\n  DMA2D_InitStruct.DMA2D_Mode = DMA2D_M2M;\r\n  DMA2D_InitStruct.DMA2D_CMode = DMA2D_RGB565;\r\n  DMA2D_InitStruct.DMA2D_OutputMemoryAdd = dest_address;\r\n  DMA2D_InitStruct.DMA2D_OutputGreen = 0;\r\n  DMA2D_InitStruct.DMA2D_OutputBlue = 0;\r\n  DMA2D_InitStruct.DMA2D_OutputRed = 0;\r\n  DMA2D_InitStruct.DMA2D_OutputAlpha = 0;\r\n  DMA2D_InitStruct.DMA2D_OutputOffset = 0;\r\n  DMA2D_InitStruct.DMA2D_NumberOfLine = LCD_MAXY;\r\n  DMA2D_InitStruct.DMA2D_PixelPerLine = LCD_MAXX;\r\n  DMA2D_Init(&amp;DMA2D_InitStruct);\r\n\r\n  DMA2D_FG_StructInit(&amp;DMA2D_FG_InitStruct);\r\n  DMA2D_FG_InitStruct.DMA2D_FGMA = source_address1;\r\n  DMA2D_FG_InitStruct.DMA2D_FGCM = CM_RGB565;\r\n  DMA2D_FG_InitStruct.DMA2D_FGPFC_ALPHA_MODE = NO_MODIF_ALPHA_VALUE;\r\n  DMA2D_FG_InitStruct.DMA2D_FGPFC_ALPHA_VALUE = 0;\r\n  DMA2D_FG_InitStruct.DMA2D_FGO=0;\r\n  DMA2D_FGConfig(&amp;DMA2D_FG_InitStruct);\r\n\r\n  DMA2D_StartTransfer();\r\n\r\n  while(DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET);\r\n}\r\n<\/pre>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1235\" class=\"comment odd alt depth-3\">\n<div id=\"comment-1235\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/9f6723faf6e062fbaf0edc8a761c0a1b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Frank<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">31. Dezember 2013 um 12:11<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Super, danke! Das ist sehr n\u00fctzlich. Ich hatte bef\u00fcrchtet, dass es dabei irgendwelche Einschr\u00e4nkungen gibt.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1390\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1390\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/9ce83dfdef303a8a072f750a3cdcc443?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Tamer SAFAK<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">14. Februar 2014 um 18:43<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi Uwe, is it possible to use other than spi5? Because I need to use 16 channels ADC.<\/p>\n<p>Thanks,<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1392\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1392\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">14. Februar 2014 um 20:22<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>The connection of the LCD on the STM32F429i-Disco-Board is fix. You cant change it without removing the complete display. Also you have not enough free ADC-Pins, only 4 are available (have a look on the pinout : <a href=\"http:\/\/www.bplaced.net\/404\" rel=\"nofollow\">http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/10\/Pinbelegung_f429_v100.html<\/a>)<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1396\" class=\"comment even depth-3\">\n<div id=\"comment-1396\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/9ce83dfdef303a8a072f750a3cdcc443?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Tamer SAFAK<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">15. Februar 2014 um 12:51<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>I\u2019ll design a new board with 4.3\u2033-7\u2033 tft lcd. So, how should I use the pins configuration for 16 channels adc? I am wating your advise.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1397\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-4\">\n<div id=\"comment-1397\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">15. Februar 2014 um 14:15<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>in a \u201cnew\u201d design you are free to choose any SPI-Channel you want. But you can also add a 16-to-1 analog Multiplexer, in this case you only need one free ADC-Channel.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1418\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-1418\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/160bac8b7378f8dcd3ab7bea114b4642?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Helmut<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">26. Februar 2014 um 15:14<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>a little bit Fehler oben in der Pin-Liste:<br \/>\nPA3 = B5<\/p>\n<p>Gru\u00df Helmut<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1419\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1419\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">26. Februar 2014 um 19:34<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>danke, ist auch im Source-File falsch !<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1844\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1844\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/5c98d9eb9878155d61ced27149322c1d?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Flo<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">6. Juni 2014 um 22:28<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Bei mir waren nach einem Power-on durch Stecken des USB-Kabels am STM32F429I-DISCO immer die Farben invertiert. Erst nach Reset durch Flashen oder den Reset-Button waren die Farben richtig.<\/p>\n<p>In P_LCD9341_InitChip habe ich ganz am Anfang ein P_LCD9341_CMD (0\u00d701) gefolgt von 7 ms Wartezeit eingebaut (5 ms reichen laut Datenblatt, aber man wei\u00df ja nie). Das macht einen Software-Reset des LCD-Controllers und dann stimmen auch beim Kaltstart die Farben.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1849\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1849\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">7. Juni 2014 um 10:03<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Danke, habe den Hinweis als \u201cBUG\u201d vermerkt.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1957\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-1957\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/65e55f17c932839d217da69168640144?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Lohmann<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">20. Juli 2014 um 22:38<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Wie kann ich das LCD in ein absolut leeres Projekt einbinden also nur<br \/>\ndie main.h mit noch nichts inizialisiert wie gehe ich da vor?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1961\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1961\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">21. Juli 2014 um 08:07<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Das Projekt von hier \u201cDemo_07\u2033 ist doch absolut leer. Weniger geht nicht. was du machen kannst, ist alles innerhalb der Main.c l\u00f6schen\u2026aber dann fehlt dir die Initialisierung vom LCD !!!<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-2182\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2182\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/fdc13536c4a3c5418b547054429ec31b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Chaoskind<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. September 2014 um 21:09<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>MoinMoin,<\/p>\n<p>ich hab mich auch mal an der Libary f\u00fcrs Display auf dem STM32F429 Disco Board befasst, und wie Flo auch festgestellt, dass das Display nach PowerOn \u201crumspinnt\u201d.<br \/>\nJedoch wirft das Workaround bei mir nen Fehler:<br \/>\n\u201d<br \/>\n[cc] C:\\Users\\Ichich\\Desktop\\ub_lib\\font\\ub_lib\\stm32_ub_lcd_ili9341.c: In function \u2018P_LCD9341_InitChip\u2019:<br \/>\n[cc] C:\\Users\\Ichich\\Desktop\\ub_lib\\font\\ub_lib\\stm32_ub_lcd_ili9341.c:526:3: error: stray \u2018\\327\u2032 in program<br \/>\n[cc] P_LCD9341_CMD(0\u00d701);<br \/>\n[cc] ^<br \/>\n[cc] C:\\Users\\Ichich\\Desktop\\ub_lib\\font\\ub_lib\\stm32_ub_lcd_ili9341.c:526:19: error: expected \u2018)\u2019 before numeric constant<br \/>\n[cc] P_LCD9341_CMD(0\u00d701);<br \/>\n[cc] ^<br \/>\n[cc] C:\\Users\\Ichich\\Desktop\\ub_lib\\font\\ub_lib\\stm32_ub_lcd_ili9341.c:525:12: warning: unused variable \u2018i\u2019 [-Wunused-variable]<br \/>\n[cc] uint32_t i;<br \/>\n[cc] ^<br \/>\n\u201d<\/p>\n<p>Scheinbar wird P_LCD9341_CMD(0\u00d701) nirgendwo definiert. K\u00f6nntest du mir sagen, wie und wo ich was definieren muss, damit das Softreset vom LCD klappt?<\/p>\n<p>Vielen Dank im vorraus und mit freundlichen Gr\u00fc\u00dfen<br \/>\nChaos<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2183\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-2183\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">28. September 2014 um 10:10<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>dein Fehler muss woanders liegen (die Zeile stimmt). Starte nochmal mit dem laufenden Projekt von hier und f\u00fcge folgendes in die \u201cP_LCD9341_InitChip\u201d per Copy&amp;Paste ein<\/p>\n<pre>void P_LCD9341_InitChip(void)\r\n{\r\n  P_LCD9341_CMD(0x01);          \/\/ reset\r\n  P_LCD9341_Delay(500000);   \/\/ pause\r\n  \/\/ ...\r\n}\r\n<\/pre>\n<pre><\/pre>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-2214\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-2214\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/fdc13536c4a3c5418b547054429ec31b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Chaoskind<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">30. September 2014 um 21:07<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Danke f\u00fcr die Antwort, ich hab meinen Fehler inzwischen gefunden. Ich hatte wohl in der falschen Reihenfolge includiert. Nachdem ich nun als erstes die stm32f4xx.h einbinde, klappt alles problemlos.<\/p>\n<p>Noch viel mehr Dank als f\u00fcr die Antwort, geb\u00fchrt dir f\u00fcr deine Libs, sie funktionieren, nachdem man eigene Fehler ausgemerzt hat, tadellos.<\/p>\n<p>Ein kleiner Tipp, der meiner Meinung nach die Farbwahl erleichtert:<\/p>\n<p><code><br \/>\nuint8_t Rot, Gruen, Blau;\/\/Rot 0-31, Gruen 0-63, Blau 0-31<br \/>\nuint16_t Farbe;<\/code><\/p>\n<p>Farbe = (Rot &lt;&lt; RGB_R) | (Gruen &lt;&lt; RGB_G) | (Blau &lt;&lt; RGB_B);<br \/>\nUB_LCD_DrawPixel(Farbe);<\/p>\n<p>MfG Chaos<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2215\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-2215\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/fdc13536c4a3c5418b547054429ec31b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Chaoskind<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">30. September 2014 um 21:10<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>P.S.<\/p>\n<p>Ich hab die entsprechenden defines vergessen, hier nochmal die richtige Version:<br \/>\n<code><br \/>\n#define RGB_R 11<br \/>\n#define RGB_G  5<br \/>\n#define RGB_B  0<\/code><\/p>\n<p>uint8_t Rot, Gruen, Blau; \/\/Rot 0-31, Gruen 0-63, Blau 0-31<br \/>\nuint16_t Farbe;<\/p>\n<p>Farbe = (Rot &lt;&lt; RGB_R) | (Gruen &lt;&lt; RGB_G) | (Blau &lt;&lt; RGB_B);<br \/>\nUB_LCD_DrawPixel(Farbe);<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2302\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-2302\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/fdc13536c4a3c5418b547054429ec31b?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Chaoskind<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">9. Oktober 2014 um 20:00<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Ist es eigentlich auch m\u00f6glich, den 18Bit-Farbmodus mit deiner Lib zu starten? Bzw kannst du mir auf die Schnelle sagen, was ich da umschreiben m\u00fcsste?<\/p>\n<p>Mit Dank und freundlichen Gr\u00fc\u00dfen im Voraus,<br \/>\nChaos<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2303\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-2303\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">9. Oktober 2014 um 20:30<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>da musst du im Datenblatt vom Display nachlesen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3213\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-3213\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/28790b686ea5db9bdabbf0b100eccaee?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Max<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">4. Mai 2015 um 14:34<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo<br \/>\nist es auch m\u00f6glich, das Display ohne den SDRAM zu nutzen? Kann man in deiner Lib den SDRAM deaktivieren?<\/p>\n<p>Danke<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>diese Library dient zum ansteuern des Grafik LC-Displays auf dem STM32F429-Discovery mit dem ILI9341-Chip. (240 x 320 Pixel und 16bit Farbe) Das Display h\u00e4ngt am TFT-Controller der CPU und wird im RGB-Mode (mit HSync, VSync und 24bit Farben) betrieben. Der &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=295\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":160,"menu_order":7,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[129],"tags":[216,139,9,102],"class_list":["post-295","page","type-page","status-publish","hentry","category-stm32f429","tag-ili9341","tag-lcd","tag-library","tag-stm32f429"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/295","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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=295"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/295\/revisions"}],"predecessor-version":[{"id":1667,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/295\/revisions\/1667"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/160"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}