mikrocontroller.net

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


Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.