Forum: Mikrocontroller und Digitale Elektronik SPI-Schnittstelle auf CC430 will nicht mit mir reden


von Rangi J. (rangi)


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.

von Rangi J. (rangi)


Lesenswert?

Keiner eine Idee?

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.