Forum: Mikrocontroller und Digitale Elektronik msp430f2274 und Multi Slave mit MMA7455LR, SPI Probleme


von Tschuni (Gast)


Lesenswert?

Hallo Zusammen,
Ich suche schon seit Tagen nach einer Lösung meines Problems und bitte 
um Hilfe.

Mein System:
Ich betreibe das msp430f2274 RF Modul als SPI Master und lese damit von 
16 Slaves Beschleunigungssensoren MMA7455LR X, Y und Z aus. Der SPI 
clock taktet bei 2 Mhz. Die ChipSelects der 16 Sensoren werden über zwei 
Multiplexer HCF4051B angesteuert. Die SPI Leitungen sind zwischen 10cm 
und 2m lang und "sternförmig" mit Flachbandkabel verdrahtet. Die Enden 
sind AC terminiert (100pF,100 Ohm), und den Clock habe ich mit einem 
Serienwiderstand (33Ohm) versehen um die steilen Flanken zu glätten. Der 
SDI vom msp430 ist über ein Serienwiderstand (1Kohm) an alle Slaves 
angeschlossen. Das SPI Signal SDO vom Sensor wird über ein BUS 
TRANSCEIVER (SN74LVC1T45) geführt, da meineswissens der Sensor MMA7455LR 
keinen High Z Ausgang hat (Auf jeden Fall hatte der Sensor Mühe den Bus 
ohne SN74LVC1T45 zu speisen), dabei habe ich den DIR PIN (Richtungs PIN) 
vom BUS TRANSCEIVER an den Chip select angeschlossen, damit der BUS 
TRANSCEIVER auf High Z umschaltet, wenn CS high ist. Alle Chip Selects 
besitzen einen 10K Pull up nach dem Multiplexer.

Das funktioniert:
Mit diesem System kann ich jeden einzelnen Sensor erfolgreich auslesen. 
Im Code ändere ich nur den Chip select.

Problem:
Sobald ich per Software zwei oder mehrere Sensoren mit dem CS versorge 
um den X,Y und Z Wert der Beschleunigung auszulesen ist das SDO Signal 
vom Sensor nicht mehr sauber. Dass heisst, irgenwie kommen sich diese 
zwei Sensoren in die quere.

Gemessen mit Oszi:
Die Chip Selects sind im richtigen Zeitfenster aktiv. Die SDI Leitung 
sieht immer korrekt aus. Der Clock sieht auch korrekt aus.

Kommentar:
Dieses Problem ist erst aufgetaucht, seit ich den BUS TRANSCEIVER 
einsetze. Ohne BUS TRANSCEIVER kann ich aber nur ca. 7 Slaves/Sensoren 
physisch anschliessen, da sonst das SDO Signal in die Knie geht.

Habe leider keinen Schaltplan.
Bin für jede Hilfe dankbar.
Grüsse Euch.

von Erik (Gast)


Lesenswert?

hallo Tschuni,

ich sage jetzt ketzerisch kannst du das SDO-signal nicht verstärken ?
einfache Transitostufe oder OPV ?

mfg Erik

von Tschuni (Gast)


Lesenswert?

Hey Erik,
Mit einer Transistorstufe? Keine Ahnung. Wie würdest Du den Transistor 
anschliessen.
Ich probier es jetzt mal mit einem SN74AUP1G125.
Grüsse

von Tschuni (Gast)


Lesenswert?

Hallo,
Habe den Fehler gefunden.
Der Sensor MMA7455 geht automatisch in den I2C mode sobald der CS high 
ist. Somit hat der eine Sensor, im ungewollten I2C mode, mein SPI Signal 
vom anderen Sensor gestört. Per Software kann man aber den MMA7455 
ausschliesslich in den SPI mode zwingen. Tja, man sollte das Datenblat 
halt genau lesen. Übrigens ist es nicht förderlich bei SDO/MISO 
AC-Terminierung zu machen, da sonst aufgrund von den "grossen" 
Kapazitäten der MMA7455 in die Knie geht. Somit braucht man auch keinen 
Bus Treiber für das SDO Signal 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.