Hallo, ich möchte gerne ein TFT-Display über SPI ansteuern. Das Display hat einen ILITEK ILI9325C-Controller. Von diesem möchte ich gerne die Kennung aus dem Register 0x00 auslesen um zu testen, ob mein SPI funktioniert. Bis jetzt liefert der Controller ausschließlich Nullen zurück. Er reagiert auch überhaupt nicht auf meine SPI-Kommandos mit z.B. verändertem Stromverbrauch oder durch Anzeige eines Punktes. Meine Beschaltung ist: IM3=0, IM2=1, IM1=0, IM0=0 Das sollte mir das SPI mit 24 Bit geben, mein ID-Bit ist 0. Ich spreche den ILI also mit den folgenden Startbytes an: 0111 00xx 0x70: Set an index register 0x71: Read a status 0x72: Write a register or GRAM data 0x73: Read a register or GRAM data Ich setze also das Index Register mit 70 00 00 auf 0x00. Das ist das Register, wo 0x9325C drinstehen soll. Nun lese ich dieses Register mit 71 00 00 00 aus. Drei Byte nach dem Startbyte, da laut Datenblatt ein Dummybyte kommen soll. Bei mir kommt gar nichts :( Was mache ich falsch? Christian
Christian schrieb: > Was mache ich falsch? Zunächst einmal, dass du weder relevante Code-Fragmente noch die Beschaltung deines Controller mit dem LCD zeigst. Rätselraten bzw Glaskugel lesen mag hier scheinbar niemand .....
Hallo LCDSchreiber, ich benutze keinen Code und keinen Controller, jedenfalls keinen Mikrocontroller. Ich generiere die SPI-Befehle über einen SPI Host Adapter, der am PC hängt (http://www.totalphase.com/products/aardvark-i2cspi/). An die Ausgänge dieses Adapters ist die SPI-Strecke vom ILI angeschlossen. Ich benutze am ILI die Leitungen nCS (das ist der Chipselect), nWR/SCL (das ist der Takt), SDI (das ist MOSI) und SDO (das ist MISO). Weiterhin wird nRESET zu Beginn auf LOW und auf HIGH gesetzt. Nun gebe ich die o.g. Daten ein, also 0x70 0x00 0x00, den Rest erledigt der Host Adapter: Zu Beginn wird nCS auf LOW gesetzt, anschliessend gehen die drei Byte über MOSI raus, danach geht nCS wieder auf HIGH. Der Takt kommt auch, die Phasenverhältnisse stimmen auch. IM0 bis IM3 habe ich oben beschrieben. Alle anderen Leitungen (DB0-DB17, ENABLE, HSYNC, VSYNC) des ILI habe ich auf GND gezogen, da ich die im Moment nicht brauche. Christian
In dem mir zur Verfügung stehenden Datenblatt lese ich "In SPI mode, 5 bytes dummy read is necessary and the valid data starts from 6th byte of read back data."
LCDschreiber schrieb: > "In SPI mode, 5 bytes dummy read is necessary and the valid > data starts from 6th byte of read back data." Hier mal ein Link, damit wir vom gleichen sprechen: http://www.haoyuelectronics.com/Attachment/HY28B/ILI9325C%20datasheet.pdf Du meinst sicherlich Figure 7, S. 34. Habe ich auch gesehen und mit 71 00 00 00 00 00 00 00 00 00 00 00 00 ausprobiert. Da kam auch nichts. Das ist wohl nur dann, wenn man aus dem GRAM liest (Siehe Seite 76, Read Data from GRAM). Wenn man ein normales Register ausliest sollte ein Byte wohl ausreichen (S. 34, Figure 7, unterstes Bild) Christian
Christian schrieb: > Nun lese ich dieses Register mit > 71 00 00 00 > aus. 71 ist der Code für das Lesen des Status Register. Das ID Register ist aber ein reguläres Register mit dem Index 0. Sagt das Datenblatt. Folglich müsste man dieses Register mit dem Opcode 73 lesen. Oder verstehe ich das falsch?
> Folglich müsste man dieses Register mit dem Opcode 73 lesen. > Oder verstehe ich das falsch? Hurra, das hat funktioniert, siehe Bild im Anhang. Ich glaube, ich habe bei den Setup-Sample-Verhältnissen am SPI auch noch einen Dreher gehabt. Egal, danke für die Diskussion, ich bin so froh das das Teil geht. Christian
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.