Gast
#4445996
Hallo, ich hätte da mal eine Frage zur SPI, ohne das jetzt durch Messungen zu unterlegen habe ich mal "ausprobiert". Zwei Routinen, eine Transfer und eine die nur sendet. SPI_SendByte funktioniert in der Kommunikation mit einem Gerät, welches mehrere Bytes empfängt NUR dann, wenn ich while(!SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)); als Blocker einfüge. Obwohl nur gesendet wird muss ich warten, bis das Receive Bit gesetzt wurde. Das Abfragen des BSY Bit allein genügt nicht, dann fehlen Zyklen. Ich habe die SPI als "Master_2_Lines MISO/MOSI" konfiguriert. D.h. nicht als "1 Line MOSI". Aber eigentlich dürfte das keinen Unterschied machen, ich hole das DR Register sowieso nicht lesend ab. Kann mir jemand erklären warum das so ist? PS: Ich möchte eigentlich für alles, wo nur gesendet wird auch die passende Konfiguration verwenden, ebenso bei Transfers mit Empfang. Muss ich da jedesmal den Initstruct vor jedem Datensatz neu aufrufen, um die SPI neu zu konfugurieren? Bisschen heftig... Gruss, Christian
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
