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!
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.