SPI CS-Pin auf Gnd schlimm?

Gast #2560829
Lesenswert?

Hallo,

ich habe ein Board mit einem STM32F103 und einem LIS331DL Accelerometer 
von ST. Dieser kann SPI und I2C.

In dem Manual: 
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00172345.pdf

steht, dass ich den Pin CS auf 0 stellen soll wenn ich SPI verwenden 
will. (siehe Screenshot)

So hab ich ihn auf gegroundet gehabt in meinem Layout.

Ich würde jetzt gerne wissen ob das so richtig war. Weil in dem 
Übertragungsbild vom SPI in der Anleitung ist CS am Ende der Übertragung 
high.

Sobald meine MCU Spannung hat sollen eigentlich so lange Daten 
ausgelesen werden bis das Board abgeschaltet wird. Also kein Start/Stop 
zwischen drin.

Was meint ihr?

Viele Grüße
Sven
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #2560838
Lesenswert?

Cell85 schrieb:
> Ich würde jetzt gerne wissen ob das so richtig war.
SPI braucht i.A. 4 Leitungen: MOSI, MISO, SCLK und SS
Den SlaveSelect kannst du dir bei bestimmten geeigneten Slaves sparen, 
wenn du entweder
1. niemals die Synchroinisation zzum Slave verlierst (sag niemals Nie)
oder
2. andere Synchronisationsmechanismen hast (z.B. Timeout)

Der von dir verwendete Sensor ist kein solcher Slave. Du brauchst den 
SS unbedingt. Das steht auch im Datenblatt:
1
The Serial Interface interacts with the outside world with 4 wires: 
2
CS, SPC, SDI and SDO.

> Weil in dem Übertragungsbild vom SPI in der Anleitung ist CS am Ende
> der Übertragung high.
Mit der steigenden Flanke von CS werden die Daten in den Baustein 
übernommen.
Moderator (Firma: Titel) Persönliche Seite #2560845
Lesenswert?

Cell85 schrieb:
> Ich könnte von dem CS Pin der gegroundet ist an einen Kondensator und
> dann an einen MCU Pin.
Was? Beim SPI hat ein Kondesator nichts auf der SS Leting zu suchen. 
Wofür der Kondensator?

> Wäre das eine Möglichkeit?
Du trennst die Masseverbindung auf und fädelst einen Draht zu einem 
uC-Pin. Das ist der übliche Weg...
#2560866
Lesenswert?

Cell85 schrieb:
> OK,
>
> ich dachte vielleicht geht das so ohne auftrennen.

Wie willst du denn ohne Auftrennen eine direkte Masseverbindung umlegen? 
Wenn der Pin auf Masse liegt, dann liegt er auf Masse. und da kannst du 
machen was du willst, ohne auftrennen geht das nicht.

> Ich hab mal ein Bild vom Sensor Layout angehängt

Schnapp dir ein Messerchen mach einen Schnitt durch die Leiterbahn um 
den Pin vom Kondensator und von Masse zu trennen. Aber so, dass dir noch 
ein bischen Fläche übrig bleibt, so dass du dort ein Drähtchen auflöten 
kannst. Gegebenenfalls musst du dann eben den Stoplack dort etwas 
wegkratzen.

So ist das nun mal, wenn man Layoutfehler hat. Das sollte nicht 
passieren, passiert aber immer wieder mal. Wobei dein Fehler natürlich 
besonders dämlich ist.
Ist kein Beinbruch und mit ein wenig Fummelarbeit zu beheben.
#2560870
Lesenswert?

Cell85 schrieb:
> ja da hast du recht.
>
> Ich hab noch auf der selben platine einen zweiten Sensor, der hat aber
> leider unter dem package eine via zu gnd, ich weiß nicht wie ich das
> auftrennen kann.

Tja. Jetzt sitz du in der Bredullie.
Den IC wirst du runter nehmen müssen, damit du da rann kommst.


Wie hast du dir eigentlich vorgestellt, dass 2(!) IC am selben SPI Bus 
mit dem µC reden, ohne dass sich die gegenseitig in die Quere kommen?
CS ist die Abkürzung für "Chip Select". Auf deutsch: Was immer jetzt 
auch über die anderen Leitungen kommt, es ist für dich gedacht oder 
eben: es ist nicht für dich gedacht.
D.h. Chip Select ist der Mechanismus, mit dem der µC auswählt mit 
welchem anderen CHip er eigentlich reden will. Du hast 2 IC, also muss 
auch der µC den jeweils richtigen anwählen. Und das macht er, 
Überraschung, indem er die CS Leitung von demjenigen auf Low zieht, mit 
dem er palavern will.
Gast #2560883
Lesenswert?

Hallo Karl,

die Sensoren hängen an zwei völlig verschiedenen SPI Ports, also nicht 
wie du vermutet hattest an dem selben.

Das Problem ist einfach das ich das mit CS nicht richtig bedacht hatte. 
Ich ging davon aus ChipSelect wie in der Anleitung 1 für I2C Betrieb und 
0 für SPI Betrieb.

Dämlich ist es alle mal, da hast du vollkommen recht!
Gast #2560890
Lesenswert?

Du kannst versuchen CS (Pin7) mit SDO (Pin8) verbinden und das Ding im 
SPI 3wire Mode betreiben (Datasheet 5.2.3). Die µC Seite wirst du dann 
aber zu Fuss programmieren müssen.

Wenn ich mir das Layout aber so anschaue, braucht es einen Lötkünstler 
um das so oder so zu reparieren.
#2560892
Lesenswert?

Cell85 schrieb:

> Dämlich ist es alle mal, da hast du vollkommen recht!

Egal. Stecks weg, sowas passiert.
Es ist nicht ungewöhnlich, dass in der Version 0.1 der Platine an 
manchen Stellen mit Draht nachgeholfen werden muss. Fädeldraht eignet 
sich für solche Korrekturen ganz ausgezeichnet. Ansonsten musst du eben 
in der Bastelkiste kramen, ob du wo dünnen(!) isolierten Draht findest. 
zb Draht aus einer alten Spule, bei dem die Isolierung noch intakt ist.
Moderator (Firma: Titel) Persönliche Seite #2560899
Lesenswert?

Cell85 schrieb:
> der hat aber leider unter dem package eine via zu gnd
Gelernt: in Zukunft keine Versorgungskontaktierung unter dem Package. 
Ein Signal-Via ist da schon eher als "praktisch" einzustufen.

Lattice User schrieb:
> Wenn ich mir das Layout aber so anschaue, braucht es einen Lötkünstler
> um das so oder so zu reparieren.
Ja, insbesondere, weil die Pads des CSP so unglaublich kurz sind. Ich 
mach die für Prototypen gern länger, dass ich wenigstens noch zum Messen 
dran komme.

Karl Heinz Buchegger schrieb:
> Draht aus einer alten Spule
Ich hab da für Extremfälle noch ein zerlegtes Relais herumliegen. Der 
Draht ist extrem, aber der reicht ewig...  ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren