Ich versuche hier, mit einem STM32F466RE einen SPDIF-Datenstrom an PB7 zu empfangen. Der Code ist mit CubeMX erzeugt und sollte daher eigentlich passen, wenn ich mir ansehe, was CubeMX generiert hat, kann ich keinen offensichtlichen Fehler erkennen. Der SPDIF-Datenstrom ist - direkt am Eingangspin gemessen - ein perfektes und astrein sauberes Signal. Der zugehörige sowie die globalen Interrupts sind aktiviert. Trotzdem wird nichts empfangen, die Receive-Interruptfunktion wird nie aufgerufen:
1 |
|
2 |
|
3 |
|
4 |
|
Die Initialisierung von CubeMX sieht inklusive des Pinmappings so aus (zumindest die relevanten Teile, der Rest ist ja eh' der immer gleiche, generierte Code):
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
An der Funktion, die den Empfang der Daten starten sollte, ist auch nichts dramatisch kompliziertes:
1 |
|
2 |
|
3 |
|
4 |
|
Google hilft nicht wirklich weiter, entweder finde ich Beispielcode, der auch nur aus CubeMX stammt, oder der für einen anderen STM32-Typen ist und letztenendes auch keine Erkenntnisse bringt, die das Problem lösen würden.
Das Einzige, was in meinem Fall speziell ist: die eingehenden Daten haben 100 kHz statt 96 kHz oder 192 khz oder irgend ein anderes Vielfaches von 24 kHz - aber ich kann nirgendwo im Handbuch erkennen, dass das ein Problem wäre, es ist nur von einer Maxialfrequenz von 192 kHz die Rede.
Was könnte hier falsch sein/fehlen?
