Hallo,
ich wollte mal neben der Theorie in der Uni mich ein wenig mit dem
MSP430 beschäftigen und der ez430-CC2500 wurde es dann. Uart an den PC
klappt wunderbar und die LEDs blinken auch :).
Jetzt wollt ich den CC2500 über SPI ansteuern.
Die Initalisierung hab ich aus dem SimpliciTI genommen und eigentlich
alles überprüft. Ich wollte mal Fragen ob mir jemand Helfen kann, weil
ausgelesen aus den Statusregistern des CC2500 klappt damit nicht.
Ich wollte zum Testen eifnach die Seriennummer des CC2500 auslesen.
Klappt damit aber nicht und ich komme nicht weiter.
Vielen Dank.
1 | #define nSS P3OUT_bit.P3OUT_0
|
2 | #define MISO P3IN_bit.P3IN_2
|
3 |
|
4 | void init_SPI() {
|
5 |
|
6 | UCB0CTL1 = UCSWRST;
|
7 | UCB0CTL1 = UCSWRST | UCSSEL1;
|
8 | UCB0CTL0 = UCCKPH | UCMSB | UCMST | UCSYNC;
|
9 | UCB0BR0 = 2;
|
10 | UCB0BR1 = 0;
|
11 | P3OUT_bit.P3OUT_0 = 1;
|
12 | P3DIR_bit.P3DIR_0 = 1;
|
13 | P3SEL = 0x0E;
|
14 | UCB0CTL1 &= ~UCSWRST;
|
15 | }
|
16 |
|
17 | uint8 read_SPI(uint8_t addr)
|
18 | {
|
19 |
|
20 | uint8 recieve;
|
21 |
|
22 | nSS = 0; // Chip Select
|
23 | while(MISO); // Warten bis CC2500 MISO low zieht
|
24 | UCB0TXBUF = addr; // Addresse in Register laden
|
25 | while(!(IFG2 & UCB0RXIFG)); // Warten bis empfangen fertig
|
26 | recieve = UCB0RXBUF; // Dummy mal auslesen
|
27 | UCB0TXBUF = addr; // Dummy reinschreiben
|
28 | while(!(IFG2 & UCB0RXIFG)); // Warten bis was ankommt
|
29 | recieve = UCB0RXBUF; // Auslesen!
|
30 | nSS = 1; // Chip Select
|
31 | return(recieve);
|
32 | }
|