Forum: Mikrocontroller und Digitale Elektronik XPT2046 / ADS8743 / TSC2046


von Andreas R. (df8oe)


Lesenswert?

Vielleicht hat ja schon mal jemand mit allen dreien dieser 
Touchscreen-Controller gearbeitet und hat einen heißen Tipp parat...

Ich habe ein LCD mit Anschluss an einen Raspi - auf dem funktionieren 
alle Controller einwandfrei. Dann habe ich ein eigenes Projekt mit 
STM32F7 und bislang lief dort ein LCD mit XPT2046 Touchscreencontroller 
- ebenfalls einwandfrei. Nun möchte ich gerne einige LCD Platinen selbst 
bestücken, und die XPT2046 gibt es in Deutschland  Europa  bei Digikey 
nicht. Aber die ADS7843E oder den TSC2046. Zu meinem großen Erstaunen 
funktionieren beide in der gleichen Schaltung, in der der XPT2046 
einwandfrei funktioniert, nicht!!?? Der TP_IRQ Ausgang zeigt bei allen 
drei präzise an, dass der TC betätigt wird - aber nur beim XPT2046 
bekomme ich per SPI Read auch Koordinaten. Bei den beiden anderen 
Controllern bekomme ich immer die Koordinaten 0x00 / 0x00. Die sollen 
doch kompatibel sein - Befehls- und Hardware - seitig?? Ich habe schon 
den SPI Clock auf 1MHz runtergesetzt - keine Änderung. Ich habe mit der 
Clock Polarity und der Clock Phase gespielt - nada. Ich bekomme es hin, 
dass keiner der drei Controller mehr Daten liefert - aber nicht, dass 
außer dem XPT... einer geht. Paradoxerweise muss der SPI Init im STM32 
auf "Motorola" gesetzt sein - nicht auf "TI". Im TI-Mode (das sollte 
eigentlich der richtige sein) antwortet mal wieder keiner der drei 
Controller, aber im Motorola-Mode geht wenigstens der XPT. Vielleicht 
ist ja schon mal jemand über dieses seltsame Phänomen gestolpert - mir 
gehen langsam die Ideen aus...

Gruß
DF8OE

von W.S. (Gast)


Lesenswert?

Andreas R. schrieb:
> Bei den beiden anderen
> Controllern bekomme ich immer die Koordinaten 0x00 / 0x00. Die sollen
> doch kompatibel sein - Befehls- und Hardware - seitig??

Das glaube ich so lange nicht, bis ich es selber gesehen habe. Aber du 
solltest in der jeweiligen Doku mal schauen, ob da in deinem 
Koordinatenblock irgend ein Byte NICHT als R/O gekennzeichnet ist. 
Dieses Byte solltest du vor dem Lesen der Koordinaten löschen. Guck mal 
bei 0x814E. Dort ist es z.B. bei Goodix.

W.S.

von Andreas R. (df8oe)


Lesenswert?

Danke für deinen Beitrag! Das Problem ist in der Zwischenzeit gelöst. Am 
SPI Bus hängt noch ein weiteres Device. Dessen SDO ist, so dachten wir, 
im Tristate Modus. Nach Befehlsfolge (dasandere Device wird in dem Gerät 
gar nicht per SPI angesteuert) sollte es auch so sein. Aber Papier ist 
geduldig.... Auf jeden Fall war/ist der SDO-Pin NICHT im Tristate 
Modus sondern auf "L".

Und jetzt kommt der Unterschied des XPT... zu den beiden anderen: 
Offenbar ist die Ausgangstreiberstufe des XPT dramatisch niederohmiger 
als die der beiden anderen. Zumindest sind die Antworten praktisch 
unverfälscht auf dem Scope zu sehen und werden auch einwandfrei von der 
MCU verarbeitet. Die Signale der beiden anderen dagegen sind 
verschliffen und dadurch gibt es keine Kommunikation. Aber leider sind 
sie nicht so verkrüppelt dass das sofort aufgefallen wäre.

Hat ganz schön viel Zeit verschlungen, die Fehlersuche ;)

Jetzt kennst Du aber auf jeden Fall auch einen Unterschied zwischen den 
drei Controllern...

LG
DF8OE

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.