MSP430: Maximale Taktfrequenz mit internem Oszi

#800629
Lesenswert?

Die FLL+ im FG439 ist recht umfangreich und hat mehrere Register. Nicht 
ganz trivial einzustellen, da solltest du dir mal die Demos von TI 
angucken, da müsste ein Code-Beispiel dabei sein. Der Prozessor kann 
maximal mit 8Mhz laufen, egal, was man am FLL+ einstellen kann. Für die 
8MHz muss aber die Betriebsspannung 3,6V betragen. Für die FLL+ benutzt 
man am besten einen Uhrenquarz als Referenz und stellt die Register dann 
auf ein Vielfaches der 32,768kHz ein.
Gast #800658
Lesenswert?

Hab folgendes Code-Beispiel gefunden:
1
//******************************************************************************
2
//  MSP-FET430P430 Demo - FLL+, Runs Internal DCO at 8MHz
3
//
4
//  Description: This program demostrates setting the internal DCO to run at
5
//  8MHz with auto-calibration by the FLL+.
6
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO = (121+1) x 2 x ACLK = 7995392Hz
7
//  //* An external watch crystal between XIN & XOUT is required for ACLK *//  
8
//
9
//                 MSP430FG439
10
//             -----------------
11
//         /|\|              XIN|-
12
//          | |                 | 32kHz
13
//          --|RST          XOUT|-
14
//            |                 |
15
//            |             P1.1|--> MCLK = 8Mhz
16
//            |                 |
17
//            |             P1.5|--> ACLK = 32kHz
18
//            |                 |
19
//
20
//  M. Buccini
21
//  Texas Instruments Inc.
22
//  Feb 2005
23
//  Built with IAR Embedded Workbench Version: 3.21A
24
//******************************************************************************
25
#include  <msp430xG43x.h>
26

27
void main(void)
28
{
29
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
30
  SCFI0 |= FN_4;                            // x2 DCO freq, 8MHz nominal DCO
31
  SCFQCTL = 121;                            // (121+1) x 32768 x 2 = 7.99 Mhz
32
  FLL_CTL0 |= DCOPLUS + XCAP18PF;           // DCO+ set so freq= xtal x D x N+1
33
  P1DIR = 0x22;                             // P1.1,5 to output direction
34
  P1SEL = 0x22;                             // P1.1,5 to output MCLK & ACLK
35

36
  while(1);                                 // Loop in place
37
}


Was ich nicht ganz Check... oben steht "Runs Internal DCO at 8MHz". 
Gleichzeitig wird aber bei XIN/XOUT ein 32kHz Quarz angehängt. Ist 
dieses Beispiel nun mit externem oder internem oszi?

danke
klaus
Gast #800678
Lesenswert?

> Ist dieses Beispiel nun mit externem oder internem oszi?
Ich würde mal sagen beides. In der Regel wird der externe 32kHz dazu 
benutzt den internen exakt einzustellen. Ich nehme mal an das das bei 
diesem Beispiel auch so ist (// (121+1) x 32768 x 2 = 7.99 Mhz)
#800718
Lesenswert?

Genau so ist es. Wobei die FLL+ noch bissl besser ist als der DCO. Durch 
die Regelschleife muss man das nicht nachstellen, der stellt sich 
automatisch immer auf das Vielfache des Quarzes ein. Und ist deshalb 
annähernd so genau wie der Quarz selber. Geht auch ganz ohne Quarz, dann 
aber mit recht viel Temp- und Vcc abhängigem Drift.
Gast #800728
Lesenswert?

Hab den jetzt mal nach dem Beispiel eingestellt. Aber mein SPI clock ist 
immer noch so langsam. Ca. 5kHz und auch kein schöner Rechteck. Es 
werden so komische positive und negative Flanken ausgegeben.

Die Register für den SPI-Takt hab ich folgendermassen initialisiert:

 UBR00 = 0x02;                         // UCLK/2
 UBR10 = 0x00;


Müsste dann doch bei einem CPU-Clock von 4MHz ein 2MHz Takt ergeben. Und 
nicht 5kHz...
Gast #801171
Lesenswert?

Der MSP430 hat grundlegend 3 Takt-"Stränge".
- ACLK
- MCLK
- SMCLK
ACLK und SMCLK sind eigentlich überall verfügbar. Daneben gibt es noch 
Peripherie bezogene Taktquellen wie eben der UCLKI.
Für den Anfang solltest du für dein SPI den SMCLK nehmen. Ist das 
einfachste.
Gast #802144
Lesenswert?

>Womit misst du das eigentlich?
Mit einem KO, das stimmt schon.


>Ist denn der
>Uhrenquarz richtig angeschlossen und hat er auch wirklich 32,768kHz?

Wie gesagt, ich hab kein Uhrenquarz. Ich wollte ihn nur mit internem 
Oszi takten. Geht das überhaupt bei der Frequenz? Wie hoch kann ich ihn 
denn maximal intern takten?
#802153
Lesenswert?

Achso, ohne Uhrenquarz kannst du das obige Beispiel natürlich nicht 
verwenden. Da musst du dich wohl durch den User Guide wühlen, und 
schauen, wie man den DCO ohne den Quarz als Referenz einstellt. 
Prinzipiell geht der DCO bis 56Mhz oder sowas einzustellen, allerdings 
geht die CPU nur bis 8MHz. Ich hab auf die Schnelle jetzt aber keinen 
Beispielcode dafür gefunden. Ohne Quarz ist das aber eh wahnsinnig 
ungenau, schau mal bloß ins Datenblatt auf Seite 31, wie die Toleranzen 
angegeben sind.

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