Forum: Mikrocontroller und Digitale Elektronik baudrate berechnen auf LPC2134


von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Hallo Leute,

entweder sehe ich den Wald vor lauter Bäumen nicht, oder ich bin einfach 
verwöhnt vom AVR und util/setbaud.h

Ich hab hier einen (ich weiss, uralten) LPC213x und möchte mal den UART 
in Betrieb nehmen. Nun ist die Baudraten-Berechnung da etwas komplexer, 
speziell wegen dem MULVAL & DIVADDVAL.

nicht dass ich diese (im betrieb) ändern möchte, aber ich würde schon 
gerne an einer zentralen Stelle (im Makefile oder wo auch immer) 
"BAUDRATE=57600" hinschreiben dürfen, und wer-auch-immer kümmert sich 
darum (unter Berücksichtigung von F_OSC = 11.0592MHz, PLL=5)

Ich nehme an es gibt eine ganz simple methode, das todelsicher zu 
erledigen, aber ich seh sich grad nicht...

Danke für Hinweise, auch RTFM-Pointer!

von Jim M. (turboj)


Lesenswert?

Die Aufgabe ist hinreichend nicht-trivial. Ich hatte vor Jahren mal 
Example Code von NXP.com runtergeladen wo das Setzen der Baudrate nicht 
klappt, allerdings für LPC17xx.

In der Praxis holt sich die Funktion die (hoffentlich korrekte) PCLK und 
rechntet sich MUL und DIV per brute-force aus. Dabei gab es ein paar 
Fallstricke zu beachten.

von Johannes S. (Gast)


Angehängte Dateien:

Lesenswert?

hier ist ein bisschen Beispielcode für den LPC2134 drin:
https://www.nxp.com/downloads/en/snippets-boot-code-headers-monitors/LPC213x_Family.zip
Im common/inc sind da komischerweise die Header für die 214x drin, das 
sieht nicht korrekt aus. Oder sind die beiden Familien da gleich? Das 
habe ich nicht verglichen.
In der Lernbetty von W.S. ist auch Code für die LPC2220, vielleicht ist 
da auch was zu verwerten.
Das LPCXpresso habe ich auch mal nach den 2134 Headern durchsucht, da 
sind aber tief versteckt nur wenige defines für die Register, gezippt 
ist das nicht viel und ich habe es mal hier angehängt.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Danke vielmals, das hilft mir weiter!

Aktuell ist das gar nicht wirklich ein Problem, und ich verstehe jetzt 
auch warum ich einen 11.0592MHz Quarz drauf habe ;-)

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.