Hallo,
ich verzweifle gerade dabei, einen STM32L151RE dazu zu bringen, als
SPI-Master zu funktionieren. Die Verdrahtung ist soweit vorgegeben, dass
ich SPI1 verwenden muss und das chip-select Signal nicht von der
Hardware generieren lassen kann. MISO, MOSI und CLK sollen vom
Peripheral verwendet werden. Mein Vorgehen:
1) IOs initialisieren
- GPIO port A clock enable setzen (dort hängen MISO und MOSI)
- GPIO port B clock enable setzen (CLK)
- SPI1 clock enable
2) Alternative Funktionen einschalten
- GPIOA/B->MODER für MISO, MOSI und CLK auf "Alternate function mode"
setzen.
- GPIOA/B->AFR für MISO, MOSI und CLK auf 5u gesetzt. Dieser Wert
entspricht laut datasheet dann SPI1_MISO, SPI1_MOSI und SPI1_SCK
3) SPI1 konfigurieren
- Softwareslavemanagement Enable + Internal slave select
- SPI enable
- SPI Master
- Baudrate select = 1; ergibt laut Messung ~500KBaud
Am Oszi, sehe ich die durch SW gesteuerte CS-Leitung regelmäßig auf
aktiv (low) gehen. Innerhalb der Bereiche, sehe ich Clock in 5 8er
Blöcken und auf MISO sehe ich plausibel aussehende Antworten vom Slave.
Die Daten vom Slave sehe ich auch in der Software wieder.
Was mir fehlt ist MOSI! Ich sehe da einfach kein Signal. Ich habe auch
schon versucht, das Signal mal auf einen anderen Pin auszugeben, da sehe
ich leider auch nichts.
Erkennt jemand von euch an dem Vorgehen einen Fehler?
mfg und vielen Dank für's Draufgucken,
Torsten