Forum: Mikrocontroller und Digitale Elektronik Maximale RS232 Baudrate beim XMEGA


von Sebastian (Gast)


Lesenswert?

Hallo Jungs,

ich habe einen XMEGA und einen RS232 USB Converter von FTDI. Der RS232 
USB Converter kann maximal 3MBaud übertragen. Benötige tue ich jedoch 
"NUR" 2MBaud.

Ich habe einen Baudcalculator unter diesem Link gefunden:

http://www.avrcalc.elektronik-projekt.de/xmega/baud_rate_calculator

Wenn ich als XMEGA Takt 32MHz wähle und 2Mbps bei der baud rate dann 
erhalte ich die Parameter für die RS232 Konfiguration. Der Taktfehler 
liegt bei 0%.

Kann der XMEGA wirklich 2Mbps oder ist dies nur eine teoretische 
Tabelle? Wo liegt denn das maximale der RS232 Frequenz beim XMEGA

Wozu ist denn der normal/ double speed mode vorhanden? Wenn "normal" 
aktiviere dann erreiche ich keine 2Mbps bei der baud rate. Aktiviere ich 
den "double speed modus" dann erreich ich die 2Mbps bei der baud rate.

von Sebastian (Gast)


Lesenswert?

Im Datenblatt habe ich folgendes gefunden:

- Synchronous clock rates up to 1/2 of the device clock frequency
– Asynchronous clock rates up to 1/8 of the device clock frequency

Demnach bei Verwendung eines 32MHz Takts ergibt die 4Mbps oder 16Mbps 
bei er synchronen RS232. Jedoch habe ich die Taktleitung nicht am XMEGA 
angeschlossen :-)

von Udo S. (urschmitt)


Lesenswert?

Wenn es im Datenblatt steht dann sollte es auch funktionieren. Dir 
sollte allerdings bewusst sein, daß du dann nicht mehr viel Zeit 
dazwischen hast um die Daten zu erzeugen und zu verarbeiten.
Du solltest dir die Frage stellen brauche ich wirklich so viele Daten so 
schnell und kann ich das Drumherum ausser dem Senden auch noch 'in Time' 
erledigen.

von Sebastian (Gast)


Lesenswert?

Es ist mir schon bewust das dazwischen nicht mehr besonders viel Zeit 
bleibt.

Ich habe festgestellt das der BAUD RATE CALCULATOR nicht ganz richtig 
ist, denn bei 2Mbps zeigt er ohne double Speed keine gültigen Werte an, 
obwohl im Datenblatt beim XMEGA 256A3U auf Seite 302 steht das der 
normale modus bis 2Mbps und das sogar mit 0% Fehler

http://www.atmel.com/Images/doc8331.pdf

von Sebastian (Gast)


Lesenswert?

Bei 2Mbps bleiben ja immer noch 160 XMEGA Clock Takte um die Daten zu 
verarbeiten. Das sollte doch ausreichen.

von Wolfgang K. (opendcc)


Lesenswert?

Hallo,

bitte beachten, dass der FTDI die 2MBaud nicht kann. Dessen Grundtakt 
erlaubt 3M / (n+x), wobei bei n=1 kein Fraktionalteil möglich ist, d.h. 
es gibt 3MBaud und dann erst wieder 1,5MBaud.

Servus Wolfgang

von Sebastian (Gast)


Lesenswert?

Danke für den Hinweis :-)

Es ist doch immer etwas :-)

Kennt jemand einen BAUD RATE CALCULATOR für den FTDI USB Converter?

Ich benutze den FT232R. Dies habe ich im Datenbaltt gefunden:

Baud Rate Generator - The Baud Rate Generator provides a 16x clock input 
to the UART Controller from the 48MHz reference clock. It consists of a 
14 bit pre-scaler and 3 register bits which provide fine tuning of the 
baud rate (used to divide by a number plus a fraction or “sub-integer”). 
This determines the baud rate of the UART, which is programmable from 
183 baud to 3 Mbaud.
The FT232R supports all standard baud rates and non-standard baud rates 
from 183 Baud up to 3 Mbaud. Achievable non-standard baud rates are 
calculated as follows -
Baud Rate = 3000000 / (n + x)
where „n‟ can be any integer between 2 and 16,384 ( = 214 ) and „x’ can 
be a sub-integer of the value 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 
or 0.875. When n = 1, x = 0, i.e. baud rate divisors with values between 
1 and 2 are not possible.
This gives achievable baud rates in the range 183.1 baud to 3,000,000 
baud. When a non-standard baud rate is required simply pass the required 
baud rate value to the driver as normal, and the FTDI driver will 
calculate the required divisor, and set the baud rate. See FTDI 
application note AN232B-05 on the FTDI website (www.ftdichip.com) for 
more details.

von Sebastian (Gast)


Lesenswert?

Divisor = 1 and Divisor = 0 are special cases. A divisor of 0 will give 
3 MBaud, and a divisor
of 1 will give 2 MBaud. Sub-integer divisors between 0 and 2 are not 
allowed

Leider steht nicht wie genau diese 2 MBit sind.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Die XMEGA AU-Serie kann mit 48Mhz getaktet werden. Das ist zwar leicht 
außerhalb der Spezifikation, erlaubt aber die 3MBit. Oder Du taktest mit 
24Mhz, dann gehen auch die 3MBit oder 1.5MBit des FT232R. 3MBit gehen 
mit dem XMEGA aber auch mit seinem fraktionalem Vorteiler und 32Mhz oder 
36Mhz Taktfrequenz, musst Du nur mal gucken, ob der Jitter für ein 
fehlerfreies Signal nicht zu groß ist.

von Sebastian (Gast)


Lesenswert?

So viel ich weiß gibt es Probleme wenn ich mehr als 921600 Baud benutze, 
da der Windows Treiber nur bis 921600 Baud geht. Wenn ich schneller 
übertragen möchte dann kann ich den FTDI Chip nicht mehr als Virtuellen 
Com Port benutzen, sondern muss die DLL-Funktionen von FTDI benutzen.

Dies hat dann aber einen riesen Nachteil (zumindestens war das mal vor 2 
Jahren so) Wenn ich dann z.B. 1 Byte an den µC senden möchte, dann muss 
ich immer 128 Bytes senden so das der 128Byte Receiver Buffer auf dem 
FTDI Chip voll ist. Nur dann signalisiert dieser das er Daten besitzt.

Ich werde dies jedoch noch mal gegenprüfen. Vielleicht hat sich dies ja 
inzwischen geändert.

Wie oben geschrieben erzeugt der FTDI Chip bei einem Divisor von 1 2 
MBit als Transferrate. Es wird im AN232B-05 beschrieben, das man die 
ini-Datei anpassen muss und dann wird diese Geschwindigkeit als 
Standardgeschwindigkeit verwendet. Nur leider steht nicht wie genau die 
2MBit sind.

Wenn ich 921600 Baut beim FTDI einstelle erhalte ich eine 
Übertragungsfrequenz von 923,1kHz. Dies entspricht einer Abweichung von 
0,16%. Dies ist mehr als ausreichend gut.

von Sebastian (Gast)


Lesenswert?

So ich habe jetzt einfach bei der COM-Port Initialisierung 2Mbps 
eingestellt und mit dem Oszilloskop nachgemessen. Alles funktioniert 
super. Der USB zu RS232 Converter erzeugt 500ns Pulse :-)

Den µC habe ich auch auf 2Mbps eingestellt.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Na bitte, wieder ein glücklicher Anwender ;-)

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.