Hallo,
ich habe ein sporadisches Problem mit der SPI-Schnittstelle vom STM32 G0. Die Schnittstelle wird manuell betrieben und dient der Kommunikation mit einem MCP3561. Im Betrieb und auf der normalen Platine funktioniert alles einwandfrei. Für Hardware-in-the-Loop Tests ersetzen wir den MCP3561 mit einem SPI-Slave. Bevor wir diesen aber durchtesten können, haben wir das Problem, dass unsere Sende/Empfangsroutine hängen bleibt. Da wir den SPI im Master betreiben, sollte eigentlich im schlimmsten Falle irgendein Müll eingelesen werden, aber hauptsache irgendwas wird eingelesen? Hier der 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 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
Hier bleibt er ab und zu bei "while(!(SPI2->SR & SPI_SR_RXNE));" hängen. Auf der bestückten Platine tut er das Ganze nicht. Kann das Ganze am Slave liegen? Oder übersehe ich irgendetwas, als Master sollte ja nach jedem Rausschicken auch irgendetwas im Empfangsregister sein.
Viele Grüße