MISO beeinflusst MOSI
Moderator: Guido Körber
-
- Posts: 97
- Joined: Wed Aug 03, 2011 3:46 pm
- Contact:
MISO beeinflusst MOSI
Heute habe ich noch etwas merkwürdiges entdeckt:
Der IO-Warrior56 ist wie folgt eingestellt:
'setting the SPI-frequency low
lspisettings(0) = &H8 'initilization of SPI
lspisettings(1) = &H1 'activate SPI
lspisettings(2) = &H0 'MSB first; clock is low if idle; data is driven on the falling edge and sampled on the rising edge
lspisettings(3) = 254 'clock frequency 24MHz/(254+1)=94kHz, frequency to begin with the SD-card
lretint = IowKitWrite(iohandle, 1, lspisettings(0), 64)
Es sieht alles gut aus. Wenn ich aber nun die MISO-Leitung mit einem Pullup-Widerstand versehe (10kOhm nach +3,3V), dann ist MOSI im IDLE auf High-Pegel (+5V). Ohne den Widerstand ist MOSI im IDLE auf Low-Pegel (0V).
Wieso beeinflusst ein Pullup-Widerstand an der MISO-Leitung die MOSI-Leitung?
Viele Grüße
Franz Peter Zantis
Der IO-Warrior56 ist wie folgt eingestellt:
'setting the SPI-frequency low
lspisettings(0) = &H8 'initilization of SPI
lspisettings(1) = &H1 'activate SPI
lspisettings(2) = &H0 'MSB first; clock is low if idle; data is driven on the falling edge and sampled on the rising edge
lspisettings(3) = 254 'clock frequency 24MHz/(254+1)=94kHz, frequency to begin with the SD-card
lretint = IowKitWrite(iohandle, 1, lspisettings(0), 64)
Es sieht alles gut aus. Wenn ich aber nun die MISO-Leitung mit einem Pullup-Widerstand versehe (10kOhm nach +3,3V), dann ist MOSI im IDLE auf High-Pegel (+5V). Ohne den Widerstand ist MOSI im IDLE auf Low-Pegel (0V).
Wieso beeinflusst ein Pullup-Widerstand an der MISO-Leitung die MOSI-Leitung?
Viele Grüße
Franz Peter Zantis
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: MISO beeinflusst MOSI
Was für einen Wert hat denn das Byte 4? Also das, was das Flag für die Pullups enthält?
-
- Posts: 97
- Joined: Wed Aug 03, 2011 3:46 pm
- Contact:
Re: MISO beeinflusst MOSI
Das Array "lspisettings" wird beim Programmstart auf Null gesetzt.
Also hat Byte 4 den Wert 0.
Also hat Byte 4 den Wert 0.
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: MISO beeinflusst MOSI
Sicher? Dann wären die chipinternen Pullups an und das würde nicht zu dem beschriebenen Verhalten passen.
-
- Posts: 97
- Joined: Wed Aug 03, 2011 3:46 pm
- Contact:
Re: MISO beeinflusst MOSI
Ja, ich möchte die chipinternen Pullups verwenden und habe die Anschlüsse außen über Shottky-Dioden auf +3,3V geklemmt.
-
- Posts: 97
- Joined: Wed Aug 03, 2011 3:46 pm
- Contact:
Re: MISO beeinflusst MOSI
Anbei (Anhang) noch etwas merkwürdiges:
Wenn die SD-Karte eingestzt wurde, dann schafft es der Warrior nicht die MOSI-Leitung rechtzeitig beim ersten Impuls nach Null zu ziehen - das kann doch nicht sein? MOSI bedeutet, die SD-Karte ist hochohmig, denn für diese ist es ein Eingang. Das Verhalten ist identisch bei verschiedenen SD-Karten.
Wenn die SD-Karte eingestzt wurde, dann schafft es der Warrior nicht die MOSI-Leitung rechtzeitig beim ersten Impuls nach Null zu ziehen - das kann doch nicht sein? MOSI bedeutet, die SD-Karte ist hochohmig, denn für diese ist es ein Eingang. Das Verhalten ist identisch bei verschiedenen SD-Karten.
- Attachments
-
- tek00000.png (31.25 KiB) Viewed 12982 times
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: MISO beeinflusst MOSI
Das sieht allerdings komisch aus. Die Outputs des IOW56 können 25 mA sinken, also sollte da auch eine saubere Flanke zu sehen sein.
Hängt da noch was anderes dran, oder ist die Stromversorgung zu zaghaft ausgelegt?
Hängt da noch was anderes dran, oder ist die Stromversorgung zu zaghaft ausgelegt?
-
- Posts: 97
- Joined: Wed Aug 03, 2011 3:46 pm
- Contact:
Re: MISO beeinflusst MOSI
Was heißt "die Stromversorgung zu zaghaft ausgelegt"? Der IO-Warrior wird über die USB-Schnittstelle versorgt. Auf der Platine sind die +5V der USB-Schnittstelle zusätzlich mit einem 100µF-Keramikkondensator gebuffert.
Die MOSI-Leitung mit dem seltsamen Verhalten (Pin 5.2 des IO-Warrior) geht an einen DAU MCP4822, einen µC MSP430F2013 und an die SD-Karte. Dort ist die Leitung (bzw. sind alle SPI-Leitungen) mit einer Shottky-Diode auf 3,3V geklemmt. Die 3,3V werden mit Hilfe eines LM1117 aus der 5-V-Spannung der USB-Schnittstelle gewonnen. Die Pegel auf dem SPI-Bus liegen also zwischen 0 und 3,3V.
Das Verhalten ändert sich nicht, wenn ich den Mikrocontroller und den DAU entferne. Ich messe direkt am Pin 5.2. Ich habe auch den IO-Warrior schon ausgetauscht - ohne das sich etwas geändert hätte.
Laut Datenblatt kann jeder Ausgang am IO-Warrior 25 mA übernehmen. Soviel Strom kommt gar nicht zustande, denn laut Datenblatt haben die Pullup-Widerstände im IO-Warrior Werte zwischen 4...8 kOhm. Selbst bei 4 kOhm ist der Strom nur 1,25 mA groß. Eine andere Stromquelle gibt es nicht im Aufbau.
Hat noch jemand eine Idee?
Die MOSI-Leitung mit dem seltsamen Verhalten (Pin 5.2 des IO-Warrior) geht an einen DAU MCP4822, einen µC MSP430F2013 und an die SD-Karte. Dort ist die Leitung (bzw. sind alle SPI-Leitungen) mit einer Shottky-Diode auf 3,3V geklemmt. Die 3,3V werden mit Hilfe eines LM1117 aus der 5-V-Spannung der USB-Schnittstelle gewonnen. Die Pegel auf dem SPI-Bus liegen also zwischen 0 und 3,3V.
Das Verhalten ändert sich nicht, wenn ich den Mikrocontroller und den DAU entferne. Ich messe direkt am Pin 5.2. Ich habe auch den IO-Warrior schon ausgetauscht - ohne das sich etwas geändert hätte.
Laut Datenblatt kann jeder Ausgang am IO-Warrior 25 mA übernehmen. Soviel Strom kommt gar nicht zustande, denn laut Datenblatt haben die Pullup-Widerstände im IO-Warrior Werte zwischen 4...8 kOhm. Selbst bei 4 kOhm ist der Strom nur 1,25 mA groß. Eine andere Stromquelle gibt es nicht im Aufbau.
Hat noch jemand eine Idee?
-
- Posts: 97
- Joined: Wed Aug 03, 2011 3:46 pm
- Contact:
Re: MISO beeinflusst MOSI
Ich habe nun die SD-Karte herausgenommen und die MOSI-Leitung überprüft.
Nach der Initialisierung der Karte (die bei entnommener Karte natürlich fehlschlägt) liegt die MOSI-Leitung auf High-Pegel. Die Spannung am Kartenanschluss ist (MOSI-Leitung) beträgt 3,8V (3,3V Klemmspannung + 0,5V Schleusenspannung der Klemmdiode). Belaste ich den Anschluss nun mit 120 Ohm, dann sinkt die Spannung auf 3,6V.
Dann habe ich die Klemmdiode ausgelötet. Nun messe ich am MOSI-Anschluss (also unbeeinflusst, direkt am IO-Warrior56) 5V. Belaste ich nun den Anschluss mit 120 Ohm, sinkt die Spannung auf 4,1V.
Nach Angaben aus dem Datenblatt hat der im IO-Warrior enthaltene Pullup-Widerstand mindestens 4000 Ohm. Somit müsste bei Belastung mit 120 Ohm, die Spannung auf 146 mV zusammenbrechen. ????
Sind die Angaben im Datenblatt korrekt?
Was ändert sich im Special-Modus?
Vor der SPI-Initialisierung entspricht das Verhalten dem erwarteten nach Datenblatt.
Habe ich etwas überlesen?
Nach der Initialisierung der Karte (die bei entnommener Karte natürlich fehlschlägt) liegt die MOSI-Leitung auf High-Pegel. Die Spannung am Kartenanschluss ist (MOSI-Leitung) beträgt 3,8V (3,3V Klemmspannung + 0,5V Schleusenspannung der Klemmdiode). Belaste ich den Anschluss nun mit 120 Ohm, dann sinkt die Spannung auf 3,6V.
Dann habe ich die Klemmdiode ausgelötet. Nun messe ich am MOSI-Anschluss (also unbeeinflusst, direkt am IO-Warrior56) 5V. Belaste ich nun den Anschluss mit 120 Ohm, sinkt die Spannung auf 4,1V.
Nach Angaben aus dem Datenblatt hat der im IO-Warrior enthaltene Pullup-Widerstand mindestens 4000 Ohm. Somit müsste bei Belastung mit 120 Ohm, die Spannung auf 146 mV zusammenbrechen. ????
Sind die Angaben im Datenblatt korrekt?
Was ändert sich im Special-Modus?
Vor der SPI-Initialisierung entspricht das Verhalten dem erwarteten nach Datenblatt.
Habe ich etwas überlesen?
-
- Posts: 97
- Joined: Wed Aug 03, 2011 3:46 pm
- Contact:
Re: MISO beeinflusst MOSI
Problem gelöst:
Ursache war die fehlende Angabe im Datenblatt bezüglich der Treiberleistung im Special (SPI) -Mode.
Da offensichtlich starke Treiber an den SPI-Ausgängen (Port 5) vorhanden sind (und eben nicht PullUp-Widerstände) kann man die SPI-Leitungen nicht einfach auf eine kleinere Spannung klemmen. Ich habe nun in die MOSI- und CLK-Leitung jeweils einen 220-Ohm-Widerstand geschaltet und erst hinter diesem Widerstand nach 3,3V geklemmt. So funktioniert meine Schaltung mit allen mir verfügbaren SD-Karten. :-)
Empfehlung: Update des Datenblatts
Beschreibung der Ausgangsteiber im Special Mode (SPI) - Wie ausgeführt? Welche Ströme können geliefert werden?
Optimal: Schaltvorschläge für die Anpassung an 3,3-V-Systeme (bitte jetzt nicht mit Spezial-Konverter-ICs - die werden nächste Woche sowieso abgekündigt).
Viele Grüße
Franz Peter Zantis
Ursache war die fehlende Angabe im Datenblatt bezüglich der Treiberleistung im Special (SPI) -Mode.
Da offensichtlich starke Treiber an den SPI-Ausgängen (Port 5) vorhanden sind (und eben nicht PullUp-Widerstände) kann man die SPI-Leitungen nicht einfach auf eine kleinere Spannung klemmen. Ich habe nun in die MOSI- und CLK-Leitung jeweils einen 220-Ohm-Widerstand geschaltet und erst hinter diesem Widerstand nach 3,3V geklemmt. So funktioniert meine Schaltung mit allen mir verfügbaren SD-Karten. :-)
Empfehlung: Update des Datenblatts
Beschreibung der Ausgangsteiber im Special Mode (SPI) - Wie ausgeführt? Welche Ströme können geliefert werden?
Optimal: Schaltvorschläge für die Anpassung an 3,3-V-Systeme (bitte jetzt nicht mit Spezial-Konverter-ICs - die werden nächste Woche sowieso abgekündigt).
Viele Grüße
Franz Peter Zantis
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: MISO beeinflusst MOSI
Das steht doch im Datenblatt unter 4.2.3, die Ausgänge werden im SPI Modus als CMOS Ausgänge gefahren. Da steht auch drin, dass für Betrieb mit Slaves mit niedrigerer Versorgungsspannung ein Betriebsmodus mit Open Drain zur Verfügung steht.