Hallo, ich hab mir vor einigen Monaten ein 3.5" TFT Display (Hy35A) mit SSD1963 Controller und Touch-Controller ersteigert. Dies sollte ein kleineres TFT-Display (HY32D) ersetzten. Die Hardware-Anpassung habe ich mit einer Adapterplatine gelöst, die zwischen dem HY-MINI STM32V Controller Board, dass einen STM32F103VC besitzt, gebaut ist. Mir ist aufgefallen, dass das Timing des FSMC bis auf 2Mhz gedrosselt werden muss, damit das Display halbwegs stabil läuft. Die Demo von Segger läuft, jedoch schmiert das Display zwischenzeitlich ab und die Hintergrundbeleuchtung geht aus (wird vom ssd1963 Controller gesteuert). Mir geht es jetzt nicht wirklich darum, die Segger µcGui Demo zum laufen zu bringen da ich statt der µC-GUI lieber freie Sachen nutzen möchte. Nun, ich frage mich, ob das Abstürzen der Demo evtl. am Display-Controller liegen kann, denn die Demo läuft mit dem kleineren Display (SSD1289) einwandfrei und ohne den FSMC zu drosseln. Ich habe mit dem Timing schon gespielt - das Display wird langsamer, aber nicht stabiler. Ist der SSD1963 also besonders empfindlich oder gibt bei diesem Display etwas besonderes zu beachten? Gibt es eine freie GUI-Library die den SSD1963 unterstützt? Als OS möchte ich gern CoOS nutzen. Für Tipps bin ich sehr dankbar. Juppeck
Ein Display mit dem SSD1289 habe ich zwar hier auf dem Tisch, aber noch nicht im Einsatz. Was ich aber schon mehrmals gelesen habe und deshalb besonders darauf achten werde: eine stabile und grosszügig bemessene Stromversorgung scheint wichtig zu sein.
Das mit der Stromversorgung könnte ein Thema sein. Die Energieversorgung wird vom HY-MINI STm32V CPU Board gemacht - was aber nicht unbedingt beutet, dass sie auch ausreichend ist. Dem Hinweis werde ich mal mit Hilfe des OSZI nachgehen und messen, ob die Spannung zusammenbricht, wenn viel Aktivität auf dem Display passiert. Ich hatte auch schon darüber nachgedacht, mal das 7" TFT mit SSD1963 in China zu ordern - dort ist es bezahlbar. Damit kann man in Verbindung mit einem Cortex-M4 schon eine Menge im Amateurfunk anstellen bzw. anzeigen. besten Dank für den Hinweis Juppeck
Hallo, ich habe diese Woche mein Display mit einem SSD1963 Controller in Betrieb genommen(STM32F4-Discovery). http://www.exp-tech.de/Displays/4-3--TFT-LCD-Module-ITDB02-4-3.html War schon ein Stück Arbeit! Die Spannungsversorgung für Displaybeleuchtung und Controller wird nur über 2 Pins geführt! Habe dann die Pins mit "NC" als zusätzliche Verbindung für die Stromversorgung genommen! Grund: Spannungsschwankungen an verschiedenen Spannungsquellen ergaben erhebliche Timing-Probleme. Bestens funktioniert es mit einer stabilen 5 Volt Versorgung! Die Spannungsquellen auf dem Discovery sind für diese Art von Displays nicht besonders geeignet. Aufpassen sollte man auch bei der Beschaltung des Displays, im allgemeinen befindet sich hier ein Brücke zur Spannungsanpassung 3,3 oder 5 Volt. Diese Brücke ist eine SUB/MINI Ausführung! Verdammt schwierig zu löten. Habe zugleich die SD-Card mit SDIO in Betrieb genommen. Das war mir der Sample-Software: STM32F4Discovery mit CooCox: GPIO,SDIO,Timer,SoftTimer,USART,printf Beitrag "STM32F4Discovery mit CooCox :: GPIO,SDIO,Timer,SoftTimer,USART,printf" kein Problem. Die LIB für das Display: UTFT Gruß G.G.
Juppeck Das gleiche Problem hatte ich auch. Schau Dir mal diesen Thread genauer an: Beitrag "Open407I-C (Board für STM32) mit OV9655 (Kameramodul) auf 5"-Touchdisplay"
Das Display schaltete immer auf Dunkel (oder sonst was) - jedenfalls ging die Hintergrundbeleuchtung aus. Einen Moduldefekt des Moduls schloss ich aus, denn wenn ich bestimmte Funktionen nicht nutzte, funktionierte es tadellos. Letztendlich war es kein Problem mit der Energieversorgung sondern eine falsche Definition der Farbe "Weiß", die immer dann zum Einsatz kam, wenn die Schriftfarbe geändert wurde. Die Definition für Weiß war "0x00FFFFFF" und hat zum Ausschalten der Hintergrundbeleuchtung geführt. Wenn dies innerhalb eines mem_dev Bereichs auf Schriftausgaben angewendet wurde, wurde die Hintergrundbeleuchtung ausgeschaltet. Leider kann ich keine weiteren Untersuchungen zur wirklichen Ursache anstellen, da ich nicht über den Quellkode der emWIN / ucGui Bibliothek verfüge. Ein Ticket Hersteller Segger spare ich mir denn die Library ist von ST geladen und kostete mich nichts. Ich will auch nicht ausschließen dass es an der GNU Tool-Chain liegt. Ich konnte bei meinen Recherchen nichts finden, dass auf dieses Problem hindeutet. Fakt ist jedoch, dass dieses Problem Hardware-übergreifend ist, da ich derzeit 2 verschiedene MPU-Board (STM-Discovery-F4 und miniSTM32 mit einem STM32F103VC) mit unterschiedlichen Energieverteilungen einsetzte. Ich denke dass es ein Problem des TFT-Treibers sein wird. Sowohl in der UCGUI3.90xx als auch in der verfügbaren emWIN5.20d von ST ladbar, offenbaren beide das gleiche Problem. Ich habe mal einen Testprogramm eingefügt, das die Situation verdeutlichen hilft. Es muss dazu nur ein Programmrumpf vorhanden sein, der das GUI_Init() enthält, bevor man die void DemoBandingMemdev(void) startet. Das TFT hat eine Auslösung von 320x240 Pixel, hat 16 Bit Farben (565) und ist mit FSMC angebunden. Die Hintergrundbeleuchtung wird vom SSD1963 gesteuert. Das Problem tritt beim SSD1289 nicht auf - die Hintergrundbeleuchtung wird dort jedoch mit PWM der MPU bedient. #include <stm32f4xx.h> #include <RTL.h> #include "GUI.h" #include "adc1.h" #define USE_BANDING_MEMDEV (1) /* Set to 0 for drawing without banding memory device */ #define SIZE_OF_ARRAY(Array) (sizeof(Array) / sizeof ( Array[0] ) ) extern volatile uint16_t ADCBuffer[]; // DMA Buffers - one Halfword used by every ADC-Channel. static const GUI_POINT aPoints[] = { {-50, 0}, {-10, 10}, { 0, 50}, { 10, 10}, { 50, 0}, { 10,-10}, { 0,-50}, {-10,-10} }; typedef struct { int XPos_Poly; int YPos_Poly; int XPos_Text; int YPos_Text; GUI_POINT aPointsDest[8]; } tDrawItContext; // ######################################################################## ################################### static void _DrawIt(void * pData) { tDrawItContext *pDrawItContext = (tDrawItContext *) pData; GUI_Clear(); // ######### draw background ###### GUI_SetColor ( GUI_GREEN ); GUI_FillRect(pDrawItContext->XPos_Text, pDrawItContext->YPos_Text - 25, pDrawItContext->XPos_Text + 100, pDrawItContext->YPos_Text - 5 ); // ######### draw foreground GUI_SetColor(GUI_RED); GUI_FillRect ( 220 - pDrawItContext->XPos_Text, pDrawItContext->YPos_Text + 5, 220 - pDrawItContext->XPos_Text + 100, pDrawItContext->YPos_Text + 25 ); // ###### draw polygon ####### GUI_SetColor ( GUI_BLUE ); GUI_FillPolygon ( pDrawItContext->aPointsDest, SIZE_OF_ARRAY ( aPoints ), 160, 120); // GUI_SetColor ( GUI_WHITE ); // Display stürzt ab bei Weiß ?? GUI_SetColor(GUI_RED); GUI_DispStringHCenterAt ( "MEMDEV_Banding - Sample", 160, 30 ); GUI_DispStringHCenterAt ( "MEMDEV_Banding - Sample", 160, 5 ); GUI_DispStringHCenterAt ( "Banding memory device\nwithout flickering", 160, 40 ); } /******************************************************************* * * DemoBandingMemdev - main routine of this demo */ void DemoBandingMemdev(void) { int i; int swap = 0; float angle = 0.0; GUI_MEMDEV_Handle hMem; tDrawItContext DrawItContext; GUI_RECT Rect = { 0, 0, 319,170}; DrawItContext.XPos_Poly = 160; DrawItContext.YPos_Poly = 120; DrawItContext.YPos_Text = 116; // hMem = GUI_MEMDEV_CreateFixed ( 0, 0, 319, 170, GUI_MEMDEV_HASTRANS, GUI_MEMDEV_APILIST_16, GUICC_565); // GUI_MEMDEV_Select(hMem); while (1) { swap = ~swap; for (i = 0; i < 220; i++) { angle = ( ADCBuffer[0] * ( 6.28 / 4096 ) ); // 360° in 4096 steps DrawItContext.XPos_Text = ( swap ) ? i : 220 - i; GUI_RotatePolygon ( DrawItContext.aPointsDest, aPoints, SIZE_OF_ARRAY ( aPoints ) , angle ); // ####### Rotate the polygon GUI_MEMDEV_Draw ( &Rect, &_DrawIt, &DrawItContext, 1, GUI_MEMDEV_NOTRANS ); // ###### Use banding memory device for drawing } //os_dly_wait(1); } }
Hallo zusammen ! Ich bin ein absoluter Anfänger was dieses Thema betrifft. Aber wir haben ein TFT Display des Typs SSD1963 und da ist ein SD Karten Slot drauf. Auf dem TFT ist ein Teil zum Bedienen vorbereitet und auf dem oberen Teil ist das Logo des Herstellers drauf, jetzt habe Ich die SD Karte entnommen und wollte dort unser Logo einfügen, aber leider hat es nicht geklappt da es nur Wirre Linien und Punkte anzeigt. Kann mir jemand von euch helfen ? Bitte !
Hallo alle zusammen, Ein Freak hat mal wieder ganze Arbeit geleistet! Vielen Dank er trägt seinen Namen zurecht. Mein Problem ist soweit gelöst ! Vielen Dank
Als Ergänzung habe ich derweilen auch ein 3.5" (320x240) und auch ein 5" Display (800x480 Pixel) mit SSD1963 an ein STM32F4Disco angeheftet. Das Timing der Register für die interne PLL muss natürlich gegenüber einem 320x240 Pixel Display angepasst werden. Die Bedingung, dass die Farbtabelle auf 5-6-5 RGB Bits konvertiert werden muss, bleibt unverändert. Ich benutze seit einigen Wochen die von ST bereitgestellte emWIN V5.24.4 für die SSD1963iger und die scheint sehr zuverlässig zu sein. Derzeit überlege ich zu einer anderen IDE zu wechseln, da die µVision mit den auferlegten 32KByte-Begrenzung der Trial langsam zu einem sehr engen Korsett wird. Schaun wir mal - vy 73 de Juppeck
Guten Abend, ich muss diesen Beitrag wieder nach oben holen :) Ist vielleicht ein Beispielprojekt vorhanden, welches den SSD1963 benutzt? Ich würde gerne den selbigen benutzen und hoffe mir die tagelangen Experimente etwas zu verkürzen. Danke! Beste Grüße, Thomas.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.