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
Im Datenblatt vom Chip steht, ob CS nach jeder Übertragung deaktiviert
werden soll oder nicht.
Manche Chips können das, andere benötigen einen Pegelwechsel am CS damit
sie funktionieren. Mein Tip: CS verbinden. Hast ja noch einen Pin frei
;-)
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.
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...
Cell85 schrieb:> ich dachte vielleicht geht das so ohne auftrennen.
Ich denke, der Pegel dieser Leiterbahn ist GND.
Nur, weil, da wäre dann ja noch der Pin 5, der GND sehen will...
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.
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.
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.
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!
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.
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.
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... ;-)
Hier begann damals meine Reise. Aus nostalgischen Gründen mal reingepostet.
12 Jahre später, ist das Produkt inzwischen stark weiterentwickelt und ich selbst arbeite nicht mehr dran. War bzw. ist eine tolle Zeit!