µC via USB an PC anbinden

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Hallo,

ich möchte mit Hilfe eines externen Chips eine Anbindung eines PC an
einen µC realisieren (SPI). Eine Möglichkeit wäre der FTDI2232, der
PC-seitig als COM-Port erscheint - aber der belegt zu viel Platz in der
Schaltung.

Als Alternative habe ich den MAX3420E gefunden, der allerdings sehr
flexibel ist und mit ein paar Endpoints zur Verfügung stellt, mit denen
ich dann arbeiten kann.

Allerdings möchte ich PC-seitig nicht allzuviel programmieren müssen -
idealerweise nur eine .inf-Datei, die ein Mapping erstellt zwischen
meinem Gerät (VID/PID) und einem evtl. bereits vorhandenen Treiber,
dessen Endpoint-Kombination ich dann übernehmen müßte. Kann mir dazu
jemand ein paar Tips geben? Viel mehr als einen IN- und einen
OUT-Endpoint dürfte ich dafür ja eigentlich nicht brauchen müssen, oder?


TIA,

Thomas

Re: µC via USB an PC anbinden
Am 12.05.2010 10:59, schrieb Thomas Rachel:
Quoted text here. Click to load it

Kannst du den µC via RS232 anbinden? Dann würde ich den FT232 enpfehlen.
Ausser IC brauchst du nur etwas Hühnerfutter (3xC, evtl. noch ein C und
L) und die Anbindung ist fertig. Treiber auf der PC-Seite kommt von FT,
den mußt du nur ein mal programmieren mit dem FT-Tool und das Ganze
läuft ziemlich transparent als serielle Schnittstelle. Und groß ist das
Ding wirklich nicht. Ich packe den kompletten Converter + einen
OC-Schalter in einen normalen USB-Stecker rein.

Waldemar

Re: µC via USB an PC anbinden
Am 12.05.2010 11:29, schrieb Waldemar Krzok:

Quoted text here. Click to load it

Ist im bisherigen Design so gelöst, allerdings wollen wir umsteigen auf
eine synchrone Anbindung. UART ist bei höheren Geschwindigkeiten ja doch
relativ empfindlich...

Eine Möglichkeit wäre der 245, aber für parallele Anbindung ist auch
wenig Platz,daher der Wunsch nach SPI.


Danke dennoch für Deine Antwort!

Thomas

Re: µC via USB an PC anbinden
Am 12.05.2010 11:32, schrieb Thomas Rachel:
Quoted text here. Click to load it

ich habe es nie probiert, aber theoretisch könnte man die Anbindung im
Bit-Bang-Mode des FT232R probieren. Allerdings müßte man einen
SPI-Driver auf der PC-Seite programmieren. Der FT232R hat freie IOs, man
müßte allerdings vom PC aus mit den Beinen wackeln. Etwas umständig.

Vielleicht fällt mir noch was ein.

Waldemar

Re: µC via USB an PC anbinden
Am 12.05.2010 11:42, schrieb Waldemar Krzok:

Quoted text here. Click to load it

Das wäre an sich kein Problem - wir verwenden in der Vorgängerversion
die FTDI-Library, da hätte man auch Zugriff auf Bitbanging. SPI zu
programmieren wäre da nicht so problematisch.

Was mir da mehr Sorgen bereitet, wäre das USB-Framing, das die Sache
dann vermutlich etwas wangsam machen dürfte - ich kann ja pro Frame
(d.h. pro ms) max. 1 "Banging-Kommando" übertragen, oder?


Thomas

Re: µC via USB an PC anbinden
Am 12.05.2010 11:50, schrieb Thomas Rachel:
Quoted text here. Click to load it

etwas schneller gehts schon. Ich glaube, ich habe 10kHz geschafft,
trotzdem sehr lahmarschig im Vergleich zu RS232.
Damit hatte ich keine Probleme, die RS232-Strecke ist ja nur ein paar mm
lang, vom µC zum FT232R, weiter geht es ja per USB. Mein Kollege benutzt
es mit 920kbps und es läuft sehr stabil.

Waldemar

Re: µC via USB an PC anbinden

Quoted text here. Click to load it

du schaffst erheblich mehr. Im syncronen Bitbang-Modus kannst du die vollen
256 Byte Sendepuffer nutzen. Die Ergebnisse landen dann im Empfangspuffer.
Allerdings währe ich mit der 1ms vorsichtig. 2-4ms ist schon realistischer.

Ich hab so einen AT89s52 programmer realisiert der mit 17 Pufferbytes ein
SPI-Byte überträgt.
Du könntest aber auch #RD und #WR verwenden und so den vollen Puffer für
Daten nutzen. Die verwendete Bitzahl kannst du ja selbst bestimmen.

--
MFG Gernot

Re: µC via USB an PC anbinden


Thomas Rachel schrieb:

Quoted text here. Click to load it

Hallo,

was ist am UART bei höheren Geschwindigkeiten realtiv empfindlich? Bei
R232 Pegeln darf das Kabel nicht zu lang sein aber mit RS485 ist da
genug Reserve bis zu Megabaud.

Bye


Re: µC via USB an PC anbinden
Am 12.05.2010 11:53, schrieb Uwe Hercksen:

Quoted text here. Click to load it

Die Toleranzen beim Timing. Oder liege ich falsch?

Wenn die Clock des µC und die des Wandlers nicht hinreichend genau
übereinstimmen, kann es zu Übertragungsfehlern kommen. Und je höher die
Geschwindigkeit, umso geringer sind die absoluten Toleranzen.

Es sei denn, ich drehe - was ich aber eigentlich auch vermeiden wollte -
die Taktfrequenz des Controllers hoch, um genauer zu werden. Oder ich
stelle mich µC-seitig fest und verwende PC-seitig einen "krummen"
Baudratenwert. Auch nicht so wirklich schön; SPI würde mir wirklich
besser gefallen.

Eigentlich wolle ich im Bereich 2-max. 4 MHz arbeiten. SPI arbeitet
oftmals bei f(µC)/4; der UART kommt meistens nicht so hoch, zumindest
nicht mit Norm-Datenübertragungsraten.


Quoted text here. Click to load it

Wir arbeiten eher mit kurzen Leitungen (Leiterbahnen; Länge max. 1-2
cm). Das sollte kein Problem darstellen - wie gesagt, das


Thomas

Re: µC via USB an PC anbinden


Thomas Rachel schrieb:

Quoted text here. Click to load it

Hallo,

nein, die Takte müssen beim UART bei niedrigen Frequenzen genauso gut
übereinstimmen wie bei hohen. Nehmen wir als Beispiel 8 Datenbits, keine
Parity, je ein Start- und Stopbit, das sind zusammen 10 Bits. Der
Unterschied der Baudraten auf der Sende und Empfangsseite muß (genügend)
kleiner sein als ein halber Takt pro 10 Takte. Wenn also jeder Takt
besser ist als 2,5 % Abweichung vom theoretischen Sollwert geht die
Übertragung gut. Besser als 1000 ppm zu sein ist mit Quarzen kein
Problem. Manche Kombinationen aus Quarz und Baudratengenerator haben
allerdings ein Problem wenn man von z.B. 20 MHz ausgeht und nicht von
18,432 MHz, dann werden zwar 300 bis 19200 Baud noch genügend genau
getroffen, aber die Frequenzen darüber nicht mehr. Wird auf beiden
Seiten ein 18,432 MHz Quarz benutzt hat man dieses Problem nicht,
genauso wenn beide Seiten 20 MHz verwenden. Das Problem tritt nur auf
wenn auf der einen Seite 20 MHz benutzt wird und auf der anderen 18,432
MHz oder ganzzahlige Vielfache davon. Mit einem Teilerfaktor von 1040
oder 1041 kann man die gewünschte Baudrate von 600 Baud auch bei einem
20 MHz Quarz genügend genau treffen, mit 31 oder 32 geht das für 19200
Baud auch noch, aber darüber nicht mehr.

Bye


Re: µC via USB an PC anbinden
Am 12.05.2010 15:30, schrieb Uwe Hercksen:
Quoted text here. Click to load it

Stimmt - relativ. Nicht absolut. (Logischerweise.)


 > Nehmen wir als Beispiel 8 Datenbits, keine
Quoted text here. Click to load it

ACK.


 > Das Problem tritt nur auf
Quoted text here. Click to load it

Eben. Das Problem war bisher eben, daß ich einen FT232R und einen PIC18
jeweils mit internem Oszillator verwendet habe und deren jeweilige
Baudratenanpassungsmethode (Teiler) eingesetzt habe. Würde ich beide mit
noch einem Quarz versehen, würde es wohl besser gehen. Aber dann kann
ich genausogut auch synchron (mit Clockleitung) arbeiten, wäre dann wohl
unproblematischer.

Aber wie gesagt - UART ist eh draußen, da sich der Pullup des FT232R
AFAICS nicht abschalten läßt.


Thomas

Re: âµC via USB an PC anbinden

 On 12 May 10 at group /de/sci/electronics in article

Quoted text here. Click to load it



Nö, RS232 toleriert +-3 1/8 % in der Clockrate. So schlechte/falsche  
Quarze kriegst Du heutzutage garnicht mehr. Selbst RC Oszillatoren  
kriegt man besser hin.

Quoted text here. Click to load it

Nun mal Butter bei die Fiche: wieviel Byte/sec musst Du denn übertragen?
Kontinuierlich oder Burst?

Quoted text here. Click to load it


Wenn Du bei den Leiterlängen Probleme mit RS232 bekommst, dann hast Du  
noch ganz andere Probleme!

Saludos Wolfgang

--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
We've slightly trimmed the long signature. Click to see the full one.
Re: µC via USB an PC anbinden
Am 13.05.2010 05:37, schrieb Wolfgang Allinger:

Quoted text here. Click to load it

Problem sind die Teiler, mit denen eine Standard-Datenrate nicht ganz
genau hinzubekommen war. Vielleicht könnte eine Verbesserung erzielt
werden, wenn mit einer nicht standardmäßigen Datenrate gearbeitet wird,
dann kann man auf beiden Seiten genau(er) arbeiten.


Quoted text here. Click to load it

Wie parallel bereits geschrieben: angepeilt sind 1 MBit/s. Das ist
Faktor 20 zum bisherigen System.

Burst, d. h. Übertragung nach Anfrage durch PC-Applikation.
Dabei kann es aber durchaus mal passieren, daß eine solche Übertragung
aus mehreren Hundert Abfragen besteht (ca. 16 Byte), auf die eine
Antwort von bis zu 1 kiB folgt.


Thomas

Re: âµC via USB an PC anbinden

 On 14 May 10 at group /de/sci/electronics in article

Quoted text here. Click to load it



Genau braucht es eben nicht zu sein +-3 1/8% also +-3,125% typisches  
Indianermass mit dem Bruch :)

Kannst Du für die UARTS einen externen gemeinsamen Clock anlegen?

Quoted text here. Click to load it

Solange alle in dem +-3,125% Fenster der gemeinsamen nominalen Baudrate  
liegen, ist alles Paletti. Beispiel 38.400 Bd und 16fach Clock:  
(61%4.440 Hz) da funzt alles mit Clocks zwischen rund 612,5 kHz und  
633,6 kHz.


Quoted text here. Click to load it


Das sollte bei Deinen paar cm Leitungslängen machbar sein, falls Du  
UARTs hast die mit 16 oder 32 MHz Clock arbeiten. Die machen typisch 16  
bzw. 32 fach sampling eines Bitframes um eben den Jitter  
rauszuklabüstern. Hab keine Ahnung, wie hoch aktuelle UARTS kommen.

Quoted text here. Click to load it

Undurchsichtige oder komisches Verfahren. Ist da eine Abfrage dabei, die  
den ganzen Kram startet? Oder ist das eine Wettrennschaltung?
Warum dann nicht eine gezielte Aufforderung mit allen gewünschten Daten?

Oder kommt auf jede Abfrage mit 16 byte eine Antwort mit bis zu 1kB?

Oder generell zykl. Aussendung mit allen Daten und der Empfänger sucht  
sich selber das raus, was er will. Dann braucht es kaum Kommunikation.

Warum überhaupt 16byte = 128bit als Anfrage? Kann mir kaum vorstellen,  
dass es 2^128 verschiedene Antworten gibt. Da ist noch was mächtig  
undurchsichtig. Zumindest für mich, stellt sich die Frage: warum  
einfach, wenns auch umständlich geht! :O


Saludos Wolfgang


--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
We've slightly trimmed the long signature. Click to see the full one.
Re: µC via USB an PC anbinden
Am 14.05.2010 20:33, schrieb Wolfgang Allinger:

Quoted text here. Click to load it

Naja, mit gemeinsamem Clock wäre ich ja schon wieder synchron... Wäre
evtl. machbar, aber eher schwierig.

Aber wie gesagt, der FT232 fällt eh flach, weil sich sein D+-Pullup
nicht abschalten läßt. Wir werden jetzt wohl den Weg gehen, den Rolf
vorgeschlagen hat.


Quoted text here. Click to load it

Hmmm... wir hatten bereits bei 57600 sporadisch zusätzliche Nullbytes,
die übertragen wurden...


Quoted text here. Click to load it

Womöglich war das bislang das Problem, daß aufgrund zu geringer
Taktfrequenz die Ungenauigkeit zu hoch war ("mangelnde Abtastbarkeit",
wenn man das so nennen kann)

Quoted text here. Click to load it

Bin mir nicht sicher, wie detailliert ich werden darf, aber es ist ein
Frage-Antwort-Spiel, wo jede Nachricht in einem Frame steckt (Start- und
Stop-bytes, CRC-gesichert)


Quoted text here. Click to load it

Im Prinzip ja. Wobei die "großen" Antworten zwar anzahlmäßig in der
Minderzahl sind (etwa 20%), aber zeitmäßig klar dominieren und in
Zukunft potentiell noch größer als heute (Speicher auslesen).

 > Warum überhaupt 16byte = 128bit als Anfrage? Kann mir kaum vorstellen,
Quoted text here. Click to load it

Die 16 Byte war ein Richtwert, manche Kommandos sind auch kürzer (inkl.
Framing 7 Bytes).


Thomas

Re: âµC via USB an PC anbinden

 On 18 May 10 at group /de/sci/electronics in article

Quoted text here. Click to load it



Nein, synchrone DFÜ arbeitet völlig anders. Ganz grob: Man hat keine  
Start und Stopbits, also im Prinzip nur die Nutzdaten und die Daten sind  
dauernd synchron(isiert). Wenn aktuell keine Daten zur Übertragung  
anstehen, werden Fülldaten gesendet, damit die Modems nicht aus dem  
Tritt kommen. Das führt dazu, dass man im Mittel 1/2 Date zeitlichen  
Versatz hat, da ja immer auf den passenden Schlitz gewartet werden muss.
Also im Mittel 4 bitclocks, was schlimmstenfalls fast 8 clocks werden  
kann.

Bei einer asynchronen Übertragung wird nur gesendet, wenn es was zu zu  
übertragen gibt. Dazu braucht man aber noch die Start und Stopbits für  
jede Date. Im Regelfall hast Du eben nur das Start und Stopbit  
abzuwarten und für ein Zeichen nur einen Verzug von 2 bitclocks.

Dh. für einzelne Bytes bist du wesentlich schneller, handelst Dir aber  
die zusätzlichen Start und Stopbits ein, also mehr overhead auf der  
Leitung, dafür ein simples Protokoll je Zeichen.

Bei synchroner DFÜ hast Du dafür einen deutlichen Mehraufwand auf der  
Treiberseite auch die Fehlersicherung ist deutlich aufwändiger...

Quoted text here. Click to load it



Irgendwas stimmt da nicht, NULL-Bytes kenne ich nur von DEC in derem  
verpfuschten LA36 Betrieb und bei MIESENS in deren völlig vermurksten  
3964R Protokoll. Wer NULL-Bytes braucht/benutzt, hat einen kräftigen  
Design-Fehler und das RS232 absolut nicht verstanden.



Quoted text here. Click to load it


Übliche UARTs haben immer 16/32 fache Bitrate-Clock. Einige wenige  
hatten für den TX auch optional 1-fache Clockrate. Aber RX immer mit 16/
32 fach Abtastung.


Quoted text here. Click to load it


Was soll das CRC Gedöns bei ein paar cm Leitungslänge bringen? Wenn Du  
da CRC Fehler bekommst, hast Du ein echtes Hardware Design Problem!

Quoted text here. Click to load it




Sorry, erscheint mir alles recht unausgegoren für ein paar cm  
Leitungslänge. Alles nach dem Motto: Angst essen Seele auf!

Setz das Parity richtig (um Unterbrechung und Stuck abzufangen) und  
werte es richtig aus, dann hast Du bei den paar cm keine Problem.

Falls doch, dann taugt das Design der HW nichts.

Saludos Wolfgang


--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
We've slightly trimmed the long signature. Click to see the full one.
Re: µC via USB an PC anbinden

Quoted text here. Click to load it
 
'Glatte' Datenraten wie 750 kBit/s oder 1 MBit/s gehen mit dem FT232RL
problemlos. Sogar mit einer normalen WinAPI Anwendung, z.B. mit HTerm.
Ich passe daher die Datenrate immer an die µC Taktfrequenz an ;-)
 
Grüße
  Robert

Re: µC via USB an PC anbinden
Quoted text here. Click to load it

Ich dachte, es geht um 'ne Verbindung zwischen Chips auf dem gleichen
Board? Da kann man auch die vollen 3MBit, die der FT232R kann ohne
Probleme nutzen..

Re: µC via USB an PC anbinden
Hi Thomas,
Quoted text here. Click to load it

Wieso? ich habe ganze nächte mit 200kBd/s aufgezeichnet, ohne dass es zu
Problemen gekommen wäre.

Marte



Re: âµC via USB an PC anbinden

 On 12 May 10 at group /de/sci/electronics in article

Quoted text here. Click to load it



Was verstehst Du unter höherer Geschwindigkeit?
Was verstehst Du unter empfindlich?
Was hast Du für Kabellängen? Vermutlich nur kurze Strecken von im  
einstelligen m-Bereich, da Du was von USB und SPI schreibst.

Weisst Du überhaupt, was synchrone Anbindung/Übertragung ist? USB fällt  
garantiert nicht darunter und bei SPI hätte ich da auch gewisse Zweifel.

Also ich täte mir eine synchrone Übertragung nur noch über meine Leiche  
an. Das muss man nicht haben.

So genug aus dem Fenster gelehnt. :)

Saludos Wolfgang
--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
We've slightly trimmed the long signature. Click to see the full one.

Site Timeline