Forum: Mikrocontroller und Digitale Elektronik MSP430 SPI Bitveschiebung


von anfänger (Gast)


Lesenswert?

Hallo Leute,

Ich nutze einen MSP430F2132 als Slave am SPI BUS. Master ist ein anderer 
IC. Clock ist 100 kHz. Wiederholungsrate 1ms.

Leider ist bei mir das Ergebnis immer um 1 bit verschoben. Also wenn ich 
als Slave was in den SPI Buffer schreibe kommt das ganze um 1 Bit 
verschoben wieder an. Am Master liegt es wohl nicht..

Hier mein Code

Initialisierung...
...
UCB0CTL0 |= (UCSYNC+UCMSB+UCMODE_2+UCCKPL+UCCKPH);//UCCKPL//UCCKPH
  while (!(IFG2 & UCB0TXIFG));
  UCB0CTL1 &= ~UCSWRST;
  IE2 |= (UCB0RXIE+UCB0TXIE);
  __enable_interrupt();
..

und die ISR:
 #pragma vector = USCIAB0TX_VECTOR
__interrupt void  USCI0TX_ISR (void)
{
  P1OUT ^= 0x04;
  UCB0TXBUF=0xfE;
}

Ich schreibe also immer 1111 1110 rein
als ergebnis im RXBUFFER bekomme ich 0111 1111

Hab alle 4 SPI Modi schon ausprobiert...

von deg_gast (Gast)


Lesenswert?

Versuche mal ein anderes Bitmuster zu senden. Bei Deinem Beispiel könnte 
es sich auch um ein Endian Problem handeln.

von anfänger (Gast)


Lesenswert?

Das hab ich auch schon probiert..
Es sieht so aus, als ob das MSB immer zum LSB des nächsten Bytes wird, 
also als ob im allererste Frame nur 7 statt 8 bits gesendet werden.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Falsche Polarität des Taktsignales?

von anfänger (Gast)


Lesenswert?

nee wie gesagt hab ich alle 4 modi getestet...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.