Hallo liebe Gemeinde,
ich versuche meinen AVR-geprägten Horizont zu erweitern und
experimentiere mit einem STM32 Discovery-Board (STM32F407) erweiteret
mit einem Mikroelektronika "STM32F4 Discovery Shield" und dazu passendem
"7 seg click" (http://www.mikroe.com/click/7seg/). Die darauf
befindlichen 74HC595 tun mit Bit-Bangingen was sie sollen.
Mit SPI bekomme ich die Geschichte aber nicht hin. Symptom: Manchmal
funktionierts, meistens jedoch nicht. Es sieht so aus als gelänge es
nach Debug-Start genau einmal die richtigen Daten (2-Bytes)
"rauszuschieben" und danach immer nur noch das Höchste Bit der beiden
Datenbytes.
trace_printf("SPI Status = %d (%02x, %02x)\n",s,rbuf[0],rbuf[1]);
109
}
110
}
111
}
Der Output der 74HC595 ist wieder mit MISO verbunden so dass ich immer
die letzten Werte der beiden 74HC595 wieder auslesen kann. Diese stimmen
auch immer mit der Anzeige überein.
Was könnte ich hier übersehen haben?
Cube_S schrieb:> Was könnte ich hier übersehen haben?
Ich gehe mal davon aus, das du das Datenblatt deiner SPI Komponenten
gelesen hast.
- SPI Mode
- SPI Geschwindigkeit
Allgemein empfehle ich die Anschaffung eine Protokoll Analysers, sofern
nicht schon vorhanden (etwa Zeroplus logicube).
Mann kommt sonst schnell ins Raten
Zur Cube/HAL Methoden.
Bei mir haben die Methoden TransmitReceive()
Und Transmit(), receive() .
Nicht immer die gleichenergebnisse gebracht.
Heißt:
Bei Baustein A hat TransmitReceive wunderbar funktioniert.
Ein anderes mal musste ichtrennen in expliziet, Transmit und Receive,
ausbrobieren;_)
schon versucht, das Senden & Empfangen 'per Hand' zu machen? Ich hatte
bei beim STM32F3 Discovery das Problem, dass die HAL-Funktion bei
niedrigen Baudraten gut funktioniert hat, bei höheren aber immer doppelt
so viele CLK-Pulse ausgegeben hat wie eigentlich nötig...
Vielen Dank für die Anregungen. Vor allem das Spielen mit den
Geschwindigkeiten brachte Erfolg. Mit lausigen 160Hz SPI Frequenz ging
dann alles, was natürlich keine Lösung ist.
Protokoll habe ich dann auch mit dem Oszi angesehen, sah eigentlich
(gemessen an den Pins des Discovery-Boards) gut aus, direkt am Board mit
den 74HC595 weniger.
Moral von der Gesicht: Es war eine kalte Lötstelle an einem Pin-Header
des "7 seg click" den ich selbst angelötet hatte. Echter Anfängerfehler
obwohl ich nicht das erste mal löte und auch nicht nur Buchsenleisten.