Forum: Mikrocontroller und Digitale Elektronik Quarz bei virt. Com-Port über FT232RL?


von Dominique G. (dgoersch)


Lesenswert?

Hallo zusammen,

ich möchte in einem Projekt erstmals einen FT232RL verwenden um darüber 
Daten zwischen PC und µC über einen virt. Comport auszutauschen. Muss 
ich hierbei wie bei einer echten seriellen Verbindung über MAX232 
ebenfalls auf einen zur Baudrate passenden Quarz achten, oder ist das 
bei Verwendung des FTDI-Controllers unkritisch?

Da bei dem Projekt das sonstige Timing unwichtig ist, würde ich gerne 
auf einen externen Quarz ganz verzichten. Wird ohne Quarz die 
Kommunikation über den virt. Com-Port problemlos funktionieren? Mit was 
für Einschränkungen muss ich rechnen?

Danke und Gruß
Dominique Görsch

von holger (Gast)


Lesenswert?

>Da bei dem Projekt das sonstige Timing unwichtig ist, würde ich gerne
>auf einen externen Quarz ganz verzichten. Wird ohne Quarz die
>Kommunikation über den virt. Com-Port problemlos funktionieren? Mit was
>für Einschränkungen muss ich rechnen?

Mit denselben Einschränkungen die dein uC
ohne den Quarz bisher hatte. Das Problem bleibt das gleiche.
Int RC Osci ist zu ungenau.
Der FT232RL braucht keinen Quarz.

von Gast (Gast)


Lesenswert?

Der interne 12MHz Oszillator des FT232RL reicht in der Regel aus.
Du kannst sogar die intern erzeugte Frequenz an den CBUS0 bis CBUS3 
Ausgängen im Bereich von 48MHz bis 6MHz ausgeben. z.B. als Takt für den 
Prozessor etc.

von Ralf (Gast)


Lesenswert?

Der FT232*R* funktioniert gänzlich ohne Quarz, aber du musst natürlich 
für den angeschlossenen Controller trotzdem eine Quarzfrequenz wählen, 
die es ermöglicht, die üblichen Baudraten wie 9600, 19200 etc. zu 
generieren.

Eine Ausnahme hiervon ist, wenn du den FT232 direkt über Software (also 
per DLL-Zugriff) und nicht über die VCP-Treiber ansprichst, dann 
brauchst du theoretisch nicht mal am µC einen Quarz, weil du die 
CBUS-Pins des FT232 auf Taktausgabe (in festen Werten) schalten und 
somit den µC takten kannst. Bei der direkten Ansteuerung kannst du dann 
auch krumme Baudraten generieren.

Und als Schmankerl gibt es noch die Möglichkeit, auch über die 
VCP-Treiber krumme Baudraten zu erzeugen. Das ganze nennt sich Aliasing 
und ist in diesem Dokument beschrieben:

http://www.ftdichip.com/Documents/AppNotes/AN232B-05_BaudRates.pdf

Einziger Nachteil ist, dass du halt im VCP-Treiber eine andere Baudrate 
einstellst, als du eigentlich haben willst (ein Alias eben), also 
entsprechen dann halt eingestellte 115200 Baud z.B. einer realen 
Baudrate von 512000 Baud.

Ralf

von Dominique G. (dgoersch)


Lesenswert?

Da ich mit einer Software kommuniziere die normal über eine serielle 
Verbindung arbeitet, bin ich auf den Treiber für den virt. Com-Port 
angewiesen.

Bietet mir hierfür der FT232R eine passende Frequenz an, die ich an 
einem der CBUS-Pins herausführen kann, und meinem µC an XTAL2 spendiere?

//EDIT: niedrige Baudrate würde vollkommen ausreichen!

von Ralf (Gast)


Lesenswert?

> Bietet mir hierfür der FT232R eine passende Frequenz an, die ich an
> einem der CBUS-Pins herausführen kann, und meinem µC an XTAL2 spendiere?
Der FT232R bietet soweit ich weiss 6, 12, (24 bin ich nicht sicher) und 
48 MHz an. Da das Vielfache von 6 MHz sind, solltest du dann die 
höchstmögliche für deinen Controller wählen (es sei denn, du bist auf 
Batteriebetrieb).

Ob das eine für deinen µC passende Frequenz ist, weiss ich nicht, da du 
nicht geschrieben hast, welchen µC du anschließen willst. Üblicherweise 
wird ein UART mit dem 16-fachen der Baudrate getaktet.

Du musst dir halt eine Baudrate raussuchen, die Formel des UART-Taktes 
deines µC entsprechend bei einer der o.g. Frequenzen berechnen, und 
gucken, ob die berechnete Baudrate nicht mehr wie 3% vom Soll abweicht 
(3% wird soweit ich weiss toleriert).

Ralf

von Christian R. (supachris)


Lesenswert?

Also erst mal verarbeitet der FT232 natürlich alle Standard-Baudraten. 
Desweiteren steht im Datenblatt nach welcher Formel die anderen 
berechnet werden. Du kannst also gerne auch mit 1 MBaud glatt oder 
sonstwas fahren. Wenn du auf der PC-Seite dein Programm selber 
schreibst, kannst du der DCB auch alle krummen Baudraten übergeben, die 
gibts auch nur dem FTDI Treiber und der kümmert sich um die Einstellung. 
Allerdings ist mit einem RC-Oszialltor am µC damit immer noch kein 
Blumentopf gewonnen, denn desse temperatur- und Spannungsschwankungs 
bedingten Schwankungen der Baudrate kann der FT232 natürlich nicht 
ausgleichen.

von Dominique G. (dgoersch)


Lesenswert?

Ralf wrote:
> Der FT232R bietet soweit ich weiss 6, 12, (24 bin ich nicht sicher) und
> 48 MHz an. Da das Vielfache von 6 MHz sind, solltest du dann die
> höchstmögliche für deinen Controller wählen (es sei denn, du bist auf
> Batteriebetrieb).

Nein, kein Batteriebetrieb, allerdings Bus-powered. Den µC wollte ich 
dabei über PWREN# solange im Reset halten, bis der FT232R komplett 
enumeriert ist.

> Ob das eine für deinen µC passende Frequenz ist, weiss ich nicht, da du
> nicht geschrieben hast, welchen µC du anschließen willst. Üblicherweise
> wird ein UART mit dem 16-fachen der Baudrate getaktet.

Oh sorry, ich wollte einen ATmega16 nehmen, somit wären 12MHz wohl 
angebracht und für meine Anwendung auch mehr als ausreichend.

Eine andere Frage kam mir allerdings noch gerade auf, als ich anfing die 
Schalung zu entwerfen. In den Beispielschaltungen im Datenblatt ist eine 
Drossel zwischen USB-Stecker und Vcc für FT232R sowie µC. Wofür ist die 
genau da?

Dann ist in Plan einmal ein 10nF Elko zwischen Vcc und GND direkt am 
USB-Stecker und weiter unten im Plan stehen noch einmal 4,7µF Elko und 
100nF Kerko die generell in die Stromversorgung sollen. Wo platziere ich 
das am Ende am Besten auf dem Board?

10nF Elko direkt an der USB-Buchse?
100nF + 4,7µF nah an Vcc des FT232R?
Und die obligatorischen 100nF an Vcc und Reset des µC?

Gruß
Dominique Görsch

von Ralf (Gast)


Lesenswert?

Die Drossel hilft gegen niederfrequente Störungen. Die werden 
wahrscheinlich vom Rechner kommen, und die Drossel soll sie 
ruhigstellen.

Den 10nF direkt zwischen Buchse und Spule, das ganze nicht über ewig 
lange Strecken verteilt, das gleiche gilt für D+/D-, die sollten so kurz 
wie möglich und vor allem schön parallel laufen, nach Möglichkeit sogar 
auf die gleiche Länge achten. Interpretier da nicht zuviel rein, ich hab 
auch schon 50mm Weg von der Buchse zum FT232 gehabt, das geht, aber 
übertreiben muss man es ja auch nicht ;)

Den 4,7µF würd ich so nah wie möglich am FT232R platzieren, ebenso die 
üblichen 100nF. Ich würd sogar auch dem VCCIO eine 4,7µF spendieren. 
Also jeder VCC-Pin hat einen "großen" und einen "kleinen" Kondensator.

Denk dran, im Layout die Stromversorgung so zu legen, dass eine 
Verbindung vom Pin zum Kondensator geht, und erst ab dort in die 
VCC-Fläche, sonst bringt der Kondensator nix, wenn der Pin direkt an VCC 
geht. Falls du Eagle verwendest, musst du evtl. mit kleinen 
TopRestrict-Flächen arbeiten, um den Pin von der Fläche auszusparen.

Den Reset des µC kannst du mit 100nF (wobei ich hier eher kleinere Werte 
nehmen würde) entkoppeln, der Kondensator muss dann so nah wie möglich 
zum µC. Rechne aber damit, dass PWREN evtl. mehrmals toggeln könnte, 
bevor er stabil ist, ich hab's noch nie nachgemessen, aber mal irgendwo 
was gelesen, dass das passieren kann, ist wohl Rechner-abhängig. Wichtig 
ist das dann, wenn dein µC nach dem Einschalten irgendwas schaltet, z.B. 
ein Relais oder so, das würde dann halt ein paar mal Klacken. Notfalls 
eine Startverzögerung in die Software einbauen.
Wenn du dich an die USB-Spec halten willst und die Schaltung mehr 100mA 
zieht, musst du sowieso mit PWREN einen FET schalten.

Ralf

von Dominique G. (dgoersch)


Lesenswert?

Ralf wrote:
> Die Drossel hilft gegen niederfrequente Störungen. Die werden
> wahrscheinlich vom Rechner kommen, und die Drossel soll sie
> ruhigstellen.
>
> Den 10nF direkt zwischen Buchse und Spule, das ganze nicht über ewig
> lange Strecken verteilt, das gleiche gilt für D+/D-, die sollten so kurz
> wie möglich und vor allem schön parallel laufen, nach Möglichkeit sogar
> auf die gleiche Länge achten. Interpretier da nicht zuviel rein, ich hab
> auch schon 50mm Weg von der Buchse zum FT232 gehabt, das geht, aber
> übertreiben muss man es ja auch nicht ;)

Danke für die ausführliche Antwort. Ich hab nun von anderer Seite 
gehört, dass man die Drossel und den 10nF an der Buchse ruhig weglassen 
könnte und statt des 4,7µF auch ein 22µF (kleinste was ich bei Reichelt 
finden konnte - "VF 22/6,3 C-B") durchaus ok ist.

Leitungswege werden von den Lötpads aus (keine Buchse, sondern 4 Pads 
für VCC, GND, D+ und D-) recht kurz zum FT323R sein.

> Den 4,7µF würd ich so nah wie möglich am FT232R platzieren, ebenso die
> üblichen 100nF. Ich würd sogar auch dem VCCIO eine 4,7µF spendieren.
> Also jeder VCC-Pin hat einen "großen" und einen "kleinen" Kondensator.

Kann ich den 22µF dann auch für den VCCIO nehmen?

> Denk dran, im Layout die Stromversorgung so zu legen, dass eine
> Verbindung vom Pin zum Kondensator geht, und erst ab dort in die
> VCC-Fläche, sonst bringt der Kondensator nix, wenn der Pin direkt an VCC
> geht. Falls du Eagle verwendest, musst du evtl. mit kleinen
> TopRestrict-Flächen arbeiten, um den Pin von der Fläche auszusparen.

Ich nutze zwar Eagle, aber Route von Hand, daher ist das kein Problem.

> Den Reset des µC kannst du mit 100nF (wobei ich hier eher kleinere Werte
> nehmen würde) entkoppeln, der Kondensator muss dann so nah wie möglich
> zum µC. Rechne aber damit, dass PWREN evtl. mehrmals toggeln könnte,
> bevor er stabil ist, ich hab's noch nie nachgemessen, aber mal irgendwo
> was gelesen, dass das passieren kann, ist wohl Rechner-abhängig. Wichtig
> ist das dann, wenn dein µC nach dem Einschalten irgendwas schaltet, z.B.
> ein Relais oder so, das würde dann halt ein paar mal Klacken. Notfalls
> eine Startverzögerung in die Software einbauen.

Da hängt nichts dran, was nicht ohne Befehl vom PC etwas tun würde.

> Wenn du dich an die USB-Spec halten willst und die Schaltung mehr 100mA
> zieht, musst du sowieso mit PWREN einen FET schalten.

Hab ich im Datenblatt gelesen. Mehr als 100mA werd ich zwar wohl 
entnehmen, aber das nicht direkt nach dem Einstecken, sondern erst wenn 
vom PC entsprechender Befehl kommt, was unwahrscheinlich ist, solange 
noch nicht enumeriert. ;)

Gruß
Dominique Görsch

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.