Forum: Mikrocontroller und Digitale Elektronik Problem mit CC2420 und MSP430


von John (Gast)


Lesenswert?

Ich will mit der AppNote von TI (RF Blinking LED) den CC2420 ansteuern.

Allerdings kann ich nichts aus dem Chip auslesen. Die Software bleibt in 
folgender Routine hängen.
1
void halRfWaitForCrystalOscillator(void)
2
{
3
    UINT8 spiStatusByte;
4
5
    // Poll the SPI status byte until the crystal oscillator is stable
6
    do {
7
      DISABLE_GLOBAL_INT();
8
        FASTSPI_UPD_STATUS(spiStatusByte);
9
      ENABLE_GLOBAL_INT();
10
    } while (!(spiStatusByte & (BM(CC2420_XOSC16M_STABLE))));
11
12
} // halRfWaitForCrystalOscillator

Jemand eine Idee?

Grüsse
John

von Christian R. (supachris)


Lesenswert?

Ist der 16MHz Quarz denn richtig angeschlosse? Quarze dran? 
Spannungsregler der CC2420 aktiviert? Liegen die 1,8V an? Nutzt du ein 
Evaluation Board oder ein selbst gemachtes?

von John (Gast)


Lesenswert?

Nein, am CC2420 sollte es nicht liegen. Ist ein Eval-Board.
Die 1.8V liegen auch an.

von Christian R. (supachris)


Lesenswert?

Dann ist die SPI Kommunikation noch nicht richtig. Hast du das 
Header-File entsprechend angepasst?

von John (Gast)


Lesenswert?

Das hab ich auch vermutet. Den Header hab ich angepasst. Bin aber nicht 
sicher ob alles richtig ist. Auf der Clock Leitung kommen immer kurze 
Strobes raus (100kHz).

Auf der MOSI Leitung kommt eine konstante Frequenz von 5kHz raus.

Hier die SPI init. Habe eigentlich nur nur die Ports geändert. Und den 
UART von 1 auf 0.
1
void halSpiInit(void)
2
{  
3
  U0CTL  = CHAR + SYNC + MM + SWRST;  // SW  reset, 8-bit transfer, SPI master
4
  U0TCTL = CKPH + SSEL1 + STC;      // Data on Rising Edge, SMCLK, 3-wire
5
6
  U0BR0  = 0x02;                   // SPICLK set baud
7
  U0BR1  = 0;                         // Dont need baud rate control register 2 - clear it
8
  U0MCTL = 0;                       // Dont need modulation control
9
10
  P3SEL= BIT3;        // Select Peripheral functionality (SPI clock)
11
        P2SEL= BIT4+BIT5;                       // Select Peripheral functionality (SI,SO)
12
  P2DIR= BIT4+BIT6;          // Configure as outputs(SIMO,CSn)
13
        P3DIR= BIT3;  
14
  
15
  ME1   |= USPIE0;                // Module enable
16
  U0CTL &= ~SWRST;                  // Remove RESET
17
} // SpiInit

Auch bei den restlichen Initialisierungen hab ich eigentlich nur die 
Ports geändert.

VREG_EN/RESET/FIFO/FIFO_P hab ich von Port 2 auf Port 1 geändert (Der 
hat ja auch einen External Interrupt).

Grüsse John

von Christian R. (supachris)


Lesenswert?

Was für einen MSP verwendest du denn genau?

von John (Gast)


Lesenswert?

MSP430FG439

von Christian R. (supachris)


Lesenswert?

Hmm...so ein neuer, na gut, da ist alles bissl anders. Sicher, dass die 
USART da genauso angesprochen wird? Hat der nicht schon diese USCI drin?

von John (Gast)


Lesenswert?

Ich kenne die alten leider nicht.

USCI ist so ein zusätzliches Modul welches als USART, SPI oder I2C 
konfiguriert werden kann. Die bisherigen USART register sind aber immer 
noch vorhanden.

von Christian R. (supachris)


Lesenswert?

Jo, da weiß ich nicht so genau. Da musst du eben debuggen. Mal die SPI 
Routine anschauen, ob die wirklich 100% kompatibel zum neuen USCI Modul 
ist.

von John (Gast)


Lesenswert?

Jo danke... Dann wer ich mal schauen.

Kannst du sagen ob diese 100kHz Clock Strobes welche in der "void 
halRfWaitForCrystalOscillator(void)" rauskommen ok sind? Bei der MOSI 
Leitung müsste doch die Adresse anliegen welche den Status des CC2420 
abfragt... ist das richtig so?

von Christian R. (supachris)


Lesenswert?

Also 100kHz klingt bissl wenig. Mit welcher Taktfrequenz läuft denn dein 
MSP430? Die Funktion schickt ja ständig ein oder 2 Byte an den CC2420, 
die solltest du auf MOSI sehen können. Falls der CC antwortet, solltest 
du das auf SOMI sehen.

von Christian R. (supachris)


Lesenswert?

So, jetzt hab ich mal im datenblatt geschaut. Du musst die SPI 
Schnittstelle schon richtig beschalten. USART0 im SPI Mster Modus ist 
P3.1 bis P3.3
Du hast P2.4 und 2.5 genommen, das ist aber im UART Modus.

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.