Forum: Digitale Signalverarbeitung / DSP / Machine Learning Hyperpixel 4.0 I2C-Touch Treiber hängt sich während Betrieb auf (Raspberry Pi)


von tomtailor (Gast)


Lesenswert?

Hallo!
seit ein paar Monaten verwende ich einen Hyperpixel 4.0 Touchscreen mit 
meinem Raspberry 3B+ ohne Probleme. Seit ein paar Wochen verwende ich 
meinen Touchscreen mit dem Raspberry Pi 4 Compute Modul und habe beides 
auf meine selbst entworfene Platine montiert. Leider habe ich einige 
Schwierigkeiten mit der Touch-Funktion meines Hyperpixel 4.0. Ich habe 
keine Ahnung, wie ich diese Probleme lösen kann, da die Umstände, die 
den Fehler verursachen, für mich keinen Sinn ergeben.

Welches System verwende ich?

Hyperpixel 4.0 in Kombination mit einem Raspberry ComputeModule 4 mit 2 
GB RAM und 8 GB onBoard eMMC. Beides ist auf meiner benutzerdefinierten 
Platine montiert, die mit 24V versorgt wird, heruntergestuft durch einen 
"APP63300WU-7" Abwärtswandler, der 3A @ 5.1V Dauerleistung liefert. Die 
gemessene Spannung über 2 Tage liegt bei maximal 5,2V und minimal 5,05V. 
Die Software ist das neueste Raspbian.

Welcher Fehler wird verursacht?

Ich habe eine GUI auf meinem Raspberry Pi laufen lassen. Ich habe eine 
Seite, auf der ich drei Schieberegler für die Helligkeit meiner 
Raumbeleuchtung, die Farbtemperatur und einen Schieberegler zur 
Regulierung der Geschwindigkeit einiger Lüfter habe. Im Dunkelmodus 
funktioniert alles gut, aber wenn ich in den Lichtmodus wechsle und den 
Bildschirm für ca. 1,5 Sekunden berühre, hängt sich die Touch-Funktion 
auf. Meine GUI bewegt sich nicht mehr und ich habe ein Standbild. Ich 
weiß, dass es nur an der Touchfunktion liegt, denn wenn ich eine 
Tastatur und eine Maus anschließe, kann ich z.B. Chromium oder andere 
Sachen ohne Probleme öffnen. Mit dem "i2cdetect"-Befehl kann ich den 
Goodix GT911 Treiber auf Adresse 0x14 erkennen. Auch wenn der Touch sich 
aufgehängt hat, kann ich den Goodix GT911 erkennen. Ich weiß, dass die 
Adresse wahrscheinlich 0x5D sein sollte, aber ich dachte, es ist nicht 
notwendig, sich um dieses Problem zu kümmern, solange es funktioniert. 
Nach einem Neustart funktioniert der Touchscreen wieder einwandfrei, bis 
ich den Lichtmodus meiner GUI benutze. Interessant zu erwähnen ist, dass 
ich tausendmal für etwa 0,25 Sekunden klicken kann und keine Probleme 
auftreten. Berühre ich den Bildschirm jedoch permanent für ca. 1,5 
Sekunden, bekomme ich sofort die oben beschriebenen Probleme. Generell 
erscheint mir dieses Problem sehr seltsam und es verhält sich nicht wie 
irgendein physikalisches Gesetz, das ich kenne...

Auf den ersten Blick scheint der Fehler ein Softwareproblem zu sein ? 
Hört euch das an!

Wenn ich das offizielle "Compute Module 4 IO-Board" verwende, um mein 
Compute Module und den Touchscreen zu montieren, habe ich das Problem 
nicht... Mein aktuelles PCB ist die zweite Version. Auf der 1. Version 
funktionierte es auch ohne Probleme. Der einzige Unterschied zwischen 
der 1. und 2. Version ist die Verdrahtung, die ich bei der 2. Version 
versucht habe zu verbessern und die Viewer-Teile, die ich bei der 1. 
Version nur eingebaut habe, um einige Funktionen wie Ethernet oder den 
zweiten I2C-Bus zu testen, die ich bei der 2. Die Verdrahtung hat sich 
zwischen den beiden Versionen nicht geändert, ich habe nur versucht, den 
Abstand zwischen den GPIO-Leitungen zu vergrößern, um die 
Signalintegrität zu verbessern.

Es scheint also ein Hardwareproblem zu sein? Aber warum funktioniert die 
GUI im Darkmode einwandfrei? Dafür habe ich keine Erklärung.

Was habe ich getan, um den Fehler einzugrenzen?

Ich habe ein neues Image auf mein Compute Module geflasht und auch ein 
anderes Compute Module, ein Custom PCB und einen Touchscreen verwendet, 
aber ohne Erfolg. Soweit ich erfahren habe, tritt das Problem nur auf 
meiner GUI auf und nicht auf anderen Websites oder Bildern usw. 
Interessant war die Interrupt-Leitung, die typischerweise nur auf 0Volt 
gezogen wird, wenn der Touchscreen berührt wird. Nach dem Aufhängen des 
Touchscreens habe ich 0,084V auf dieser Leitung gemessen, und solange 
ich den Bildschirm berührte, stieg diese Spannung auf etwa 0,2V an, was 
mir ebenfalls ein seltsames Verhalten zu sein scheint. Ich habe auch die 
"dmseg"-Datei überprüft und einige Einträge für fehlgeschlagene 
i2c-Tests des GoodixGT911 erhalten. Ich habe auch den Github-Fix für die 
vertauschte i2c-Adresse ausprobiert, aber ohne Erfolg. Ich habe dazu den 
Befehl "git clone GitHub - pimoroni/hyperpixel4: Driver for the Pimoroni 
HyperPixel 4.0" Touchscreen Display -b pi4-i2c-fix " verwendet.

Was soll ich als nächstes versuchen?

Ich habe keinen Schimmer, was ich als nächstes tun soll. Die einzige 
Lösung, die mir vorschwebt, ist, die "verbesserte" Verdrahtung meiner 
zweiten Platine rückgängig zu machen, um meiner ersten Platinenversion 
so nahe wie möglich zu kommen.

Fazit :
Ich brauche wirklich Hilfe und hoffe, dass mir jemand diesen Gefallen 
tun kann. Mein beschriebenes Fehlerverhalten habe ich noch in keinem 
Forum gefunden. Gibt es noch andere brauchbare Foren für Probleme mit 
dem Hyperpixel 4.0? Lassen Sie es mich bitte wissen.

Update: Ich habe versucht, die Fehler zu reproduzieren und die 
Fehlerquelle zu spezifizieren. Wie oben erwähnt, hängt sich der 
Touchdriver im Lightmode auf (fast alle Pixel auf rgb(255,255,255)). 
Wenn ich die Farbe im Lightmode auf etwa rgb(245,245,245) ändere, tritt 
der Fehler nicht auf. Mir ist auch aufgefallen, dass der Hyperpixel 4.0 
über zwei Flachbandkabel verfügt: Eines für die Anzeige des Bildes und 
ein anderes für die gesamte I2C-Kommunikation mit dem Touch-Treiber. Ich 
habe das Kabel für die Bilddarstellung eingesteckt und hatte keinerlei 
Probleme. Auch wenn er theoretisch im Lichtmodus war (wenn das Display 
an gewesen wäre). Der Touchscreen funktionierte einwandfrei und übertrug 
alles einwandfrei:

Fazit zu meinem Update: Es scheint so, als ob die rgb(666) 
Datenleitungen für die Darstellung des Bildes auf dem Bildschirm 
Probleme auf dem I2C Bus verursachen. Ich habe auch den Bus und die 
Stromversorgung mit einem Oszilloskop überprüft, aber ich habe in keinem 
Fall ein ungewöhnliches Verhalten feststellen können. Die 
Spannungswelligkeit lag bei etwa 200mV Peak to Peak und die 
I2C-Datalines stiegen und fielen sehr stark.

Ich brauche noch Hilfe von euch!

Danke, Tom

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.