UART vom LPC (ARM7)

Gast #311212
Lesenswert?

Ich nutzt bei meinem uC den UART1 mit alles RS232 Leitungen.
Da ich aber nur RxD, TxD und RTS brauche habe ich eben diese im Pinsel0
freigeschatet (0x150000)

Nun habe ich aber eine Frage zu RTS die ich mir aus dem DAtenblatt und
aus dem Internetwisen nicht beantworten kann aber ich hoffe das einer
von euch es vielleicht weiß. Wahrscheinlich gilt das sowie so für alle
Rs232 allgemein.

Ich sende nun einen ganzen String über den Uart, z.B. "TEST". Wird
das RTS automatisch gesetzt oder wird es bei jedem Zeichen erneut auf
low gezogen? oder ist es für den gesamten Sendevorgang auf low? und
wird erst wieder high Pegel wenn der gesammte String gesendet wurde?

Wenn das nicht automatisch verarbeitet wird wäre es dann nicht
sinnvoller einen ganz normalen Autgang als RTS zu deklarieren und den
dann jeweils ob gesendet oder empfangen wird mit IOset oder IOclr wie
gewünscht zu definieren?

Ich hoffe die Frage ist verständlcih gestellt. Ich habe auch versucht
dieses Problem mit meinem Ozzi zu lösen aber das hat für den RTS
Channel immer so ein nihct eindeutig in die eine oder Andere richtung
zu interpretierendes Signal geliefert, es ist hat schon alt und hat die
besten TAge schon hinter sich ;-)

Grüße und eine gute Nacht
wünscht euch
BoB
Persönliche Seite #311214
Lesenswert?

RTS wird gar nicht automatisch gesetzt oder zurückgenommen, darum musst
Du Dich schon selbst kümmern.

Mehr sollte im Datenblatt des 16550 (das ist nämlich die UART, die in
der LPC21xx-Reihe Verwendung findet) beschrieben stehen.
Die Beschreibung des RTS-Signales im Philips-Datenblatt ist ziemlich
irreführend.

Üblicherweise wird RTS verwendet, um der Gegenstelle
Empfangsbereitschaft zu signalisieren, während der Eingang CTS von der
Gegenstelle kommt und deren Empfangsbereitschaft mitteilt - und also
sinnvollerweise mit RTS kreuzweise verbunden wird.

In der einfachen 8250-kompatiblen Betriebsart (ohne Sende/Empfangsfifo)
können die Handshakeeingänge nur zur Erzeugung von Interrupts verwendet
werden (über U1IER festgelegt).

Im Auto-RTS-Modus wird die RTS-Leitung über den Füllstand des
Empfangsfifos gesteuert. Ist das Empfangsfifo voll (genauer: der
eingestellte "Trigger level" erreicht, so wird RTS deaktiviert, um
der Gegenstelle mitzuteilen, daß sie jetzt mit dem Senden aufhören
soll.

Im Auto-CTS-Modus werden im Sendefifo stehende Daten nur dann gesendet,
wenn CTS aktiv ist, ansonsten wird gewartet.

Die 16550 ist die Standard-UART, wie sie in jedem PC verbaut ist.

Hoffe, daß das Dir ein wenig Klarheit verschafft hat.
Gast #311216
Lesenswert?

Wird die AutoRTS-Funktion von allen Philips LPC2000 unterstützt? Bei
214x und 2103 wird's ja immerhin noch erwähnt, wenn auch konsequent
nicht an der richtigen Stelle, Bei den älteren Typen steht absolut
garnichts darüber drin
Gast #311220
Lesenswert?

;-0  Dieter
OOOpps kompatibel zu sein mit sagen wir mal mehreren hundert Millionen
PCs ist eine ueble und billige Notloesung!?
Naja, scheint auch eine Moeglichkeit zu sein die Sache zu sehen.

Was haettest Du denn gerne fuer Zusatzfunktionen im UART?

Robert
Persönliche Seite #311221
Lesenswert?

Was manche Leute vermissen, ist die Möglichkeit der 9-Bit-Übertragung,
wie sie beispielsweise von der UART aus der MCS51-Reihe her bekannt
ist.
Auch schön wäre eine Unterstützung für externe RS485-Transceiver, wie
sie beispielsweise in den UARTs von Oxford Semiconductor implementiert
wird (da wird -programmierbar- eine Handshakeleitung genau solange
aktiviert, wie die UART sendet).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren