MSP430 Quarz

Gast #3552106
Lesenswert?

Hallo

Ich mache gerade meine ersten Schritte mit einem MSP430 , ich habe nun 
eine Frage bezüglich dem mitgelieferten Beispiel von TI.
Bei dem Code handelt es sich um ein einfachen Echo-UART , also alles was 
ich dem MSP sende schickt er umgehend zurück.

Nun steht am Anfang des Codes gleich ein Hinweis.

//* An external watch crystal between XIN & XOUT is required for ACLK 
*//

Ich benutze das MSP-TS430PN80 Pinout Board von TI , auf diesem Board ist 
kein externes Quarz drauf , ich hab mal ein Bild vom Schaltplan des 
Boards hochgeladen.
Wenn ich es richtig verstanden habe muss ich ein externes Quarz bei 
LFXTCLK also zwischen XIN/XOUT einbauen.

Welches Quarz nehme ich da am besten ? Funktioniert die UART überhaupt 
nicht ohne ext.Quarz ?Welches Quarz verwenden sie in diesem Beispiel ?
1
/  MSP-FET430P430 Demo - USART0, 9600 UART Echo ISR, DCO SMCLK
2
//
3
//  Description: Echo a received character, RX ISR used. Normal mode is LPM0.
4
//  USART0 RX interrupt triggers TX Echo.
5
//  Baud rate divider with 1048576hz = 1048576Hz/9600 = ~109.23 (06Dh|03h)
6
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
7
//  //* An external watch crystal between XIN & XOUT is required for ACLK *//
Angehängte Dateien:
Persönliche Seite #3552120
Lesenswert?

Prinzipiell funktioniert die UART auch mit dem DCO als Taktquelle, 
allerdings ist der bei den älteren MSP430-Varianten nicht ausreichend 
stabil, um eine zuverlässige Kommunikation mit einem angeschlossenen PC 
hinzubekommen.


Es gibt von TI eine Musterapplikation, bei der der ungebaue DCO mit 
einem 32kHz-Uhrenquarz stabilisiert wird. Ansonsten kannst Du jeden 
normalen Quarz verwenden, der im vom von Dir verwendeten MSP430 
unterstützten Frequenzbereich liegt -- bei den alten sind das 8 MHz.

Ein spezieller "Baudratenquarz" ist nicht erforderlich, da selbst die 
UART in den alten MSP430 einen flexibleren Baudratengenerator hat als 
die hier im Forum sonst gerne verwendeten Atmel-AVRs.

Anstelle eines Quarzes kannst Du auch einen Quarzoszillator verwenden, 
der dann nur an XIN angeschlossen wird, der Pin XOUT kann dann 
anderweitig genutzt werden.


Solltest Du einen halbwegs neuzeitlichen MSP430 haben (was man daran 
erkennt, daß er zusätzlich zum 4-Draht-JTAG auch SBW unterstützt), dann 
ist aber der DCO so stabil, daß ein Quarz nicht unbedingt nötig ist.

Welchen MSP430 verwendest Du? Daß Du dieses "Pinout Board" verwendest, 
lässt mich böses ahnen, das Ding wurde gerne für die steinalten 
'F1xx-Varianten verwendet (obwohl es auch da völlig unnötig war).
Gast #3552134
Lesenswert?

Hallo

Vielen Dank für die schnelle Antwort.
Ich benutze den MSP430FG439.Ich benutze nur den Beispielcode von TI und 
dort ist mir der Hinweis direkt aufgefallen.
Kann ich den 430FG439 auch ohne externes Quarz für UART benutzen , falls 
ja muss ich doch bestimmt den Code anpassen ?
Hier mal der Beispielcode:
1
//******************************************************************************
2
//  MSP-FET430P430 Demo - USART0, 9600 UART Echo ISR, DCO SMCLK
3
//
4
//  Description: Echo a received character, RX ISR used. Normal mode is LPM0.
5
//  USART0 RX interrupt triggers TX Echo.
6
//  Baud rate divider with 1048576hz = 1048576Hz/9600 = ~109.23 (06Dh|03h)
7
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
8
//  //* An external watch crystal between XIN & XOUT is required for ACLK *//  
9
//
10
//                MSP430FG439
11
//             -----------------
12
//         /|\|              XIN|-
13
//          | |                 | 32kHz
14
//          --|RST          XOUT|-
15
//            |                 |
16
//            |       P2.4/UTXD0|----------->
17
//            |                 | 9600 - 8N1
18
//            |       P2.5/URXD0|<-----------
19
//
20
//
21
//  M. Buccini
22
//  Texas Instruments Inc.
23
//  Feb 2005
24
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A
25
//*****************************************************************************
26
#include <msp430.h>
27

28
int main(void)
29
{
30
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
31
  FLL_CTL0 |= XCAP18PF;                     // Configure load caps
32
  P2SEL |= 0x30;                            // P2.4,5 = USART0 TXD/RXD
33
  ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD
34
  UCTL0 |= CHAR;                            // 8-bit character
35
  UTCTL0 |= SSEL1;                          // UCLK = SMCLK
36
  UBR00 = 0x6D;                             // 1MHz 9600
37
  UBR10 = 0x00;                             //
38
  UMCTL0 = 0x03;                            // Modulation
39
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
40
  IE1 |= URXIE0;                            // Enable USART0 RX interrupt
41
  P2DIR |= 0x10;                            // P2.4 output direction
42

43
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
44

45

46
       while(1)
47
    {
48
      while (!(IFG1 & UTXIFG0));  
49
        TXBUF0 = 99;
50
     __delay_cycles(500000);
51
    }
52

53
}

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