Forum: Mikrocontroller und Digitale Elektronik Pull up Widerstand an MISO


von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Hallo,

nachdem ich mit dem Oszilloskop die DOUT-Leitung eines AD-Wandlers mit 
und ohne Pin an der Platine gemessen habe, konnte ich feststellen, dass 
wohl ein Pull-up Widerstand benötigt wird.

"IC-Beinchen in der Luft": high = DVDD (3V3), low = GND
"IC-Beinchen mit der Platine verbunden": high = < 1V, low = GND

Jetzt ist die Frage nach der Dimensionierung des Widerstandes.
Und: Kann man den Widerstand an einer beliebigen Stelle z.B. bei einer 
Wannensteckerleiste zwischen DVDD und DOUT platzieren oder wo ist es am 
besten?

Außerdem noch die Frage warum das überhaupt notwendig ist, da es bei CLK 
keine Probleme gibt. CLK ist ja genauso active high wie DOUT.

Gruß
Alexander

von LuXXuS 9. (aichn)


Lesenswert?

Um welchen Baustein geht es denn?

Mir persönlich ist noch kein Baustein untergekommen, welcher an seinen 
SPI-Leitungen Pull-Rs benötigt - I²C schon. Aber gut, kann natürlich 
sein, man kennt ja nicht alles.

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Genau das gleiche habe ich auch gedacht.
Warum sollte man für SPI Pull-ups benötigen?
Aber scheinbar geht es nicht anders - oder der Fehler liegt woanders und 
ich kann ihn mir nicht erklären.

Es sind AD-Wandler vom Typ AD7793 angeschlossen. Außerdem ist an dem 
SPI-Bus noch ein Touchscreen-Controller vom Typ ADS7843.

Drückt man auf den Touchscreen sind die DOUT-Pegel korrekt.
Nach dem Ansteuern der AD-Wandler kommt es aber zum o.g. Problem
also IC mit Bus verbunden -> high < 1V und IC nicht verbunden direkt am 
IC 3V3 Pegel...

Ist wohl wieder etwas für Akte-X...

von LuXXuS 9. (aichn)


Lesenswert?

Nee, dann zieht dir was anderes auf der Leitung wahrscheinlich deinen 
Pegel runter.

Wenn du zwei Devices an einem Bus hast, dann musst du natürlich dafür 
sorgen, dass der eine den anderen nicht beeinflusst.

Stell dir doch mal vor, du liest das LCD aus, das letzte Bit war 'low' 
und dies wird im Datenstrom übermittelt (ich weiß jetzt nicht, wie der 
Datenstrom aussieht...ich denke ja mal, das LCD hängt wegen dem 
Touchscreen an D_OUT)...jedenfalls war das letzte Bit 'low' und das 
Touchscreen geht nicht auf HIGH-IMPEDANCE, dann zieht es das HIGH vom 
ADC runter.

Sind deine Chip Selects richtig angesteuert?

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Die Chip-Select-Leitungen funktionieren wie gewünscht. Also beim Senden 
einer Nachricht an ein device wird auch die entsprechende CS-Leitung auf 
low gesetzt.

Deine Erklärung kann ich nachvollziehen. Aber wie kann ich das Problem 
beheben? Irgendwie muss ich dem Touchscreen-Controller wohl mitteilen, 
dass er keinen low-Pegel am DOUT Pin legt sobald er eine Nachricht 
geschickt hat. Eigentlich bin ich aber davon ausgegangen, dass er das 
ohnehin nicht macht.

von LuXXuS 9. (aichn)


Lesenswert?

Das sollte eigentlich von selbst durch das Chip-Select passieren - der 
entsprechende Baustein sollte dann einen hochohmigen Eingang Aufweisen - 
seine Leitung also quasi "getrennt" sein vom Bus.

Nur mal als Test vielleicht: Kannst du zwischen D_OUT vom ADC und dem 
Bus ein Multimeter schalten und einen Stromfluss messen? Wenn ja, dann 
liegt der Pegel irgendwo auf 'low'.

von Tilo (Gast)


Lesenswert?

Ließ dir am besten die Datenblätter genau durch. SPI sollte 
normalerweise auf Tristate geschaltet sein, wenn CS bzw. SS nicht 
gezogen wird.

Ich hatte die Tage bei einem AVR ein ähnliches Problem. Die 
Programmierschnittstelle wird auch in der Schaltung als SPI verwendet. 
So bald Strom auf der Platine ist, liegen an der SPI Pegel von einem 
Schieberegister an. Bei mir war die Lösung, die Schieberegister mit 10k 
in Serie anzubinden. Dadurch wird ein "Kurzschluss" verhindert und 
Programmieren hat Vorrang.
Allerdings hängt bei mir im Betrieb kein Programmiergerät dran. Von dem 
her muss man solche Lösungen abschätzen.

von Alexander D. (lieberarm9alsarmab)


Angehängte Dateien:

Lesenswert?

Der Vollständigkeit halber: Im Datenblatt des TS-C steht
DOUT -This output is high impedance when CS is HIGH.

Die CS-Leitung macht auch was sie soll. Von daher also kein Problem.

Das angehängte Bild zeigt die Konfiguration. Vielleicht ist daraus noch 
etwas zu lesen...

von FG (Gast)


Lesenswert?

Funktioniert der ADC auf der Platine, wenn du den Touchscreen abgehängt 
ist?
Beim Überfleigen des Datenblatts habe ich gesehen, dass der Dout vom ADC 
noch eine Zusatzfunktion hat, vielleicht macht das Probleme?

von LuXXuS 9. (aichn)


Lesenswert?

Das Bild versteh ich garnicht :)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Das Bild versteh ich garnicht :)
Das ist die ultimative ONE-WIRE-Verbindung!  ;-)

von FG (Gast)


Lesenswert?

Verstehe ich das richtig, da sind 3 ADCs auf dem Zusatzboard? Und der 
Touchscreencontroller ist auf dem uC-Board?
Schon versucht ob ein einzelner ADC ohne andere Komponenten am Bus 
funktioniert?

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

In dem Bild habe ich nur den Verlauf der DOUT-Leitung dargestellt.

FG schrieb:
> Verstehe ich das richtig, da sind 3 ADCs auf dem Zusatzboard? Und der
> Touchscreencontroller ist auf dem uC-Board?

Ja.

> Schon versucht ob ein einzelner ADC ohne andere Komponenten am Bus
> funktioniert?

Der Touchscreen funktioniert immer.

Das DOUT-Signal direkt am AD-Wandler-Beinchen ist 3.3V.
Wenn ich dieses auf die Platine löte ist am Bus nur noch eine Ampltitude 
von 0,6 V zu messen - das Signal bleibt ansonsten gleich.

Um es einfach mal auszuprobieren, habe ich mal einen Pull-up-Widerstand 
von 100kOhm verwendet - auch damit funktioniert es nicht.

von Peter D. (peda)


Lesenswert?

Funktionell notwendig ist ein Pullup nicht.

Aber in den Bus-Pausen sind ja alle Slaves disabled und da könnte der 
floatende Eingang die Stromaufnahme etwas erhöhen.
In den Pausen könnte man daher den internen Pullup des MC einschalten.


Peter

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Als einzige Fehlerquelle sehe ich momentan die Flachbandverkabelung.
Im derzeitigen Testbetrieb ist der Leitungswiderstand eventuell zu hoch. 
Hat diesbezüglich jemand Erfahrungswerte?

MOSI, CLK, CS vom µP-Board versorgt
MISO vom AD-Wandler / Touchscreen Controller versorgt
Wobei sich der TSC auf der µP-Platine befindet.

Messung am Pin in WSL auf Platine 1:
Touchscreen DOUT 3,3V Pegel
AD-wandler DOUT ca. 0,6 V Pegel

Kann sich das jemand erklären?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Als einzige Fehlerquelle sehe ich momentan die Flachbandverkabelung.
> Im derzeitigen Testbetrieb ist der Leitungswiderstand eventuell zu hoch.
> Hat diesbezüglich jemand Erfahrungswerte?
Kurschlüsse zwischen Adern und/oder schlechte Verbindungen vom Kabel zum 
Pin, ja, sowas kann vorkommen...
Aber das sollte nach ca. spätestens 15 min. herausgefunden sein. Man 
kann ja einfach mal alle anderen Teilnehmer abklemmen, dann einen nach 
dem anderen dazunehmen...  Schritt für Schritt eben...

> Kann sich das jemand erklären?
Nein, ich nicht. Da fehlt ein vernünftiger Schaltplan....  :-/

von Alexander D. (lieberarm9alsarmab)


Angehängte Dateien:

Lesenswert?

So, habe nochmal eine andere Kabelverbindung ausgetestet - mit gleichem 
Ergebnis.

Im Anhang die Bilder der DIN und DOUT Leitung vom Oszlloskop.
Gemessen habe ich immer an den gleichen Pins.

Der Touchscreen-Controller befindet sich auf dem Evaluationsboard und 
ist am SPI-Master angeschlossen. Alle SPI-Leitungen sind über eine 
Wannensteckerleiste und Flachbandkabel mit der anderen Platine 
(AD-Wandler) verbunden.

Drückt man den Touchscreen ist die Amplitude des MISO(DOUT) High-Pegel 
3,3V schickt man eine SPI-Nachricht an einen der AD-Wandler, werden < 1 
V angezeigt.

Es ist mir ein Rätsel warum der Pegel von der EVB-Platine gesendet 
richtig ankommt und der der von der AD-Wandler-Platine gesendet wird, 
nicht.

von Pete K. (pete77)


Lesenswert?

Schaltplan?

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Den Schaltplan von der AD-Wandler-Platine habe ich als Ultiboard-Datei. 
Ansonsten in welchem Format exportieren?

von Franz (Gast)


Lesenswert?

.png

von Alexander D. (lieberarm9alsarmab)


Angehängte Dateien:

Lesenswert?

Da ist der Schaltplan.

Habe gerade mal eine SPI-Nachricht verschickt und alle CS-Leitungen von 
der AD-Wandler-Platine getrennt. Also alle CS = 0, alle ADUs empfangen 
die Nachtricht. Da entspricht die Spannungsamplitude der dreifachen 
Spannung eines AD-Wandlers. Also Nachricht an einen AD-Wandler ca. 0,7 V 
Pegel an MISO. Nachricht an drei ADUs ca. 2,1 V Pegel an MISO.

von holger (Gast)


Lesenswert?

>Touchscreen DOUT 3,3V Pegel
>AD-wandler DOUT ca. 0,6 V Pegel

>Kann sich das jemand erklären?

Geh einfach davon aus das deine CS Steuerung nicht in Ordnung ist.
Das ist die wohl sinnvollste Erklärung für das Verhalten. Irgendwie
werden zwei CS Pins gleichzeitig aktiv. Dann arbeiten zwei Ausgänge
aufeinander und es kommt zu solchen zu kleinen Pegeln. Das hab ich schon
oft so gesehen. Reiner Softwarefehler.

von holger (Gast)


Lesenswert?

>Also alle CS = 0, alle ADUs empfangen
>die Nachtricht.

Da haben wirs doch schon;) Es darf immer nur ein CS = 0 sein.

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Es ist mir schon klar, dass nur eine CS-Leitung zur Zeit aktiv sein 
darf.
Und genau das ist auch im Normalfall so. Die Flankenwechsel an den 
CS-Leitungen tritt nur dann auf, wenn ich an diese eine SPI-Nachricht 
schicke.

Mit allen CS:=0 war nur zum testen, um mal zu sehen was passiert, und 
dann überlagern sich halt die Signale. Da alle gleich sind (ID-Register 
lesen) addieren sie sich in dem Fall auf ca. 0,7*3 = 2,1 V...

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Was ich nun schonmal ausschließen kann:
Der Fehler liegt nicht an der AD-Wandler-Platine, da bei getrennter 
MISO-Leitung zum EVB die Pegel korrekt sind. Sobald die Verbindung 
hergestellt wird, wird der Pegel "runtergezogen".

Die CS-Leitung vom Touchscreen ist jedoch dauerhaft auf high. Von daher 
sollte der DOUT Pin auch in high impedance sein und somit nicht den Bus 
stören. Am MISO Pin des TSC ist im inaktiven Modus (TS nicht berührt) 
auch kein Signal. Von daher verstehe ich nicht, was den Bus stört.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Alexander D. schrieb:
> Da alle gleich sind (ID-Register lesen) addieren sie sich in
> dem Fall auf ca. 0,7*3 = 2,1 V...
Parallel geschaltete Spannungsquellen addieren sich nicht. Seis drum....

Was mir auffällt: Hast du 2 verschiedene Massen? Am ADC ist nur die 
gestrichelte, am J4 nur das Dreieck. Welche wird für die Kommunikation 
verwendet? Wie sind die miteinander verbunden?

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Neueste Info:
Scheinbar liegt der Fehler an einem auf dem EVB-Board verwendeten 
Buffer.
Dieser gibt scheinbar bei Eingang Z nicht Z aus sondern L und stört 
somit den Bus.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Alexander D. schrieb:
> Scheinbar liegt der Fehler an einem auf dem EVB-Board verwendeten
> Buffer.
Offenbar war dieser Buffer bisher nie Bestandteil der Diskussion und ist 
auch in keiner Skizze aufgetaucht :-/
Von vorn herein klar war allerdings, dass hier ein Buskonflikt vorliegt 
(2 Teriber auf 1 Busleitung)...

> Dieser gibt scheinbar bei Eingang Z nicht Z aus sondern L und stört
> somit den Bus.
Kein Puffer kann ein Z durchreichen. Wie soll der Puffer denn erkennen, 
dass hier ein Z vorliegt? Zum Ausgeben des Zustands Z gibt es bei 
Puffern immer einen extra Enable-Eingang.

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.