Habt Ihr schon Erfahrungen mit den neuen "kleinen" USB_2_UART-Chips von
FTDI: FT230X, FT234XD ???
Die schienen die gleichen Treiber wie FT232, FT2232 etc zu haben, nur
minimale Aussenbeschaltung und sehr klein (SSOP16, QFN16 und DFN12).
Es ist halt immer eine Design-Frage.
Wer gibt schon gerne 2-3 Euro extra aus?
Vor ein paar Jahren war das sicherlich eine gute Alternative zu 'echtem'
USB. Aber heute?
Selbst Atmel hat es mittlerweile hinbekommen und bei Microchip und 1000
anderen klappt das mit USB und guter Firmware sowieso schon lange.
Pit schrieb:> Es gibt tolle neue FTDI-Chips!> Aber warum eigentlich?Pit schrieb:> Selbst Atmel hat es mittlerweile hinbekommen und bei Microchip und 1000> anderen klappt das mit USB und guter Firmware sowieso schon lange.
Habs selbst mit dem ST32F4xx probiert und wirklich für mich
nichtzufriedenstellend hinbekommen.
Mag sein, dass es dafür (möglicherweise kostenplichtige) befiedigende
USB_Stacks gibt. Wenn man das mit den freien Resourcen hinbekommen will,
ohne dass man den USB im Detail gut kennt, ist das keine leichte
Aufgabe. Da waren einige Interrupts die die CPU belastet haben, weil
auch noch in der ISR unnötige Abfrageschleifen waren. In Summe dauerte
manche ISR (bei Ein-Ausstecken vom USB) sher lang. Wie weit mich das bei
meiner Hauptapplication stört wollte ich lieber dann nicht ausprobieren.
Bei Verwendung eines FTDI-Chips hast du eine klar definierte
Uart-Schnittstelle, Interruptbelastung ist gering und gut überschaubar.
Man kann sich auf die Hauptapplikation konzentieren.
Bei nicht wirklich großen Stückzahlen ist das auch billiger. Kannst die
von FTDI vorgegebenen Seriennummern verwenden, bist mit den Treibern von
FTDI für den PC auch auf der sicheren Seite.
Fritz schrieb:> Habs selbst mit dem ST32F4xx probiert und wirklich für mich> nichtzufriedenstellend hinbekommen.
Klar, einige Demos vom Hersteller sind da schon von Vorteil.
Fritz schrieb:> Da waren einige Interrupts die die CPU belastet haben, weil> auch noch in der ISR unnötige Abfrageschleifen waren.
Interrupts hast Du auch bei UART und ob die tatsächlicher weniger
'belasten' lass ich mal offen.
Fritz schrieb:> bist mit den Treibern von> FTDI für den PC auch auf der sicheren Seite.
Das halte ich nur für bedingt richtig:
Beitrag "Problem FT2232H von FTDI"
Pit schrieb:> Fritz schrieb:>> bist mit den Treibern von>> FTDI für den PC auch auf der sicheren Seite.> Das halte ich nur für bedingt richtig:> Beitrag "Problem FT2232H von FTDI"
Treiberfehler gibts immermal.
Davon bleibt weder FTDI verschont noch der Treiber von den µCs mit
integriertem USB.
Nächstes Gegenargument bitte.
QFN und DFN sind ja jetzt nicht grade Lötfreundlich, aber SSOP16 klingt
gut.
Müsst man nurmal gucken wos den gibt und was er kostet.
Sehen innerlich alle nach nem FT232R aus nur mit weniger Handshake und
CBUS (was man eh kaum braucht).
@Pit:
Die FTDI Chips sind gut und die Treiber sind die stabilsten aller
USB->UART Wandler. Ich hatte damit noch nie Probleme - und ich habe
ein Produkt damit entwickelt (mehrere tausend in den letzten Jahren
verkauft).
So gut wie nie gab es Probleme mit den FTDI Treibern die nicht 60cm vorm
Bildschirm zu suchen waren ;-)
USB VID kaufen ist teuer und Treiber selbst pflegen auch (für alle
Windows Versionen von 1998 bis 2013 und dasselbe für Linux und Mac und
dann auch noch 32 und 64 Bit... nö danke)
Gerade über Ostern das erste mal einen FT230X mit 5V Atmel AVR
verkuppelt. Funktioniert ohne Probleme, und war billiger als FT232.
Leider etwas höherer Aufwand, zwei Widerstände + zwei Kondenstoren für
den USB.
Gekauft bei digikey. Hinweis da ich auch etwas gebraucht habe um es zu
verstehen: Es gibt die als Tape&Reel und als Rohr, bei kleinen Mengen
sind die aus dem Rohr günstiger.
Pit schrieb:> Interrupts hast Du auch bei UART und ob die tatsächlicher weniger> 'belasten' lass ich mal offen.
Üblicherweise habe ich da nur Receive und Transmit Interrupt, damit eine
gepufferte Übertragung zu schreiben ist nicht schwer.
"Belastung" ist vielleicht der falsche Ausdruck, aber ich kann eine
ziemich kurze Interruptzeit garantieren.
Bei USB ist das viel undurchschaubarer.
Schau mal bei USB wie vile ISR-Möglichkeiten da vorhanden sind.
Pit schrieb:>> Habs selbst mit dem ST32F4xx probiert und wirklich für mich>> nichtzufriedenstellend hinbekommen.> Klar, einige Demos vom Hersteller sind da schon von Vorteil.
Nur bedingt, die Demo von ST ist eine standalone UART - USB bridge,
klingt recht gut, aber ist es nicht eine vernünftige Schnittstelle zu uC
Anwendersoftware ist darin nicht enthalten. Nur USB rein -> Seriell
raus.
Martin Wende schrieb:> Nächstes Gegenargument bitte.
Wie handelst Du die Hersteller, Seriennummer für dein Gerät?
Mit FTDI bekommst du das gratis mit.
Fritz schrieb:> Martin Wende schrieb:>> Nächstes Gegenargument bitte.>> Wie handelst Du die Hersteller, Seriennummer für dein Gerät?> Mit FTDI bekommst du das gratis mit.
Da haste jetz was falsch mitbekommen, ging um den Link von Pit mit dem
Treiberproblem des FT ICs.
Martin Wende schrieb:> Da haste jetz was falsch mitbekommen, ging um den Link von Pit mit dem> Treiberproblem des FT ICs.
Treiberproble kann es überall geben, das stimmt schon.
Aber FTDI lebt von ihren USB-Chips und haben dadurch ureigenstes
Interesse ihre Treiber aktuell und so fehlerfrei wie möglich zu halten.
Was man vom VCOM-Port driver von Windows nicht behaupten kann.
Erstmal vielen Dank für die Erweiterung meines Horizontes :)
Martin Wende schrieb:> Nächstes Gegenargument bitte.
Die Treiber funktionieren aber auch nur solange man die VID/PID nicht
ändert.
Martin Wende schrieb:> Nächstes Gegenargument bitte.
Mangelnde Flexibilität: Bei 'echtem USB' kann ich mir die Schnittstelle
bauen wie ich will - mit Keyboard/Maus-Funktion, Datenschnittstelle
(Bulk) usw. Wenn ich HID nehme brauch ich nicht mal eine .inf-Datei.
Martin Wende schrieb:> Nächstes Gegenargument bitte.
Und wie bereits erwähnt: Zusätzlicher IC mit Kosten.
Martin Wende schrieb:> Nächstes Gegenargument bitte.
Und zusätzlichen Platz auf der Platine brauch ich auch noch.
Und das bring mich zum wiederholten Male zu dem Schluss:
Es ist eben Geschmacksache.
Christian Schmidt schrieb:> Gerade über Ostern das erste mal einen FT230X mit 5V Atmel AVR> verkuppelt. Funktioniert ohne Probleme, und war billiger als FT232.
Aber Achtung!
Die FT*X sind nicht für 5V-Logikpegel ausgelegt, die liegen nur bei
3.3V.
Grüße,
Simon
>True 3.3V CMOS drive output and TTL input.>(operates down to 1V8 with external pull ups and is also 5V tolerant)
Das deute ich anders, erste Seite Datenblatt.
Gruß Matthias
Stone schrieb:>>True 3.3V CMOS drive output and TTL input.>>(operates down to 1V8 with external pull ups and is also 5V tolerant)> Das deute ich anders, erste Seite Datenblatt.
5V Toleranz ist gut, allerdings eben nur eine Seite der Medaille. Die
andere ist, ob die Gegenstelle 3.3V auch zuverlässig als High erkennt -
und das ist mit den typischen 0.7*VCC bei 5V nicht mehr gegeben. Ok, die
AVRs haben auch schonmal 0.6*VCC, was rechnerisch geht, aber auch schon
halt arg an der Grenze schrappt.
Ich finde die FT*X spannend, keine Frage. Aber in 5V-Systemen würde ich
sie nicht ohne zusätzliche Maßnahmen einbauen.
Grüße,
Simon
>in 5V-Systemen ... zusätzliche Maßnahmen
Hast du dazu einen guten Vorschlag?
Spontan fällt mir dazu 74LVC1T45 ein, der kostet aber auch nochmal 15
Cent extra. Dann schrumpft die Einsparung zum FT232R wieder auf 50 Cent
zusammen.
Ein 74HCT125 Gatter müsste IMHO auch passen, das Teil ist dann aber noch
teurer & größer.
Andreas schrieb:>>in 5V-Systemen ... zusätzliche Maßnahmen>> Hast du dazu einen guten Vorschlag?
Man könnte einfach einen Logic-Level-Mosfet ansteuern. Man kann die
Polarität der Signal-Pins der FTDI's umkonfigurieren.
Wobei man natürlich in einem Massenproduktions-Umfeld entsprechend
beachten muss, dass das umkonfigurieren auch einen Kostenfaktor
darstellt.
Viele Grüße,
Simon
Vor allem frisst das wieder den Platzvorteil gegenüber eines FT232RL
wenn da jetzt noch mit Pegelwandlern rumgewurschtelt wird ;)
@Pit:
Schon besser ;)
Für den Luxus einer total einfachen USB Anbindung muss man eben zahlen.
> Interrupts hast Du auch bei UART und ob die tatsächlicher weniger> 'belasten' lass ich mal offen.
Ich verwende gerne den FT245, wenn genügend Pins frei sind und es um
Performance geht. In einem Projekt durfte keine ISR-Last aufkommen und
da hilft dieser Chip prima. Man pollt den RXF-Out oder liesst Daten,
sobald im Programm Zeit dafür ist, ganz ohne Interrupts. Ausserdem
braucht man keinen internen Eingangspuffer mehr und um Hardwarehandshake
(RTS/CTS) braucht man sich auch nicht mehr kümmern.
Einziger Nachteil: einen 8-bit-Port und ein Paar Steuerleitungen.
Martin Wende schrieb:> Vor allem frisst das wieder den Platzvorteil gegenüber eines FT232RL> wenn da jetzt noch mit Pegelwandlern rumgewurschtelt wird ;)
Manchmal muss man einfach nur genau hinschauen.
Rangi Jones schrieb:> In einem Projekt durfte keine ISR-Last aufkommen und> da hilft dieser Chip prima. Man pollt den RXF-Out oder liesst Daten,> sobald im Programm Zeit dafür ist, ganz ohne Interrupts.
Als ob man USB nicht auch pollen könnte. Denkst Du etwa, da gibt es
einen Unterschied? Das Interrupt-Argument ist Quatsch.
Bei jeder Hardware müssen zwingenden ein paar Register gelesen werden
(ob UART, USB oder sonst was). Das macht man im Interrupt und setz ein
Flag um es dann in der Main auszuwerten - jedenfalls wenn der Interrupt
viel 'Arbeit' nach sich zieht.
Und da die bei Microchip und sonst wo auch nicht zum ersten mal
programmieren, kann man davon ausgehen, dass die schon das Richtige tun.
> Das macht man im Interrupt und setz ein Flag um es dann in der Main> auszuwerten - jedenfalls wenn der Interrupt viel 'Arbeit' nach sich zieht.
oh oh, ich glaube da muss nochmal jemand auf die Schulbank. Was
passiert, wenn die Main nicht rechtzeitig drankommt? Dann ist das Byte
Weg! Also musst du die Daten in der ISR auslesen, und weil es
prinzipiell viele sein können, brauchst du einen Puffer und der braucht
wieder Zeiger und das ganze braucht wieder Zeit in der ISR.
DMA hilft da, aber nicht jeder Controller hat sowas.
Hardwarehandshake: fg haste mal versucht bei einem PC die RTS-Leitung
zu ziehen, während der sendet? da kommen noch 5 bis 10 Bytes mindestens
raus, bevor der aufhört zusenden. Und da rede ich nur von 115200Bd.
So ein externer Hardware-Fifo ist schon was feines für diesen
Einsatzfall.
Natürlich ist es einfacher die UART zu verwenden, in den meissten Fällen
funktioniert das aucht, wollte nur sagen, es gibt Problemstellungen, die
nicht in Software lösbar sind.
Rangi Jones schrieb:> oh oh, ich glaube da muss nochmal jemand auf die Schulbank. Was> passiert, wenn die Main nicht rechtzeitig drankommt? Dann ist das Byte> Weg!
Zum Thema Schulbank: 'weg' schreibt man klein.
Rangi Jones schrieb:> Also musst du die Daten in der ISR auslesen, und weil es> prinzipiell viele sein können, brauchst du einen Puffer und der braucht> wieder Zeiger und das ganze braucht wieder Zeit in der ISR.
Da passiert garnix, da der USB den Puffer erst wieder füllt, nachdem ich
die Daten (ganz gemächlich) in der Main gepollt habe und den
Empfangspuffer frei gebe. Bis das erledigt ist, sendet der USB einfach
NACK an den Host.
Rangi Jones schrieb:> fg haste mal versucht bei einem PC die RTS-Leitung> zu ziehen, während der sendet? da kommen noch 5 bis 10 Bytes mindestens> raus, bevor der aufhört zusenden. Und da rede ich nur von 115200Bd.
Im Übrigen haben sich meine Aussagen auf USB bezogen, da ja angeblich
der USB mit den vielen Interrupts sooo viele Probleme macht - es scheint
mir eher anders rum :)!
Danke für Deine Unterstützung!
Ich denke die sachlichen Dinge sind besprochen. Viel Spass noch beim
lästern :)
Da ich den FT230X mittlerweile nicht nur verlötet habe sondern ihn auch
benutze:
1. Er tut ohne Probleme mit einem 5V AVR, auch ohne Pegelwandler.
2. Ohne RTS/CTS Handshake völlig unbenutzbar. Er scheint kein Double
Buffering zu haben, und verliert einfach Daten wenn man während des USB
Transfers weiter sendet.
Gruß,
Christian
Christian Schmidt schrieb:>> Er scheint kein Double Buffering zu haben,>
Wozu sind denn dann die 512+512 Bytes RX/TX Buffer?
Vom Aufbau her sind die ja fast identisch zum FT232R und ham sogar
deutlich größere Buffer - und beim 232R hab ich bislang noch kein
Handshake benötigt - ohne Datenverlust bei 1MBit/s...?
Christian Schmidt schrieb:> 2. Ohne RTS/CTS Handshake völlig unbenutzbar. Er scheint kein Double> Buffering zu haben, und verliert einfach Daten wenn man während des USB> Transfers weiter sendet.
Und du bist dir sicher, dass du die Daten nicht in deinem AVR verlierst.
Solche Aussagen sollte man schon genauer ausführen:
Welche CPU, CPU-Clock, Baudrate, RX und TX mit Interrupt? ...
Ich kann mirs nicht vorstellen, dass deine Behauptung stimmt!