SCK und MOSI haben beim Senden die erwarteten Signale(mit Oszi
gemessen).
Nur das Empfangen bereitet noch Probleme. Dabei ist mir aufgefallen dass
der MISO-Pin High Potential hat, obwohl er ja eigentlich Eingang ist.
Hat jemand eine Idee wie der MISO Pin korrekt als Eingang konfiguriert
wird?
Grüsse
Uwe
Hallo Gerhard,
erstmal danke für deine Antwort.
Soll das also heißen, dass ein Ausgang des MEMS(LIS302DL) fest mit dem
PA6 (MISO) verdrahtet ist und dem Eingang PA6 (welcher, wie oben
beschrieben, richtig als Eingang konfiguriert ist) ein High liefert.
D.h. also daß das High nicht vom PA6(MISO) kommt, sondern vom
LIS302DL!???
Gruss
Uwe
Hi,
Habe das selbe Problem, aber erstmal zu deinem Code.
@Uwe
Falls das immer noch aktuell ist, glaube ich hast du die CPOL und CPHA
nicht richtig gesetzt, wenn ich das Datenblatt des LIS302DL richtig
gelesen habe:
SPC is the Serial Port Clock and it is
controlled by the SPI master. It is stopped high when CS is high (no
transmission). SDI and
SDO are respectively the Serial Port Data Input and Output. Those lines
are driven at the
falling edge of SPC and should be captured at the rising edge of SPC.
Zu meinem Problem, falls jemand eine Lösung hat:
Mein Quelltext ist ziemlich genau gleich wie der von Uwe. Mein main.c
sieht so aus:
Hat jemand eine Idee, warum ich immer 255 aus dem DR auslese? Habe
leider kein Oszilloskop um die Datenübertragung zum MEMS nachzuprüfen,
deshalb die Frage im Forum. Das gesendete Kommando zum auslesen des
Who_am_i registers ist 000 1111 (=0x0F).
Vielen Dank im Voraus
Hallo Chris,
habs mit SPI2 und SPI3 ausprobiert und es hat problemlos funktioniert
(mit SPI_CPOL_Low und SPI_CPHA_1Edge)!
Ich denke mal wenn man PE3 auf high setzt ((SPI1) CS Pin vom LIS3DSH)
müsste es auch gehen!
Welchen Takt bzw. Flankensteilheit hat dein SCK und wie sieht deine
"Masseführung" aus. Hatte am Anfang auch auch seltsame Werte im DR bis
ich Masse parallel zur Taktleitung verlegt hatte.
Gruss
Uwe
Hi Uwe,
Ich nutze das Discovery Board vom STM32F407, bei dem der LIS302DL direkt
auf dem SPI1 angeschlossen ist, also nur mit dem SPI1 angesprochen
werden kann. Über die Masseleitung kann ich leider nix sagen, denke aber
die sollte einwandfrei sein.
Die Flankensteilheit kann ich erst Montag messen, habe vorher kein
Oszilloskop zur Hand. Aber du hast mir schonmal geholfen damit, dass du
es mit CPOL=0 und CPHA=0 zum Laufen gebracht hast. Aber beim CS Pin
meinste schon auf Low setzen, richtig?
Hab mal ein Bild vom Datenblatt angehängt wo die SPI Kommunikation im
Zeitbereich aufgezeichnet ist. Unter dem Diagramm steht nämlich
explizit, dass der SCK High sein soll, wenn nix gesendet wird. Außerdem
wird beschrieben, dass bei fallender Flanke geschrieben, bei steigender
übernommen werden soll....
>Ich nutze das Discovery Board vom STM32F407, bei dem der LIS302DL direkt>auf dem SPI1 angeschlossen ist
Dann kannst du doch ganz einfach mal in den Code
zur Demofirmware reinschauen wie es gemacht wird.
Hallo Chris,
ich wollte an SPI1 einen seriellen Speicher anschliessen ohne den
LIS302DL zu nutzen. Deshalb auch CS(PE3) auf High in meinen Fall.
siehe Hinweis von Michi:
Michi schrieb:> Ist PE3 high? Das ist der CS Pin vom LIS3DSH. Damit ist der> störende Pin> am LIS3DSH nicht mehr Ausgang sondern Eingang und es sollte gehen.
Kleines Missverständnis, also sorry!
Gruss
Uwe