Hallo
Ich bin nun auf die SSP umgestiegen
Master (LPC2148) und Slave (LPC2148)
Das Senden von Daten vom Master zum Slave funktioniert einwandfrei.
Möchte ich jedoch Daten vom Slave empfangen, dann wird - soweit ich es
aktuell sehe - das erste Datenbyte vom Master mehrmals gelesen.
Die Receive-Routine beim Master sieht so aus:
1 | unsigned char SpiReceiveByte( void )
|
2 | {
|
3 | unsigned char incoming;
|
4 |
|
5 | while( !(SSPSR & (1<<TNF)) ) ;
|
6 | SSPDR = 0xFF; /* wrtie dummy byte out to generate clock, then read data from MISO */
|
7 | while( !(SSPSR & (1<<RNE)) ) ;
|
8 | incoming = SSPDR;
|
9 | return(incoming);
|
10 | }
|
Die Sende-Routine beim Slave sieht so aus:
1 | unsigned char SpiSendByte(unsigned char outgoing)
|
2 | {
|
3 | unsigned char incoming;
|
4 |
|
5 | while( !(SSPSR & (1<<TNF)) ) ; // wait until at least one byte if free in Fifo-Buffer
|
6 | SSPDR = outgoing;
|
7 | while( !(SSPSR & (1<<RNE)) ) ; // receive buf not empty
|
8 | incoming = SSPDR;
|
9 | return(incoming);
|
10 | }
|
Beide Schnittstellen sind mit fClk = 333333 Hz initialisiert. CPOL = 0;
Hat jemand vielleicht eine Idee woran es liegen könnte
Vielen Dank und beste Grüsse
Geri