PIC SPI Master Slave

Gast #2115852
Lesenswert?

Hi,
ich benutze zwei PIC18F4550 zur Kommunikation via SPI. Der Master kann 
Daten an den Slave senden, was aber zurueckkommt ist nicht so gewollt.
Ich will dass der Slave den Empfang mit z.B. 0x99 bestaetig, das klappt 
aber nicht, es wird immer irgendwas empfangen.
Master:
1
                CS = 0; // Begin
2
    SSPBUF = 0x33;
3
    while (!SSPSTATbits.BF); // Wait until receive buffer full
4
    receive = SSPBUF; // Copy data to variable
5
    CS = 1; // End

Slave:
1
    while (1)
2
    {
3
      if(SSPSTATbits.BF) // 
4
      {
5
        receive = SSPBUF;  /a
6
              SSPBUF = dummy; // Send ok back (0x99) 
7

8
      }
9
        if (SSPCON1bits.WCOL)
10
      {
11
        SSPCON1bits.WCOL = 0;
12
      }
13
      if (SSPCON1bits.SSPOV)
14
      {
15
        SSPCON1bits.SSPOV = 0;
16
      }
17
    }
#2116346
Lesenswert?

SPI ist zwangsweise eine Vollduplex Kommunikation, es wird immer 
gleichzeitig gesendet und empfangen.

Der Master muss nach dem Schreiben der Daten an den Slave mindestens so 
lange warten, bis dieser die Antwort in sein SPI-Datenregister 
geschrieben hat.
Erst danach ist noch ein Dummybyte fällig, während dessen Aussendung 
gleichzeitig die Antwort eingelesen wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren