Hallo Zusammen, ich habe folgenden Display Kontroller: RAIO RA8872 Ansteuern möchte ich diesen mit einem AVR ATMega328P, den ich auf einem Arduino Uno habe. Mit Ansteuern meine ich nur mal ein Hello World ausgeben auf dem Display um herauszufinden ob das Display überhaupt meinen Erwartungen entspricht. Meine Erwartungen sind eigentlich nur, dass ich das Display einfach mit wenig Code ansteuern kann. Zu der ganzen Sache habe ich folgende Datenblätter: Modul mit Display Kontroller und Display: https://www.mouser.ch/datasheet/2/1015/INT028ATFT-v11-1650666.pdf Display: https://www.displaytech-us.com/sites/default/files/display-data-sheet/DT028ATFT-v21.pdf Kann ich den Kontroller überhaupt mit dem ATMega328P ansteuern? Hat jemand von euch das schon mal gemacht und kann mir die Richtung zeigen in die ich gehen muss? Oder hat jemand ein Beispiel an das ich mich lehnen kann?
Gast
#6026929
Sicher geht das. Ist ein ILI9341. Musst nur genügend Zeit mitbringen.
Gast
#6026964
Das wird wohl gehen. Bei deinem "kleinen" Mikrocontroller passt es ganz gut, dass der Display Controller eingebaute Zeichensätze hat.
Gast
#6026982
Moot S. schrieb: > Meine Erwartungen sind eigentlich nur, dass ich das Display einfach mit > wenig Code ansteuern kann. "mit wenig Code" ist relativ. Was du erwartest und was du bekommst wirst du nicht so leicht in Einklang bringen können. Aber wenn du diesen Thread liest Beitrag "ILI9341 langsam Verbesserungsvorschläge?" wird dir vielleicht geholfen. Der Titel ist nicht ganz passend zu dem was du suchst, trotzdem soltest du durch sorgfältiges lesen fündig werden.
Gast
#6027127
Der Mega328 ist dafür ungünstig, weil das Board gemäß dem Mouser-Link ein paralleles CPU-Interface hat. Für so etwas nimmst Du besser einen Mega 128/1280/1281/2560/2561. Diese Prozessoren haben ein External Bus Interface (EBI), d.h. der interne Adress/Datenbus ist nach außen geführt. Den musst Du aktivieren (siehe Datenblatt) Pins DDB0...DDB7 kommen an Port A vom AVR RS kommt an Port C0 vom AVR (Adressleitung A8) RW und WR kommen an die Ports G0 und G1 vom AVR CS kannst Du beispielsweise an Port C7 hängen. Auf das Datenregister kannst Du dann z.B. unter Adresse 0x4000 zugreifen, das Adressregister ist 256 Byte höher (0x4100). Diese Methode ist der schnellstmögliche Weg, das Display anzusteuern und Daten ins GRAM zu transportieren. Es gibt keinen performanteren Weg, weil die Logik des EBI vieles macht, was Du sonst in Software machen müsstest. fchk
Gast
#6027148
> Ist ein ILI9341
???
Vielen Dank für deine Antwort @Arduinoquäler. Mit nicht so viel Code meine ich eigentlich Das Display Ansteuern ohne irgendwelche Libraries sondern nur das nötigste. Wie kommst du drauf, dass das ein ILI9341 ist? Ich habe diese Information nicht gefunden, und wo schliesst du die SPI an? Gruss Mootseeker
Danke für deine Antwort @fchk! Ich verstehe, dass ich das ganze mit dem grösseren Kontroller machen muss, dass macht auch ziemlich sinn. Den Bus Aktivieren blike ich auch noch so 3/4 durch, mit Hilfe des Datenblattes verstehe ich das sogar noch. Aber wie schreibe ich nun meine Daten an das Display und wie müssen die Aussehen? Das verstehe ich noch nicht ganz. Kannst du mir da ein Beispiel machen? Gruss Mootseeker
Gast
#6027542
Moot S. schrieb: > Wie kommst du drauf, dass das ein ILI9341 ist? Steht in deinem 2. link auf Seite 4 und im 1. link in der Zeichnung. Also wie ich das sehe, ist der "Display" link das Eine und der RA8872 ein Controller, der den ILI9341 steuert. Deshalb wird auch die Selbst Initialisierung erwähnt. Du musst also das Format finden, dass der RA8872 benötigt, bzw. diesen programmieren. Das Ganze ist schon leistungsfähiger als dein AVR und macht alles allein. https://www.youtube.com/watch?v=z2bTInaDucE
Gast
#6027548
Hier noch ein "richtiges" Datenblatt: http://datasheet.elcodis.com/pdf2/109/54/1095442/ra8872.pdf
pegel schrieb: > Also wie ich das sehe, ist der "Display" link das Eine und der RA8872 > ein Controller, der den ILI9341 steuert. Deshalb wird auch die Selbst > Initialisierung erwähnt. Aha oke, das ist zwar interessant aber bringt mich nicht ganz weiter. > Du musst also das Format finden, dass der RA8872 benötigt, bzw. diesen > programmieren. Das hat @fchk probiert zu erklären, ich verstehe es aber noch nicht 100%
Gast
#6027565
pegel schrieb: > Du musst also das Format finden, dass der RA8872 benötigt, bzw. diesen > programmieren. Im "richtigen Datenblatt" sind die Register beschrieben. Damit kannst Du die Grafikfunktionen bzw. den Zeichengenerator benutzen oder im Transparent Modus direkt in den Graphik RAM schreiben.
Gast
#6027589
Wenn ich das Teil hier hätte und einen µC programmieren wollte um dem etwas zu senden, würde ich zuerst das Diagramm zum CGRAM write durch Bit wackeln nachvollziehen und ein paar Bytes auf den Display darstellen. Damit sollte das Prinzip erst einmal klar sein und das schreiben in die Register auch für komplexe Funktionen verständlich sein. Bitte die Spannungen bzw. Pegel beachten!
Gast
#6027592
Seite 48 im DB ganz oben.
Gast
#6027595
Vor dem ersten senden, wie beschrieben, eine Sekunde warten. Dann 02h .....
Danke @pegel, ich werde es mal versuchen, ich muss zuerst noch einen Arduino Mega auftreiben. Dann werde ich mal ausprobieren was dabei rauskommt :) Gruss Mootseeker
Moot S. schrieb: > Aber wie schreibe ich nun meine Daten an das Display und wie müssen die > Aussehen? Das verstehe ich noch nicht ganz. Kannst du mir da ein > Beispiel machen? Hier mal etwas vereinfacht: Der Controller hat zig interne Register, alle durchnummeriert. Nach außen sind aber nur drei, Adressregister (nur schreiben), Status (nur Lesen) auf Adresse 0x4000, und das Datenregister auf 0x4100.
1 | |
2 | |
Schreiben von Wert 198 in Register 27:
1 | |
2 | |
Zuerst Registernummer schreiben, dann Daten. Lesen geht genauso. Um Bilddaten zu schreiben, gibts Du x und y der oberen linken Ecke sowie Breite und Höhe des Bereiches an, den Du schreiben willst. Dann aktivierst Du den Transfer durch Schreiben eines Wertes in ein Register und schreibst deine Bilddaten nacheinander weg ins Datenregister. Die Details sind komplizierter, aber das ist das Grundprinzip. fchk
Gast
#6027609
Du brauchst einmal 8 Bit und noch 4 einzelne Pins. Also 12 Leitungen. Die sind bestimmt auch bei kleinen µC verfügbar, oder?
Gast
#6027623
Biin ich der einzige, der die Vollversion von Google installiert hat? https://educ8s.tv/arduino-2-8-ili9341-tutorial/ https://create.arduino.cc/projecthub/calogerus/arduino-uno-2-4-tft-lcd-display-shield-touch-panel-ili9341-576b1b
Gast
#6027627
DRM schrieb: > Vollversion von Google Reicht nicht. Du brauchst die Extended Version. ;) Die muß auch was zum RA8872 wissen. (Hast Du alles gelesen?)
pegel schrieb: > Du brauchst einmal 8 Bit und noch 4 einzelne Pins. > > Also 12 Leitungen. > Die sind bestimmt auch bei kleinen µC verfügbar, oder? Ja, aber der Datenport ist nicht als zusammenhängender 8 Bit Port verfügbar, sondern das muss man sich zusammenschieben. Und da die Logikhardware des EBI fehlt, muss alles per Software gemacht werden. Das verlangsamt die Übertragung eines Bytes schätzungsweise um Faktor 10. Ist also nicht sinnvoll. Außerdem sind ein paar k RAM extra auch ganz nützlich. Die kann man in Form eines 62256 (32KB) und eines HC573 Latches für die unteren 8 Adressbits auch noch ans EBI anschließen, wenn man schon eines hat. fchk
Gast
#6027649
Mir würde das jetzt keine Ruhe lassen. Ich würde, wenn auch langsam, erst einmal Bits schubsen und mich über Erfolg freuen. ;) Jeder wie er mag.
Also ich habs vorhin mit dem kleinen Arduino probiert, konnte mein Ziel etwas sinvolles anzuzeien aber noch nicht richtig erreichen. Es ist sicher schon mal ein Schritt in die richtige Richtung. Ich werde mir morgen mal einen Arduino Mega gönnen und es mit dem Versuchen :)
Für alle die es interessiert ich habes es heute hingekriegt, schau noch das ich den Code mit euch teilen kann wenn jemand Interesse hat :)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.