Forum: Mikrocontroller und Digitale Elektronik ILI9325C über SPI auslesen


von Christian (Gast)


Angehängte Dateien:

Lesenswert?

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

von LCDschreiber (Gast)


Lesenswert?

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 .....

von Christian W. (christian_w79)


Lesenswert?

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

von LCDschreiber (Gast)


Lesenswert?

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."

von Christian W. (christian_w79)


Lesenswert?

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

von LCDschreiber (Gast)


Lesenswert?

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?

von Christian W. (christian_w79)


Angehängte Dateien:

Lesenswert?

> 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
Noch kein Account? Hier anmelden.