SPI-Schnittstelle auf CC430 will nicht mit mir reden

OP #2590467
Lesenswert?

Ich brauche mal Hilfe beim benutzen der SPI-Schnittstelle auf meinem 
CC430F6135. Ich versuche die 2. serielle Baugruppe UCB0 zu verwenden. 
Das Problem ist, das die Port-Pins für MOSI und SCLK einfach nur auf GND 
bleiben. Ich verwende das Standard-Mapping P1.2=SOMI, P1.3=SIMO, 
P1.4=CLK. Diese Einstellungen habe ich auch im Mapping-Register geprüft, 
das stimmt (0x01ca=20=PM_UCB0SOMI, 0x01cb=21=PM_UCB0SIMO, 
0x01ca=22=PM_UCB0CLK).
Hier mal meine Initialisierung:
1
#define SPI_USCIB0_PortSEL     P1SEL
2
#define SPI_USCIB0_PortDIR     P1DIR
3
#define SPI_USCIB0_MOSI        (1<<3)
4
#define SPI_USCIB0_MISO        (1<<2)
5
#define SPI_USCIB0_UCLK        (1<<4)
6
void SPI_init(void)
7
{
8
  UCB0CTL1 |= UCSWRST;
9
  SPI0_CS_HIGH();
10
  SPI0_CS_PORT();
11
  UCB0CTL0 |= UCMODE_2+UCMST+UCCKPL+UCMSB+UCSYNC;    /* SPI master */
12
  UCB0CTL1 |= UCSSEL_2;
13
  UCB0BR0 = 0x01;                          
14
  UCB0BR1 = 0;
15
  SPI_USCIB0_PortSEL |= SPI_USCIB0_MOSI | SPI_USCIB0_MISO | SPI_USCIB0_UCLK;
16
  SPI_USCIB0_PortDIR |= SPI_USCIB0_MOSI | SPI_USCIB0_UCLK;
17
  UCB0CTL1 &= ~UCSWRST;
18
}
19
u8 SPI_TxRxByte(u8 Data)
20
{
21
  UCB0TXBUF=Data;
22
  while(UCB0STAT & UCBUSY);                    /* Wait for RX to finish */
23
  return (UCB0RXBUF);
24
}
Muss ich noch irgendwas einschalten? Clk für die UCB0? Was hab ich 
vergessen?
Nochmal das Problem: die CLK und MOSI-Leitung bleiben auf GND und 
bewegen sich nicht. Beim Verwenden der RxTx-Funktion ist das BUSY-Flag 
nicht (mehr) gesetzt.
Danke.

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