Forum: Mikrocontroller und Digitale Elektronik MSP430F5510 XT2 für MCLK und USB


von Tobias B. (xaser)


Lesenswert?

Hi zusammen,

ich sitze gerade am Schaltplan für mein MSP430F5510 board und mir ist 
beim durchlesen der verschiedenen Datenblätter und User Guides folgendes 
aufgefallen:


Normalerweise hatte ich vorgehabt, an XT2 einen 20MHz quartz mit 2 47p 
Kondensatoren anzuschließen, und damit meine MCLK zu füttern, da ich für 
mein Bit-Banging Protokoll gerne eine möglichst stabile Taktrate hätte. 
XT1 unterstützt keine High Frequency Oszillatoren.

Allerdings braucht auch der USB Teil des Chips einen mind. 4-MHz 
Kristall an XT2, damit das deserialisieren von Paketen und der BSL 
funktionieren.

Ich konnte herausfinden, dass man mit verschiedenen Bits XT2 für USB 
teilen kann, allerdings nicht, ob das auch mit 20Mhz geht, in der 
Tabelle waren nur relativ krumme werte angegeben.

Kennt sich da jemand mit aus?

MfG, Tobi

von Arduino-Boy (Gast)


Lesenswert?

>XT1 unterstützt keine High Frequency Oszillatoren

Wozu auch? Die Dinger wurden nicht entworfen, um ständig am Anschlag zu 
Laufen sondern nach getaner Arbeit in einen Low-Power Modus versetzt zu 
werden. Ein mitlaufender 20MHz Oszillator würde das Stromsparkonzept des 
MSP430 torpedieren.

An XT2 muss also ein 4MHz Quarz wenn USB im Gebrauch und an XT1 kommt 
ein 32kHz Uhrenquarz aus dem man per Software die gewünschte 
Arbeitsfrequenz generiert.

MSP430F55xx_USC_10.c aus slac300d.zip (TI Beispiele zum MSP430F55xx) 
zeigt wie mans macht.

  UCSCTL3 = SELREF_2;      // Set DCO FLL reference = REFO
  UCSCTL4 |= SELA_2;       // Set ACLK = REFO

  __bis_SR_register(SCG0); // Disable the FLL control loop
  UCSCTL0 = 0x0000;        // Set lowest possible DCOx, MODx
  UCSCTL1 = DCORSEL_7;     // Select DCO range 50MHz operation
  UCSCTL2 = FLLD_1 + 762;  // Set DCO Multiplier for 25MHz
                           // (N + 1) * FLLRef = Fdco
                           // (762 + 1) * 32768 = 25MHz
                           // Set FLL Div = fDCOCLK/2
  __bic_SR_register(SCG0); // Enable the FLL control loop

Hier wird aus einem an XT1 angeschlossenen Uhrenquarz eine 25MHz 
Arbeitsfrequenz generiert.

von Tobias B. (xaser)


Lesenswert?

Hi!

Danke für die Antwort, anscheindend lernt man nie aus :) Das Prinzip mit 
dem Stabilisieren des DCO über einen externen Quartz war mir so noch 
nicht bekannt, vermutlich habe ich deswegen ich das im Datenblatt wohl 
auch einfach überlesen.


In dem Code Beispiel müsste man dann vermutlich nur abändern, dass X1 
als FLL Reference genommen wird, nicht REFO.

Eigentlich ein tolles Prinzip, somit kann ich auch später noch 
auswählen, ob ich 20MHz oder 25 haben will.

Danke vielmals :)

MfG, Tobi

von Hatchi (Gast)


Lesenswert?

Tobias B. schrieb:

>
> Eigentlich ein tolles Prinzip, somit kann ich auch später noch
> auswählen, ob ich 20MHz oder 25 haben will.

Ist ja auch eine aktuelle Architektur. Der MSP wird hier neben den alten 
AVRs nicht richtig wahrgenommen.

von Tobias B. (xaser)


Lesenswert?

Tatsächlich habe ich mich jetzt doch noch einmal umentschieden:

Ich werde wohl einen 24MHz Quartz an XT2 anschließen, und darüber USB 
und MCLK versorgen, auch wenn mir 20MHz besser in den kram gepasst 
hätte. Allerdings kann ich ja auch vielleicht eine andere mit dem USB 
BSL kompatible Frequenz nehmen und dann über FLL den DOC stabilisieren 
und somit beides erreichen, mit nur einem Quarz.

Beides geht, das ist das tolle am MSP430, was ich mache, werde ich noch 
sehen :)

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.