Forum: Mikrocontroller und Digitale Elektronik LPC23xx UART fractional devider framing error


von Florian (Gast)


Lesenswert?

Hallo,

Ich arbeite mit dem UART eines LPC2387, dabei möchte ich eine Baudrate 
von 2Mbit/s erreichen. Dies lässt sich nur einstellen mit den 
Fractional-Registern, da es sich um eine „ungerade“ Baudrate handelt. 
Der Sender sendet auch mit dieser Baudrate (mit Oszi gemessen). Gesendet 
wird jede Sekunde ein Byte (Ziffern von 0-9). Allerdings kommen beim 
Empfänger falsche Werte an und es wird durchgehend ein „framingError“ 
und eine „error in RX“ erkannt. Sender und Empfänger haben die gleiche 
UART Konfiguration, die Hardware ist auch dieselbe (auch schon 
umgedreht). Die Kommunikation funktioniert ohne den fractionaldevider 
bei 2,55Mbit/s problemlos. Mit fractionaldevider funktioniert die 
Kommunikation z.B. bei 0.5Mbit/s, nicht aber bei 1Mbit/s.

Interessant ist auch was erkannt wird:

gesendet empfangen

110000  1100000
110001  1100001
110010  1100010
110011  1100011
110100  1100100
110101  1100101
110110  1100110
110111  1100111
111000  1111000
111001  1111001

Es handelt sich um den UART1, er arbeitet mit einer Frequenz von 36MHz, 
ich habe allerdings auch schon 72MHz ausprobiert --> gleiches Problem. 
Meine errechneten Werte für die Register sind:

DLM=0, DLL=1, Divaddval=1, Mulval=8

Alle andere Peripherie (außer Timer0 und UART0 sind abgeschaltet). Ich 
habe schon versucht, das Stopbit von 1 auf 2 zu setzen, hat allerdings 
nichts geändert.

NXP schreibt auf meine Anfrage leider nur, dass es am framing error 
liegt, aber wie kann ich diesen beheben? Würde es was nützen, wenn ich 
am Empfänger mit Autobaud arbeite? Ich wäre dankbar für Denkanstöße…

Liebe Grüße
Florian

von Florian (Gast)


Lesenswert?

Okay, Problem zwar nicht gelöst, aber wenn mal jemand das selbe Problem 
haben sollte, im Datenblatt gibt es eine sehr kurze Passage:

Important: If the fractional divider is active (DIVADDVAL > 0) and DLM = 
0, the value of the DLL register must be 3 or greater. (UM23xx Seite 450 
of 706)

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.