Forum: Mikrocontroller und Digitale Elektronik LTC1865 sendet keine Daten über SPI


von Heinrich (Gast)


Lesenswert?

Hallo liebe Gemeinde,

ich versuche, einen LTC1865 ADC auszulesen. Das ganze läuft über eine 
SPI-Schnittstelle und wird vom einem Raspberry Pi als Master betrieben.

Anschluss:
RPi      LTC1865
MOSI --- SDI
MISO --- SDO
SCK  --- SCK
GPIO-Pin --- CONV

Weil der LTC1865 mit 5 V und der RPi mit 3,3 V arbeitet, ist für die 
Pegelanpassung noch ein TXB0108 dazwischengeschaltet.

Wenn ich mir mit dem Oszi die Signalverläufe anschaue, sieht es genau so 
aus, wie es laut Datenblatt (http://www.linear.com/docs/4062) auf Seite 
14 sein soll. Einziger Makel: Die SDO Leitung bleibt konstant auf GND, 
es werden also keine Daten gesendet.

Was ich als Fehlerquelle ausschließen kann:
- RPi: Wenn ich hier MISO und MOSI kurzschließe, kommt bei MISO das an, 
was ich bei MOSI sende. Funktioniert also.
- TXB0108 schaltet nicht durch: Es gibt auch keine Pegeländerung, wenn 
ich den ADC-SDO nicht mit dem Pegelwandler verbinde.
- Defekter ADC: Teil habe ich bereits ausgetauscht, dass zwei Teile 
kaputt sind, will ich nicht hoffen, zumal ich mit ziemlich sicher bin, 
dass beide ADCs pfleglich behandelt wurden. Die Eingangsspannung liegt 
bei ca. 2,5 V.

Hat jemand eine Idee, wo der Fehler liegen könnte?

Gruß
Heinrich

von Arc N. (arc)


Lesenswert?

MISO/MOSI also scheinbar ok. Was ist mit SCK und CONV?

von Heinrich (Gast)


Lesenswert?

Hmm, ich verstehe die Welt nicht mehr. Es funktioniert nun einwandfrei, 
ohne dass ich etwas geändert habe.

Seit zwei Tage doktore ich an dem Problem herum und gerade als ich 
meiner Frau demonstrieren will, was da nicht funktioniert, funktioniert 
es super.

Thema kann wohl geschlossen werden.

von Sven B. (scummos)


Lesenswert?

Kürzeres Kabel verbaut? SPI ist ziemlich empfindlich gegenüber Störungen 
insb. auf CS, ein kleiner Kondensator (100pF) gegen GND an den 
Leitungsenden hilft.

von Heinrich (Gast)


Lesenswert?

Hallo Sven,

Kondensatoren habe ich keine verbaut. CS nutze ich gar nicht, weil der 
ADC gar keine CS Leitung hat. Der fängt an zu konvertieren wenn der CONV 
Pin High wird und fängt an zu senden, wenn CONV auf Low springt. CS wäre 
ja die ganze Zeit high.

Ich muss den Pfad doch nochmal eröffnen. Denn (ob mit oder ohne Frau im 
Raum ;-) ) hat der ADC heute wieder aufgehört zu senden, nachdem er 
gestern und bis eben gerade einwandfrei funktioniert hat. Geändert habe 
ich an der Schaltung nix, außer, dass sich sie mal ein- und 
ausgeschaltet habe (was aber vorher keinen Einfluss auf die Funktion 
hatte). Irgendwann war Schluss.

Ich werde mal die Kondensatoren an die Leitungsenden löten, vielleicht 
hilft das ja.

Gruß
Heinrich

von Heinrich (Gast)


Lesenswert?

... Kondensatoren haben nix gebracht.

Das Kabel zwischen dem Pegelwandler und dem Raspberry Pi ist 15 cm lang 
(Flachbandkabel). Zwischen dem Pegelwandler und dem ADC liegen ca. 1 cm 
auf nem PCB. Störungen (Einkopplungen) auf dem Flachbandkaben will ich 
nicht ausschließen, aber wenn ich mir die Signale anschaue, sehen die 
aus wie im Bilderbuch - absolut steile Flanken und kein Rauschen auf den 
Pegeln.

Gruß
Heinrich

von fuelre (Gast)


Lesenswert?

Hast du auch die wandlerzeiten eingehalten die der ADC braucht?

von Sven B. (scummos)


Lesenswert?

Heinrich schrieb:
> ... Kondensatoren haben nix gebracht.
Ok, schade, hätte ja sein können.

von Heinrich (Gast)


Lesenswert?

Hallo fuelre,
ja, habe ich. 2.8 µs..3.2 µs (typ 3.0 µs) braucht er und ich gebe ihm 
derzeit min. 10 µs.
Ich habe auch schon mit der Übertragungsgeschwindigkeit herumgespielt, 
das ergibt auch keine Änderung. Er bleibt einfach tot.

Habe das Problem mittlerweile identifiziert: Der TXV0108 benötigt 2 mA 
am Eingang, um zu schalten - soviel liefert aber der LTC1865 nicht. 
Wahrscheinlich war vorhin mal irgendwie genug Strom da, jetzt aber nicht 
mehr. Und schon funktioniert es nicht mehr. Ich setze jetzt über nen 
Spannungsteiler von 5 auf 3.3 V runter und es sollte theoretisch 
funktionieren. Signal kommt beim RPi an, er zeigt trotzdem noch Null an. 
Ist nun aber offensichtlich ein anderes Problem.

Gruß
Heinrich

von Wolfgang (Gast)


Lesenswert?

Heinrich schrieb:
> Der TXV0108 benötigt 2 mA am Eingang, um zu schalten

Und das steht wo im Datenblatt.
Du hast nicht zufällig Port A und B vom TXV0108 vertauscht?

von fuelre (Gast)


Lesenswert?

Miss mal ob auch wirklich alle Anschlüsse funktionieren - könnte auch 
einfach bloß ein wackler sein - mit Frauchen hats ja geklappt
Und ob alle Massen verbunden sind

von Heinrich (Gast)


Lesenswert?

Hallo fuelre und Wolfgang,

vielen Dank für Euren Input. Zu euren Fragen:

@ Wolfgang: Das mit den 2 mA steht im Datenblatt 
(http://www.ti.com/lit/ds/symlink/txb0108.pdf) auf Seite 10 ganz unten:
"Input Driver Requirements
Typical IIN vs VIN characteristics of the TXB0108 are shown in Figure 2. 
For proper operation, the device driving the data I/Os of the TXB0108 
must have drive strength of at least ±2 mA."

Und vertauscht habe ich auch nix. Die 5 V-Seite beim ADC und die 3.3 
V-Seite beim RPi. Passt also.

@fuelre

Die Signale gehen auch definitiv durch. Ich habe es mehrfach direkt an 
den Pins (und nicht irgendwo zwischendurch auf ner Leiterbahn) gecheckt. 
Alle Lötstellen sind ok, mehrfach gecheckt und vorsichtshalber 
nachgelötet wo ich mir unsicher war.

Ich habe gerade einen Test laufen und die Datenübertragung scheint 
wieder zu klappen. Ich habe eine Vermutung, wo der Fehler lag und sobald 
ich es verifiziert habe, poste ich die Lösung.

Gruß
Heinrich

von Heinrich (Gast)


Lesenswert?

Moin zusammen:
Fehler gefunden:

Nachdem ich den TXB0108 aus der Leitung geschmissen hab (siehe oben, 
benötigt min. 2 mA um zu schalten und das liefert der AD1865 nicht), 
habe ich die 5 V über einen Spannungsteiler auf 3,3 V runter setzen 
wollen.

5/3,3 = 1,51/1, also kommt man mit nem Spannungsteiler aus 10k und 20k 
super hin, dachte ich mir (1,5/1). Allerdings scheint der Rasperry Pi 
extrem empfindlich zu reagieren, was Überspannungen angeht. Es hat in 
der Folge wohl etwas zu viel Spannung (vielleicht beim Einschalten?) auf 
dem Pin gelegen, sodass dieser das zeitliche gesegnet hat. Der Rest des 
RPi funktionierte einwandfrei.

Lösung: Neuen RPi angeschlossen, fertig. Läuft super. Auf dem alten 
läuft nun XBMC, da brauche ich die Pins eh nicht ;-)

Vielen Dank nochmal an alle Schreiber, ein bisschen Input von außen 
wirkt manchmal Wunder.

Gruß
Heinrich

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.