Forum: Mikrocontroller und Digitale Elektronik Logger-Modul macht nicht was es soll


von wheeler (Gast)


Lesenswert?

Hallo zusammen,

bin auf Fehlerjagd. Hat wer Lust auf eine kleine Safari :)?

Mein Logger-Modul für Prototypen besteht aus einem Raspberry Pi Zero W, 
einer CP2108 USB-to-quad-UART Bridge und einem USB-Modem. Raspberry 
nimmt die Logs von den MCU-targets, speichert sie und schickt sie übers 
Internet zu mir.

Das Feature mit dem übers Internet schicken ist erst in der letzten 
Revision dazugekommen, und da der Raspi nur 1 usb (für Internetstick und 
CP2108) hat, hab ich mich wegen fehlendem Platz dafür entschieden, einen 
USB hub mit dem USB2422 raufzurouten.

Long story short: der Raspi erkennt den CP2108 nicht verlässlich. Nach 
vielem debuggen hatte ich folgende Erkenntnisse:

1) Der 2. Port des USB2422 wird immer ohne Probleme erkannt.

2) Die einize (aber dafür verlässlich und immer reproduzierbare) 
Möglichkeit, mit dem CP2108 nach dem Startup ohne weiter Maßnahmen zu 
kommunizieren ist, die Schaltung einzuschalten, kurz auszuschalten und 
dann wieder einzuschalten. Die Versorgungsspannung 5V des Pi und des 
CP2108 (aus der die 3V3 des USB2422 gemacht werden) kann aber sehr tief 
fallen (~20mV nach ~5s), und trotzdem funktionierts nach dem erneuten 
Einschalten.

3) Ein Hard-Reset (über Reset-Pin) des USB2422 behebt das Problem auch.

4) Ein Soft-Reset (über ioctl in Linux) des USB2422 behebt das Problem 
nicht.

5) Ein Hard-Reset (über Reset-Pin) des CP2108 behebt das Problem nicht. 
Der CP2108 verhält sich aber wie erwartet. Nach dem Startup zieht er das 
Potential von USBDP (USB Data Plus) auf +3V. Zieht man den Reset, geht 
auch das Potential wie erwartet auf GND. Nach dem auslassen des Resets 
geht das Potential wieder auf 3V.

6) Im Linux-Kernel (dmesg) finden sich keine Fehlermeldungen wenn der 
CP2108 nicht erkannt wird. Ich hab in diesem Fall noch nirgends ein Spur 
vom CP2108 im Linux (z.b. über lsusb) gefunden.

7) Ist der CP2108 erkannt und man zieht den Hard-Reset, finden sich sich 
die erwarteten Fehlermeldungen, dass das device nicht mehr da ist. Beim 
auslassen des Resets wird es wieder erkannt.

Schaltplan o.Ä. stelle ich gerne zur Verfügung.

Hinweise, die zum Jagderfolg führen, werden mit Bussl oder Bier von mir 
behlohnt :)

von Frank S. (Gast)


Lesenswert?

> Schaltplan o.Ä. stelle ich gerne zur Verfügung.

Ja bitte..

von wheeler (Gast)


Angehängte Dateien:

Lesenswert?

Anbei die Schaltpläne

von Debugger #42 (Gast)


Lesenswert?

wheeler schrieb:
> Hinweise, die zum Jagderfolg führen, werden mit Bussl oder Bier von mir
> behlohnt :)

Zerteile das Problem solange bis die Lösung trivial ist.

Der CP2108 ist ja nicht ganz alltäglich - häng die Upstream D+/D- mal an 
einen PC und vergleiche das verhalten.

PS:
Ich nehm das Bier.

von Chris (Gast)


Lesenswert?

Ich finde es sportlich di 5vpi zur Versorgung des USB Modems und vusb 
der uart bridge zu verwenden ohne weitere Zusatzschaltung.
Olimex hat USB-cap, solltest sowas mal austesten.

von Thomas Z. (usbman)


Lesenswert?

Normgerechte Downstreamports sollten doch üblicherweise 10k pulldowns 
haben. Das ist zumindest das was ich über Hubs in Erinnerung habe. Ich 
kenne dein Hub IC aber nicht.

von wheeler (Gast)


Lesenswert?

Danke für eure Antworten. Der Fehler war wo anders begraben: Habe etwas 
im Datenblatt übersehen. Dort steht, dass der USB2422 nach dem Power-Up 
resettiert werden MUSS, um richtig funktionieren. Nach der 
Implementierung eines resets gab es keine Probleme mehr.

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.