Datenuebertragung Mikrocontroller -> PC per USB oder TCP/IP

M

Michael Eggert

Guest
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.
 
Michael Eggert <m.eggert.nul@web.de> wrote:

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?
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.


Ich habe beim googlen was von "TCP Stack" gelesen, was auch immer das
ist,
You make my day. :)

´99 musste man das wohl noch selbst machen. Gibts da inzwischen
Lösungen, die das gleich drin haben?
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.)
 
FT232BM sollte das können.
www.ftdichip.com

Unter http://www.ftdichip.com/FTProduct.htm
genauere Daten.
 
Michael Eggert wrote:

per TCP (bevorzugt) oder USB zum PC übertragen, Latenzzeit ist egal.
Das ist gut, da Latenz z.B. bei USB ein echtes Problem ist (mind.
1ms).

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.
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.

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?
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
 
On Mon, 28 Jul 2003 16:08:21 GMT, Olaf Kaluza <olaf@criseis.ruhr.de>
wrote:

Hi!

Hm...schau dir mal USBN9603/4 (National Semiconductor) an. Ist ein USB
Controller mit DMA-Support.
Mach ich gleich...

Ich habe beim googlen was von "TCP Stack" gelesen, was auch immer das
ist,

You make my day. :)
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).

´99 musste man das wohl noch selbst machen. Gibts da inzwischen
Lösungen, die das gleich drin haben?

Das haengt wohl von deinem Geldbeutel ab.
Na ich sag mal, bis 200 Taler wär vertretbar.

Wenn du ein dickeres System nimmst auf dem breits Linux laeuft dann
koennte es noch ganz guenstig sein.
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.
 
Michael Eggert <m.eggert.nul@web.de> writes:


[...]

Also Klartext: Ich hab keine Ahnung, was da auf low-level Ebene läuft.
Ich will bloß meine Messwerte loswerden :)
[...]

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

Wenn du ein dickeres System nimmst auf dem breits Linux laeuft dann
koennte es noch ganz guenstig sein.

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,
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.

[...]

Wie schauts denn mit PCMCIA-Netzwerkkarten aus? Nehmen die mir Arbeit
ab? Hat das schonmal jemand gemacht?
Nutzt gar nichts.
--
Dr. Juergen Hannappel http://lisa2.physik.uni-bonn.de/~hannappe
mailto: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
 
Ben Becker <ben000becker@yahoo.com> wrote:

FT232BM sollte das können.
www.ftdichip.com
Ich geb zu ich bin zu faul jetzt das Datenblatt zu lesen, aber der
kann 1MB/s?

Olaf



--
D.i.e.s.S. (K.)
 
On 28 Jul 2003 21:02:05 +0200, Juergen Hannappel
<hannappe@lisa2.physik.uni-bonn.de> wrote:

Hi!

Es gibt Scheckkartengerosse PCs mit Linux drauf, die koennen sowas und
liegen (eventuell) soeben noch in denem Preisrahmen.
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?

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

Nutzt gar nichts.
Mist. Wieder eine Idee weniger.

Gruß,
Michael.
 
Ben Becker wrote:
FT232BM sollte das können.
www.ftdichip.com
8Mbit/s?
Du hast das Datenblatt gelesen?
Wenn dann macht das der FT245BM. Aber ob das wirklich dauerhaft zu erreichen
ist?



--
Matthias Weißer
matthias@matwei.de
http://www.matwei.de
 
Michael Eggert <m.eggert.nul@web.de> writes:

On 28 Jul 2003 21:02:05 +0200, Juergen Hannappel
hannappe@lisa2.physik.uni-bonn.de> wrote:

Hi!

Es gibt Scheckkartengerosse PCs mit Linux drauf, die koennen sowas und
liegen (eventuell) soeben noch in denem Preisrahmen.

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?
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/~hannappe
mailto: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
 
On Mon, 28 Jul 2003 19:56:14 +0200, "Ben Becker"
<ben000becker@yahoo.com> wrote:

Hi!

FT232BM sollte das können.
www.ftdichip.com
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.
 
On Mon, 28 Jul 2003 21:24:11 +0200, aguja@despammed.com (Aguja) wrote:

Hi!

Du könntest es mit einem IPC@Chip versuchen, 66 EUR (Weiß nicht, wie der
Taler gerade steht...).
Ziemlich genau 1:1 zum Euro.

Leider kann ich Dir nicht garantieren, ob der die
1 MBit/s schafft - ich weiß nur, daß er nicht mal das 10 Mbit-Interface
ganz ausnutzen kann.
Tja, das "Datenblatt" ist da auch nicht sehr gesprächig :-(

Gruß,
Michael.
 
On 28 Jul 2003 21:33:50 +0200, Juergen Hannappel
<hannappe@lisa2.physik.uni-bonn.de> wrote:

Hi!

Soweit ich weis nein, es ist eher ISA-Bus oder noch simpler.
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.

Auf dem
Mainzer ist die ganze zusaetzlich benoetighte Logik in einem eher
kleinen CPLD von Lattice untergrbracht, definitiv ohne PCI.
Äähm, auf dem Mini-PC oder extra?

BTW: Mit 10Base-Ethernet is ein MByte/sec schon hart an der Grenze
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.

Ob es diche Scheckkartengerossen PCs auch mirt
100Base gibt weiss ich nicht...
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.
 
Michael Eggert <m.eggert.nul@web.de> wrote:


Wie sind die Prognosen zur tatsächlich erreichbaren Datenrate?
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.)
 
Michael Eggert <m.eggert.nul@web.de> wrote:


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?
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.)
 
Hallo,

Soweit ich weis nein, es ist eher ISA-Bus oder noch simpler.

Den gibts noch? :)
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.

Ob es diche Scheckkartengerossen PCs auch mirt
100Base gibt weiss ich nicht...
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
 
On Mon, 28 Jul 2003 20:57:38 GMT, Olaf Kaluza <olaf@criseis.ruhr.de>
wrote:

Hi..

Aber mir kam da gerade noch eine megabrilliante Idee. (man muss sich
ja mal loben)
*lob*!

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.
Muss ich bei Gelegenheit mal schauen..

Gruß,
Michael.
 
On Mon, 28 Jul 2003 21:11:34 +0000 (UTC), mwnews@pentax.boerde.de
(Matthias Weingart) wrote:

Hi..

Das Problem ist ja, das man die Daten von der einen Seite des Chips (da
wo die Daten herkommen) zur andren (USB-SIO) rueberschaufeln muss. Und
für 1 MByte/s sind die Controller per Software einfach zu lahm.
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 :)

Wie sehen denn die Messdaten aus, die übertragen werden sollen?
Wo kommen die her?
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.

Der Nachfolger von dem Anchor USB Chip (FX2), jetzt Cypress.com, hat
einen recht leistungsfähigen "Datenschaufler" auf dem Chip drauf. Der
sollte dafuer geeignet sein. Gibt es dann auch mit USB2.0. 1 MByte/s
sind mit USB1.1, vernuenftigem Treiber und heutigen CUP-Taktraten aber
noch zu schaffen.
Schau ich mir auch mal an.

Die 1MByte muessen ja auch noch (vor dem Transfer) vorher in einem
ebensogrossen RAM abgelegt werden? Brauchst du dann ja ev. einen FIFO
oder sowas, auch nicht gerade einfach da was passendes zu finden...
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.
 
On Mon, 28 Jul 2003 20:31:18 GMT, Olaf Kaluza <olaf@criseis.ruhr.de>
wrote:

Hi!

[245 will 1MByte/s schaffen]

Wie sind die Prognosen zur tatsächlich erreichbaren Datenrate?

So aus dem Bauch raus bist du verdaechtig nahe an der Grenze von
USB1.0. Da kommt schliesslich noch ein bisschen overhead zu.
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?

Und dann
kann es ja auch noch passieren das jemand der deine Schaltung benutzt
auch noch etwas anderes am USB-Port haengen hat oder?
Eigentlich weniger. Ist halt ein Messsystem, das es so wohl genau 1x
geben wird.


Was sind das eigentlich fuer Daten?
Verrechnete Bilddaten...

Ich meine kann man die vielleicht vor dem Versand packen?
....und zudem chaotisch. Und Reduktion kommt nicht in Frage.

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.
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.

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...
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.
 
Michael Eggert schrieb:
vielleicht bin ich ja zu blöd, aber das einzige, was ich unter
"hardware" gefunden hab, war eine käufliche Platine, die wie ein
RS-xxx zu Ethernet Wandler aussieht. Also zu nix nen Schaltplan.
Schaltplan ist eigentlich banal, einfach einen z.B. CS8900 an
den Bus gehängt, für den gibt es genogend Applikationen.

Und dann kommt noch eins dazu, immernoch gefühlsmäßig:
In 5 Jahren ist USB veraltet und FireWire so tot wie Video2000, bloß
TCP, das gibts dann immernoch.
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
 

Welcome to EDABoard.com

Sponsor

Back
Top