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.
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 :-)
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.
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
Bei 2Mbps bleiben ja immer noch 160 XMEGA Clock Takte um die Daten zu verarbeiten. Das sollte doch ausreichen.
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
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.
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.
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.
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.
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.
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.