Datenuebertragung Mikrocontroller -> PC per USB oder TCP/IP

Moin!

Vorweg gesagt: Ich sitze also selbst noch vor der Kristallkugel, ist momentan alles nur Spekulation.

In einem Mikrocontroller fallen etwa 1x pro Sekunde 500kByte Messdaten an, und sollen binnen 0,5s aus dem Controller raus sein, also mit einer Datenrate von 1MByte/s. Die Peripherie soll die Messdaten dann per TCP (bevorzugt) oder USB zum PC übertragen, Latenzzeit ist egal.

Nun die Frage: Gibt es ein IC/Modul, in das ich in dieser Geschwindigkeit Daten reinschieben kann, und das diese dann über TCP oder USB überträgt? Der Mikrocontroller sollte nicht darauf warten müssen, daß er Daten loswerden darf, folglich müsste schon ein entsprechend großer FIFO integriert sein.

Oder: Ich könnte die Daten auch zur Übertragung in einem Ram ablegen. Gibt es ein IC/Modul, das selbständig die Daten aus einem Ram über TCP oder USB überträgt?

Ich habe beim googlen was von "TCP Stack" gelesen, was auch immer das ist, ´99 musste man das wohl noch selbst machen. Gibts da inzwischen Lösungen, die das gleich drin haben?

Gruß, Michael.

Reply to
Michael Eggert
Loading thread data ...

Hm...schau dir mal USBN9603/4 (National Semiconductor) an. Ist ein USB Controller mit DMA-Support. Ich hab aber selbst noch nichts damit gemacht, liegt hier nur so rum.

You make my day. :-)

Das haengt wohl von deinem Geldbeutel ab. Wenn du ein dickeres System nimmst auf dem breits Linux laeuft dann koennte es noch ganz guenstig sein.

Olaf

--
D.i.e.s.S. (K.)
Reply to
Olaf Kaluza

FT232BM sollte das können.

formatting link

Unter

formatting link
genauere Daten.

Reply to
Ben Becker

Das ist gut, da Latenz z.B. bei USB ein echtes Problem ist (mind.

1ms).

Nimm doch einfach einen 8051 Controller mit USB Core. Wir setzen in der Firma davon zwei ein:

*) TI TUSB 3210 *) Cypress EZ-USB (gibt es für USB 1.1 und USB 2.0).

Datendurchsatz liegt bei knapp unter 1 MByte/s. Der TI ist ein relativ simpler Controller, der TI typisch absolut unbrauchbar dokumentiert ist. Der EZ-USB ist der Standard-Controller für diese Anwendung und hat div. nette Features wie DMA und Hardware FIFOs.

Beide Controller können vom PC via USB oder aus einem I2C EEPROM gebootet werden.

TCP/IP würde ich nur machen, wenn man das wirklich benötigt. Die USB Controller lassen sich easy in C programmieren und der Aufwand ist relativ klein.

cu, Marco

--
S: Minolta: Winkelsucher (VN), VC-9

E-Mail: mb-news-a@linuxhaven.de
Deutsches Linux HOWTO Projekt: http://www.linuxhaven.de
Reply to
Marco Budde

Hi!

Mach ich gleich...

Gern geschehn! :-)

Also Klartext: Ich hab keine Ahnung, was da auf low-level Ebene läuft. Ich will bloß meine Messwerte loswerden :-) Auf der Gegenseite (PC) läuft wohl LabView. Momentan arbeite ich mit Version 6, die bringt einen TCP-Treiber mit (open(adresse,port), read, fertig). Möglicherweise schon seit etlichen Versionen, weiß ich nicht. USB kennts nicht. Evtl wird mal Version 7 angeschafft, aber eben nur evtl. Die hätte dann auch einen USB Treiber, wobei ich nicht weiß, ob der sich genauso einfach programmieren lässt. Und selbst wenn, dann wäre der TCP Treiber _mindestens_ eine Version älter (ausgereifter).

Na ich sag mal, bis 200 Taler wär vertretbar.

Ich dachte eigentlich eher an was kleines als an dicke Systeme. In das dicke System müssen die Daten auch erstmal rein. Ich sag mal, Schmerzgrenze wäre so bei 1 extra Ram für Datenübertragung + 1 AVR für Protokoll und Datenschieben + 1 Spezial-IC. Wobei ich das Programm im AVR (TCP-Stack, weiteres Protokoll) nicht neu erfinden wollte, sondern hoff(t)e, daß das schonmal jemand getan hat.

Wie schauts denn mit PCMCIA-Netzwerkkarten aus? Nehmen die mir Arbeit ab? Hat das schonmal jemand gemacht?

Gruß, Michael.

Reply to
Michael Eggert
[...]

[...]

Es gibt Scheckkartengerosse PCs mit Linux drauf, die koennen sowas und liegen (eventuell) soeben noch in denem Preisrahmen. So ein System wuerde eventuell einen grossen Teil der restlichen Logik einsparen, insbesondere wenn man noch en CPLD oder FPGA danebenpackt. An der Uni Mainz wurde mit so einem Teil z.B. ein extrem praktischer CAMC-Crate-Controller mit Ethernet gebaut, der alle anderen Crate-Controller an Benutzbarkeit weit uebertrifft und durch die einfache Kabelage (nur ein TP-Ethernetkabel) sogar billiger ist ale eine Loesung mit der man die Stabel von A2-Controllern., die ueberall runliegen nutzen koennte, da deren ultrateures 132-Poliges Kabel gespart wird.

[...]

Nutzt gar nichts.

--
Dr. Juergen Hannappel          http://lisa2.physik.uni-bonn.de/~hannappemailto:hannappel@physik.uni-bonn.de  Phone: +49 228 73 2447 FAX ... 7869
Physikalisches Institut der Uni Bonn Nussallee 12, D-53115 Bonn, Germany     
CERN: Phone: +412276 76461 Fax: ..77930 Bat. 892-R-A13 CH-1211 Geneve 23
Reply to
Juergen Hannappel

Ich geb zu ich bin zu faul jetzt das Datenblatt zu lesen, aber der kann 1MB/s?

Olaf

--
D.i.e.s.S. (K.)
Reply to
Olaf Kaluza

Hi!

Das ist dann aber auch von der Struktur nur ein PC, oder? Hieße also, ich müsste noch die Logik einer PCI-Karte aufbauen, um meine Daten überhaupt hineinzubekommen?

Mist. Wieder eine Idee weniger.

Gruß, Michael.

Reply to
Michael Eggert

8Mbit/s? Du hast das Datenblatt gelesen? Wenn dann macht das der FT245BM. Aber ob das wirklich dauerhaft zu erreichen ist?

-- Matthias Weißer snipped-for-privacy@matwei.de

formatting link

Reply to
Matthias Weißer

Soweit ich weis nein, es ist eher ISA-Bus oder noch simpler. Auf dem Mainzer ist die ganze zusaetzlich benoetighte Logik in einem eher kleinen CPLD von Lattice untergrbracht, definitiv ohne PCI. BTW: Mit

10Base-Ethernet is ein MByte/sec schon hart an der Grenze und erfordert eine eigene Netzwerkkarte, bei einem Switch dazwischen wuerde ich ertmal (mit zwei PCs) ausprobieren ob das ueberhaupt vernunftig geht. Ob es diche Scheckkartengerossen PCs auch mirt 100Base gibt weiss ich nicht...
--
Dr. Juergen Hannappel          http://lisa2.physik.uni-bonn.de/~hannappemailto:hannappel@physik.uni-bonn.de  Phone: +49 228 73 2447 FAX ... 7869
Physikalisches Institut der Uni Bonn Nussallee 12, D-53115 Bonn, Germany     
CERN: Phone: +412276 76461 Fax: ..77930 Bat. 892-R-A13 CH-1211 Geneve 23
Reply to
Juergen Hannappel

Hi!

Schon nicht schlecht, der ft8u245am will 1MByte/s können, mit 8bit parallel interface. Und die Beschaltung ist wirklich simpelst (hoffentlich klappt das auch auf der Gegenseite).

Wie sind die Prognosen zur tatsächlich erreichbaren Datenrate?

Gruß, Michael.

Reply to
Michael Eggert

Hi!

Ziemlich genau 1:1 zum Euro.

Tja, das "Datenblatt" ist da auch nicht sehr gesprächig :-(

Gruß, Michael.

Reply to
Michael Eggert

Hi!

Den gibts noch? :-) Da hatte ich vor etlichen Jahren mal ne I/O-Karte für gebaut, das war im wesentlich nur ein Adressdecoder und ein paar Latches, wenn ich mich recht entsinne. Natürlich kein DMA oder sowas... Also wenns sowas noch mit drauf ist, wär schon prima.

Äähm, auf dem Mini-PC oder extra?

Ich weiß, da schaut USB mit 12MBit/s aber auch nicht besser aus. Wobei ich nicht weiß, wie dort der overhead aussieht.

Immerhin brauche ich ja nur 500kByte/s. Auch wenn ich 500k in 0.5s aus dem Controller schaufeln will, danach ist der ja weitere 0.5s mit sich selbst beschäftigt, bis wieder 500k fällig sind. Wenns nicht anders geht, brauch ich halt 2 Buffer, die ich abwechselnd lese / schreibe.

Dennoch hab ich halt 500kByte/s schon fest eingeplant, da ist dann nicht mehr viel Spielraum.

Tja...

Welche Möglichkeiten gibts noch? USB 2.0? Da gibts aber noch keine ICs zum Spielen für, oder? FireWire? Technisch wohl überlegen, aber leider kaum verbreitet. Gibts hier ICs zum Spielen?

Gruß, Michael.

Reply to
Michael Eggert

So aus dem Bauch raus bist du verdaechtig nahe an der Grenze von USB1.0. Da kommt schliesslich noch ein bisschen overhead zu. Und dann kann es ja auch noch passieren das jemand der deine Schaltung benutzt auch noch etwas anderes am USB-Port haengen hat oder? Was sind das eigentlich fuer Daten? Ich meine kann man die vielleicht vor dem Versand packen? Vielleicht solltest ueber USB2.0 nachdenken. Ich haette jedenfalls bedenken ein neues Design zu starten und mich gleich so nahe an den Grenzen zu bewegen.

BTW: Fuer USB2.0 habe ich IMHO in Japan im Elektronikladen schon einen Einplatinenrechner rumliegen sehen. Und auch fuer TCP-IP. War IMHO H8 basiert. Muesste ich mir eigentlich mal mitbringen...

Olaf

--
D.i.e.s.S. (K.)
Reply to
Olaf Kaluza

Tja, in Japan schon. :-)

Aber mir kam da gerade noch eine megabrilliante Idee. (man muss sich ja mal loben) Verpass deinem Controller Dualportram und ein bisschen was drumherum (FPGA?) damit er nach aussen hin eine CF-Karte simuliert. Das kannst du dann erstmal mit dem billigsten USB2.0 Lesegeraet, oder seinen ausgeschlachteten Innerreien testen. Und vermutlich wird es auch einige Firmen geben die speziell fuer diese Anwendung ICs und Applikation anbieten.

Olaf

--
D.i.e.s.S. (K.)
Reply to
Olaf Kaluza

Hallo,

Ja, das nennt sich PC/104, ist elektrisch aber der normale ISA Bus. Vor kurzem habe ich im Internet sogar PC/104 Karten mit Prototypingarea gesehen. Bei Epay gibs die Rechner mit kleinem aber stetigem Angebot, eher selten jedoch mit 100MBit.

Kein Problem, neuere All-In-One PC's haben auch 100 MBit Ethernet. Die Programmierung wird natürlich auch einfacher auf einem PC im Vergleich zu einer MCU.

Gruß Martin

Reply to
Martin Clausen

Hi..

*lob*!

Muss ich bei Gelegenheit mal schauen..

Gruß, Michael.

Reply to
Michael Eggert

Hi..

In den 245 kann man wohl einfach per 8Bit parallel anlegen und Strobe ziehen reinpumpen, bis er sagt, daß er voll ist. Um letzteres auch noch abzufangen, würd ich zwei Rams parallel dazwischenschalten und immer abwechselnd vom Controller in eins schreiben und währenenddessen vom anderen über FPGA oder AVR in den 245 pumpen. Über solche Sachen hab ich schon öfters fies asynchrone Prozesse verknüpft, sogar in glue logic. War quick&dirty, besonders dirty, wenn ich write-Leitungen über Multiplexer geführt habe, das hat beim Umschalten schonmal witzige Effekte gegeben :-)

Bilddatenerfassung und -analyse. Gleiche Pixel verschiedener Bilder addieren und subtrahieren und Ergebnis rüberschieben. Sollte fürn DSP kein Problem sein, vielleicht gehts sogar mit AVR, wenn die Datenschiebereien davor und dahinter seperat laufen.

Schau ich mir auch mal an.

2 statische Rams je 512k x8 fürn 5er bei Reichelt und ein bissl Logik sollte eigentlich kein Problem sein, und leichter zu beschaffen als FIFOs entsprechender Größe.

Gruß, Michael.

Reply to
Michael Eggert

Hi!

[245 will 1MByte/s schaffen]

Jetzt seh ich grad, das Ding ist "USB 1.1 and USB 2.0" compatible. Bedeutet das, daß das Teil:

- an USB 2.0 nicht abstürzt, aber trotzdem mit 1.1-Geschwindigkeit trödelt und dabei genausoviel Buszeit frisst wie am 1.1 Bus? ODER

- an USB 2.0 zwar auf Dauer auch nicht mehr Daten rüberbekommt, die aber in kurzen, schnellen Paketen schickt, so daß genug Ressourcen übrigbleiben?

Eigentlich weniger. Ist halt ein Messsystem, das es so wohl genau 1x geben wird.

Verrechnete Bilddaten...

...und zudem chaotisch. Und Reduktion kommt nicht in Frage.

Nu frag ich mich, ob ich das mit dem 245 schon tu oder nicht. Obwohl -

480MBit/s aus 24MHz internem Takt - das wars wohl nicht.

Oder mir! :-)

Also eigentlich wär ja zu erwarten, daß die dann irgendwann eine Version des 245 mit echtem 2.0 hinterherschieben. Obwohl das stark nach HF riecht. Aber wenn, dann könnte man das Design vielleicht mit vertretbarem Aufwand anpassen.

Gruß, Michael.

Reply to
Michael Eggert

Michael Eggert schrieb:

Schaltplan ist eigentlich banal, einfach einen z.B. CS8900 an den Bus gehängt, für den gibt es genogend Applikationen.

Möglich, aber wie sieht es dann mit Deiner Applikation aus, braucht man die dann noch in der heutigen Form?

TCP hat ausserdem den Nachteil dass die Übertragung auf der Leitung nicht unbedingt geährleistet ist...

Gerald

Reply to
Gerald Oppen

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.