Hallo zusammen.
Habe hier ein kurioses Problem. Spiele gerade mit einem STM32F303 und
RFM95 Modul. Anfangs lief alles wie es soll. Doch plötzlich habe ich
Probleme mit dem SPI Clock.
Wenn das RFM95 Modul dran ist dann sehe ich CS, MOSI aber keinen Clock.
Nehme ich das RFM95 Modul vom Bus dann habe ich Clock.
Jetzt habe ich noch ein anderes STM32F303 Boards und mehrere RFM95
probiert. Immer das gleiche Problem.
Da das RFM95 Modul an einem Atmega328P ohne Probleme funktioniert gehe
ich davon aus dass meine 2 STM32F303 defekt sind.
Hatte schon mal einer solch ein Problem?
Ich programmiere mit STM32CubeIDE.
Die Initialsierung von SPI:
Werner P. schrieb:> Kann mir eigentlich nur vorstellen dass durch das rumprobieren die Clock> Ports Hops gegangen sind.
Nein es wird an der Initialisierung deiner SPI Pins liegen.
Die Initialisierung hast du uns ja nicht gezeigt.
Das Zeugs wird ja durch STM32CubeIDE generiert. Und vorher lief es ja.
Edit: das Witzige ist ja das ich Clock habe wenn ich nichts am Bus
angeschlossen habe.
STM Apprentice schrieb im Beitrag #6115054:
> Werner P. schrieb:>> Und vorher lief es ja.>> Vor was lief es?>> Ich sehe keine GPIO-Initialisierung der SPI Pins.
Ich habe in einer Funktion eine Änderung vorgenommen welche aber nichts
mit SPI zu tun hat. Und danach lief es nicht mehr. Ich sags ja. Kurios.
Ehrlich gesagt ich sehe auch keine. Habe aber in anderen Projekten, in
welchen ich SPI verwende, nachgesehen und da sehe ich auch keine
Initialiserung der SPI Ports. MOSI, MISO und CLK
Denke das liegt an STM32CubeIDE. Möglichweise werden die an anderer
Stelle konfiguriert. keine Ahnung.
Werner P. schrieb:> Denke das liegt an STM32CubeIDE. Möglichweise werden die an anderer> Stelle konfiguriert. keine Ahnung.
Schau im CubeMX *.ioc nach (unter GPIO) ob die SPI Pins vorkommen.
Irgendwo brauchen die ja eine Spezifikation (Speed, Input/Output ...)
wie sie wirken sollen.
Werner P. schrieb:> Wenn das RFM95 Modul dran ist dann sehe ich CS, MOSI aber keinen Clock.> Nehme ich das RFM95 Modul vom Bus dann habe ich Clock.
Und wo hängt dann dein Clock-Signal? Low oder high? Hänge doch anstelle
deines Moduls einfach mal nen Widerstand dran und schau, wie es dann
aussieht.
Wenn ich mich recht erinnere, dann kann man bei all den Portpins die
Treiberstärke einstellen. Das heißt dann 2, 10 oder 50 MHz oder so
ähnlich. 2 MHz ist dabei der schlappeste Ausgangstreiber.
W.S.
W.S. schrieb:> 2 MHz ist dabei der schlappeste Ausgangstreiber.
Auch in der "schlappesten" Version muss so ein Pin einige
(wenn nicht zig) Milliampere treiben können.
W.S. schrieb:> Werner P. schrieb:>> Wenn das RFM95 Modul dran ist dann sehe ich CS, MOSI aber keinen Clock.>> Nehme ich das RFM95 Modul vom Bus dann habe ich Clock.>> Und wo hängt dann dein Clock-Signal? Low oder high? Hänge doch anstelle> deines Moduls einfach mal nen Widerstand dran und schau, wie es dann> aussieht.>> Wenn ich mich recht erinnere, dann kann man bei all den Portpins die> Treiberstärke einstellen. Das heißt dann 2, 10 oder 50 MHz oder so> ähnlich. 2 MHz ist dabei der schlappeste Ausgangstreiber.>> W.S.
mit den Widerständen habe ich auch schon probiert. Aber wie gesagt. Wenn
nichts am Bus ist dann habe ich ja Clock!
Übrigens. Die SPI Ports werden in der stm32fxx_hal_msp.c intialisiert.
Die Funktion wird auch aufgerufen.
Also. ich habe nach wie vor den Verdacht dass meine beiden Boards
hinüber sind. Werde mir neue besorgen und dann berichten.
Werner P. schrieb:> mit den Widerständen habe ich auch schon probiert. Aber wie gesagt. Wenn> nichts am Bus ist dann habe ich ja Clock!
Ganz klar ist das jetzt nicht. Wie wurde "dann habe ich ja Clock"
gemessen? Oszi? Ist mit Widerständen (welchen, wie gschaltet) jetzt ein
Taktsignal zu sehen oder nicht? auch kein "kleines"?
Werner P. schrieb:> Also. ich habe nach wie vor den Verdacht dass meine beiden Boards> hinüber sind.
Nein, ich denke nicht.
Eher hast du ein Problem das du deinen schnellen Clock (wegen
falscher Einstellnug) nicht messen kannst.
Mit
Werner P. schrieb:> hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
hast du ja je nach Clock-Konfiguration einen ziemlich hoch-
frequenten SPI-Clock auf den du a) vielleicht nicht sicher
triggerst oder b) dein "Messgerät" die Frequenz gar nicht
richtig verträgt / darstellen kann.
rµ schrieb:> Werner P. schrieb:>> mit den Widerständen habe ich auch schon probiert. Aber wie gesagt. Wenn>> nichts am Bus ist dann habe ich ja Clock!>> Ganz klar ist das jetzt nicht. Wie wurde "dann habe ich ja Clock"> gemessen? Oszi? Ist mit Widerständen (welchen, wie gschaltet) jetzt ein> Taktsignal zu sehen oder nicht? auch kein "kleines"?
Am SPI Bus habe ich einen Logic Analyzer (Scaleo) dran.
1. RFM95 Modul dran. Zu sehen ist MOSI und CS. CLK ist LOW. MISO ist LOW
da keine Daten.
2. RFM95 Modul weg. Zu sehen ist MOSI,CLK und CS. MISO ist LOW da keine
Daten.
3. Pulldown Widerstand 2,2K an CLK. kein CLK.
4. Pullup Widerstand 2,2K an CLK. kein CLK.
spi_1.png = kein CLK (wenn RFM95 am Bus)
spi_2.png = CLK (wenn nichts am Bus)
Sorry vertan.
Muss heissen:
3. Pulldown Widerstand 2,2K an CLK. CLK da. wenn nichts am Bus.
4. Pullup Widerstand 2,2K an CLK. CLK da wenn nichts am Bus.
Werner P. schrieb:> Am SPI Bus habe ich einen Logic Analyzer (Scaleo) dran.
Hast du einen Masseanschluss deines Logic Analyzers fest mit
dem Controller verbunden?
Welche Logik-Schwelle hast du für den Trigger eingestellt?
zur Info.
die beiden Boards scheinen echt ne Macke zu haben. Jetzt hab ich
testweise ein STM32L073 Board und es funktioniert.
Danke an alle für die Unterstützung
Werner P. schrieb:> die beiden Boards scheinen echt ne Macke zu haben. Jetzt hab ich> testweise ein STM32L073 Board und es funktioniert.
Das ist so gut wie nie der Fall.
Wende 2.0 schrieb:> Werner P. schrieb:>> die beiden Boards scheinen echt ne Macke zu haben. Jetzt hab ich>> testweise ein STM32L073 Board und es funktioniert.>> Das ist so gut wie nie der Fall.
Aber nur so "gut wie nie".
Was soll ich sagen. Im Debug Modus bin ich durch die Initialisierung von
SPI. Da passt alles.
Bei beiden Projekte (F303 und L073) wurden die Init Routinen von
STM32CubeIDE erstellt. Die passen auch.
Mehr kann ich dazu nicht sagen.
Werner P. schrieb:> Bei beiden Projekte (F303 und L073) wurden die Init Routinen von> STM32CubeIDE erstellt.
Was noch nicht garantiert, dass sie in beiden Fällen fehlerfrei sind.