PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SPI SDO Pegel nicht korrekt



Che Guevara
16.01.2014, 13:55
Hi,

ich versuche gerade, einen LPS331AP (absolute Pressure) über SPI mit einem ATXMega64A3 auszulesen. Der selbe Sensor auf der selben Platine funktioniert problemlos am I2C Bus, nicht jedoch über SPI.
Das WhoIAm Register kann ich auslesen, jedoch kommen bei den Sensor-Registern nur Müll-Daten. Ich hab dann mal die Spi-Pins mit dem Oszi gemessen und festgestellt, dass der SDO-Pin vom Sensor wohl ein Problem hat. Die Pegel sehen sehr nach floating aus, sind also teilweise nicht definierbar. Wenn ich mit meiner Hand Masse und SDO verbinde, verändert sich das Signal...
Hier mal die Bilder:
CLK: 27189
CS: 27190
SDI: 27191
SDO: 27192

Hat jemand eine Idee, woran das liegt? Der SPI-Bus ansich funktioniert auch, ich hatte zeitweise mal nen anderen Sensor am selben µC und der hat auch funktioniert.
Die Spi-Geschwindigkeit hab ich bewusst sehr niedrig eingestellt, um diese als Fehlerquelle auszuschließen.

Vielen Dank & Gruß
Chris

BMS
16.01.2014, 16:26
Hallo,
Die Verwendung der CS-Leitung scheint nicht so ganz nach Standard zu sein. Seite 10 im Datenblatt sagt: CS=1 bedeutet I2C, CS=0 bedeutet SPI.
CS muss also ständig auf low liegen, sonst schaltet der Chip auf I2C-Modus. Im I2C-Modus sind dann open-collector-Ausgänge aktiv und somit keine Ausgabe von high-Pegel möglich. Liegt die Leitung dann hochohmig, kommt es zu der RC-Entladekurve. Bingo.
CS steht hier also nicht wirklich für Chip Select sondern eher für Mode Select ;)
Grüße, Bernhard

( Datenblatt: http://www.st.com/web/catalog/sense_power/FM89/SC1316/PF251601 )

Che Guevara
16.01.2014, 16:54
Hi,

also ich hab das Problem gefunden, ein Pin war wohl nicht ganz verlötet (hab ne neue SMD Rework Station :D ).
Mit der CS Leitung hast du dich wohl vertan, im DB auf Seite 13 sieht man, dass CS sehr wohl als Chip Select arbeitet. Ich hab am gleichen SPI noch einen MPU6000 hängen, beide arbeiten nebeneinander und funktionieren jetzt.
Trotzdem danke für deine Hilfe!

Gruß
Chris

Übrigens:
Bei allen Sensoren mit I2C & SPI die ich kenne, ist es so, dass der CS Pin als I2C-enable bzw. CS Pin arbeitet.