Forum: Mikrocontroller und Digitale Elektronik Verständnisprobleme mit dem FT245R


von Der_kleine_vom_See (Gast)


Lesenswert?

Hi,
erstmal eine kurze zusammenfassung meiner Anwendung:
Ich plane gerade ein Schaltung in dieser u.a. Daten per USB an einen PC 
gesendet werden sollen und dort einige Auswertungen vorgenommen werden.
grobe Schematische Darstellung der Schaltung:
Eingangsdaten->AD-Wandler->(Mikrocontroller)->FT245R->USB
Insgesamt werden vier 24-Bit AD-Wandler eingesetz.

Leider hab ich das Datenblatt von FTDI nicht wirklich verstehen können, 
ich hoffe ihr könnte mir dabei helfen. Nun zu meinen Fragen:

1)Welche Eingänge muss ich benutzen um die digitalisierten Daten in den 
FT245R zu bekommen? (D0-D7??)
2)Welche Genauigkeit hat der Chip? Kann es passieren das Genauigkeiten 
verlohren gehn?
3)Die Ausgänge USBDP und USBDM müssen an einen USB-B Stecker wenn ich 
diese an eine PC übertragen will, oder liege ich da falsch?
4)Da 128byte sende Puffer vorhanden sind, kann ich jeweils 32byte von 
jeden der vier digitalisieren Signalen zwischenspeichern und somit per 
USB übertragen oder liege ich da falsch? Die Aufteilung der 
"Datenbrocken" (jeweils 32 byte) müssten vorher in einem µC realisiert 
werden?

Ich hoffe ihr versteht meine Fragen und könnt mir helfen diesen Baustein 
zu verstehen.

Danke

von Jens (Gast)


Lesenswert?

1) korrekt
2) Die Frage verstehe ich nicht.
3) korrekt
4) könnte so klappen

von Der_kleine_vom_See (Gast)


Lesenswert?

1)Ich habe die Eingänge D0-D7. Sind diese Eingänge jeweils nur ein Bit 
oder was? Wozu hab ich überhaupt 8 Eingänge? Was wäre an an jedem 
Eingang Daten anliegen und wie würde dazu die Nutzdaten des USB 
Protokolls aussehen?
2)z.Z. haben meine Daten durch die digitalisierung eine Genauigkeit von 
24-Bit. Untersutzt dieser Chip auch die Genauigkeit oder geht diese zum 
teil verlohren?
3)Die Frage ist ob das die korrekten Ausgänge für den USB-B Stecker 
sind. (USB-A sind die typischen Stecker am PC)
4)ok

von Michael J. (jogibaer)


Lesenswert?

Hallo,

zu 1.

Die Daten werden parallel als 8 Bit Wert übertragen.
d.h. von 0 bis 255.

zu 2.

Wenn Du ein 8 Bit Signal anlegst, wird es genauso per USB an dein
Programm übertragen.
Der Chip ist nur ein Konverter zwischen parallel 8 Bit auf USB.
Es gibt keine "Genauigkeit" !.

zu 3.

Geräte mit Hostadapter haben eine Typ A, passive Gerät wie der FTDI 
haben
einen Typ B


Jogibär

von Der_kleine_vom_See (Gast)


Lesenswert?

Ok das bringt mich schon ein bisschen weiter. Ich versuche das nochmal 
in meinen Worten zu schreiben wie ich es verstanden habe.

Ich benutze die Eingänge D0-D7 und übertrage dort jeweils 1 Bit pro 
Pin(Leitung)->8 Bit.
Hab ich das richtig so verstanden?

Da nun meine Daten eine länge von 24Bit haben muss ich diese jeweils 
nacheinander an den FT245R senden bis der "komplette" Wert (24 
Bit)übertragen ist. Auf Empfängerseite kann dies im Programm wieder 
zusammmen gesetzt werden. Kann man dies so machen?

Gibt es irgendwelche zeitlichen einschränken wie schnell ich neue Bits 
an die Datenteilungen legen kann? Ich muss sicherstellen das ich eine 
kontinuierliche Übertragungsrate von 2MBit/s erreiche. Seht ihr darin 
Probleme?

Werden die USB-Datenpakete erst gesendet wenn der komplette sende Puffer 
voll ist, oder wie ist das?

Danke schonmal für die Hilfe.

DkvS

von Michael J. (jogibaer)


Lesenswert?

Hallo,

schon mal richtig.

Wenn Du z.B. einen 16 Bit Wert übertragen willst , überträgst Du z.B.
erst das obere byte und dann das untere Byte.
Im PC Programm fügst Du diese wieder zusammen und hast wieder deinen
16 Bit Wert.

Der FTDI hat Statuseingänge, die Anzeigen, ob Du einen neuen Wert senden
kannst oder nicht bzw. ob neue Daten anliegen .

2 Mbit sind schon mal eine Menge.Könnte problematisch werden.
Am besten Du versuchst komplette Datenblöcke zu übertragen.
USB arbeitet im 1 ms Raster.Lies Dir mal die Doku durch.

Ich weiß jetzt gar nicht auf Anhieb, ob der FTDI 1,5 Mbit oder 12 Mbit 
kann.
Schau mal ins Datenblatt.
Das müßte man auch an den Widerständen am USB Bus sehen.
Damit wird die Datenrate mitgeteilt.

2 Mbit ??
Da muß der Prozessor ganz schön schaufeln.
Welchen willst Du denn verwenden ?

Ich meine mal gelesen zu haben, das 500kbit schon ein sehr guter Wert 
sind.

Jogibär

von Der_kleine_vom_See (Gast)


Lesenswert?

Mal ein kleiner Auszug aus dem Datenblatt des FT245R:
----------------------------------------------------------------
Data transfer rate to 1 Megabyte / second - D2XX Direct Drivers.
Data transfer rate to 300 kilobyte / second - VCP Drivers.
256 byte receive buffer and 128 byte transmit
----------------------------------------------------------------

Ich denke 2MBit sollten so doch schon möglich sein oder kommt da noch so 
viel Protokoll-Overhead dazu? Also ich möchte wirklich 2MBit Nutzdaten 
übertragen + USB Protokoll etc.

Kannst du mir den sagen was genau der DsXX Direct Driver ist? Somit 
hätte ich ja 8MBit/s und damit keine Platzprobleme auf der Datenleitung.

Das die Widerständen die Geschwindigkeit angibt ist ja echt ne gute neue 
Info. Dies werd ich mir mal die Tag durchlesen.

Welchen Prozessor ich verwenden will weis ich noch nicht. Ich denke da 
wird sich schon einer finden. Ich muss bei dem Projekt nicht auf jeden 
Pfennig achten und denke das ich dann schon was vernünftiges bekommen 
kann und hatte mich in der richtung noch nicht Informiert. Könnt ihr den 
spontan einen empfehlen?

DkvS

von Dieter Werner (Gast)


Lesenswert?

> Das die Widerständen die Geschwindigkeit angibt ist ja echt ne gute
> neue Info.

Abhängig davon ob mit einem 1,5kOhm Widerstand die D+ oder D- Leitung an 
VBus gelegt wird erkennt der USB-Hostcontroller ob sich ein 1,5Mbit oder 
ein 12MBit Device anmelden (enumeration) will.

Bei den FTDI Bausteinen mit Suffix "R" - also auch FT245R - ist der 
Widerstand schon eingebaut.
Das Datenblatt sollte mehr dazu wissen.

von Der_kleine_vom_See (Gast)


Lesenswert?

Im Datenblatt ist vollgendes zu finden:

USBDP: USB Data Signal Plus, incorporating internal series resistor and 
1.5kΩ pull up resistor to 3.3V
USBDM: USB Data Signal Minus, incorporating internal series resistor.


Ist das somit nun 1,5MBit oder 12MBit? Wenn es 1,5 sind, kann ich den 
Chip ja nicht mehr verweden. Hättet ihr eine andere alternative....am 
besten von FTDI??

von Christian R. (supachris)


Lesenswert?

Der schafft unter günstigsten bedingungen schon die 8 MBit/s, aber dann 
darf auf dem USB sonst nix los sein, und das FIFO Schreib-Timing muss so 
knapp wie möglich gehalten werden.

von Der_kleine_vom_See (Gast)


Lesenswert?

Am besten wäre wohl wenn ich das im Vorfeld mal teste ob ich diese 
Ubertragungsgeschwindigkeiten erreichen kann. Aber wenn im Datenblatt 
steht das es 8MBit/s kann, sollten doch so spontan gesagt keine Probleme 
bei der Übertragung von 2MBit/s auftreten....oder?

von Christian R. (supachris)


Lesenswert?

Da wäre ich vorsichtig. Denn das hängt auch ganz stark von der 
PC-Applikation ab. Wie du die Daten abholst, da musst du mit Threads 
arbeiten, die Buffergrößen optimal anpassen, dann muss der USB relativ 
frei sein und und und.

Dann gehts weiter beim Timing zwischenµC und FT245, da muss auch alles 
stimmen, die Flags schnell genug abfragen.

Ich würde es vorher mal testen. USB hat da so seine 
Eigenarten....Windows speziell macht da manchmal sehr interessante 
Sachen.

Vielleicht ist dann ein schnellerer USB Controller besser, z.B. der 
Cypress 68013, da gibts auch eine schöne preiswerte und einfache 
API+Firmware von Braintechnology.

von Der_kleine_vom_See (Gast)


Lesenswert?

Alles in allen hört sich die Übertragung meiner benötigen Nutzdaten mit 
diesem Baustein etwas problematisch an.
Hat einer von euch noch andere Lösungsansätze mit verschiedenen anderen 
Bausteinen für dieses Problem. Wenn es möglich ist, würde ich aus 
zeitgründen sehr gern auf die Treiberprogrammierung und USB-Protokoll 
programmierung verzichten. Gibt es da sinnvoll alternativen?
Ich hoffe ihr habt da nochwas für mich :-)

von Jack B. (jackbraun)


Lesenswert?

>Gibt es da sinnvoll alternativen?

Hat der PC keine serielle Schnittstelle?

von Der_kleine_vom_See (Gast)


Lesenswert?

Natürlich hat er die, aber die rs232 schnittstelle ist halt viel zu 
langsam um alle Daten übertragen zu können.

von Jack B. (jackbraun)


Lesenswert?

>Natürlich hat er die, aber die rs232 schnittstelle ist halt viel zu
>langsam um alle Daten übertragen zu können.

Das würde mich aber mal interessieren, welche Datenmenge da so anfällt.

von Der_kleine_vom_See (Gast)


Lesenswert?

Dies habe ich in einer der letzten Einträge bereits geschrieben.....es 
sind 2Mbit/s bzw. vielleicht auch 2,5Mbit/s Nutzdaten. Hinzu kommt noch 
der ganze Protokoll-Overhead.

Ich bin nicht auf die Bausteine von FTDI fixiert. Ich will nur so wenig 
Aufwand wie möglich haben. Also Daten in den IC und dann soll der Chip 
am besten das ganze USB Protokoll und die Übertragung selber machen.
Gibt es den da noch andere Hersteller die so was in die Richtung machen?

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.