mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RAIO RA8872 mit ATMega328P Ansteuern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Moot S. (mootseeker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sicher geht das. Ist ein ILI9341.

Musst nur genügend Zeit mitbringen.

Autor: Stefan F. (Firma: Hobbyelektroniker) (stefanus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird wohl gehen. Bei deinem "kleinen" Mikrocontroller passt es ganz 
gut, dass der Display Controller eingebaute Zeichensätze hat.

Autor: Arduinoquäler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: fchk (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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

Autor: lowpegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ist ein ILI9341

???

Autor: Moot S. (mootseeker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

: Bearbeitet durch User
Autor: Moot S. (mootseeker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Youtube-Video "RAiO RA8872 demo movie"

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch ein "richtiges" Datenblatt:

http://datasheet.elcodis.com/pdf2/109/54/1095442/ra8872.pdf

Autor: Moot S. (mootseeker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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%

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: pegel (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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!

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seite 48 im DB ganz oben.

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor dem ersten senden, wie beschrieben, eine Sekunde warten.
Dann 02h .....

Autor: Moot S. (mootseeker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
volatile unsigned char* addrstat=0x4000;
volatile unsigned char* datarw=0x4100;

Schreiben von Wert 198 in Register 27:
*addrstat=27;
*datarw=198;

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

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst einmal 8 Bit und noch 4 einzelne Pins.

Also 12 Leitungen.
Die sind bestimmt auch bei kleinen µC verfügbar, oder?

Autor: DRM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DRM schrieb:
> Vollversion von Google

Reicht nicht.

Du brauchst die Extended Version. ;)
Die muß auch was zum RA8872 wissen. (Hast Du alles gelesen?)

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Moot S. (mootseeker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :)

Autor: Moot S. (mootseeker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.