Forum: Mikrocontroller und Digitale Elektronik USB Übertragung


von Tobias (Gast)


Lesenswert?

Hallo,

für mein neues Projekt muss ich vom PC aus Daten mit einer
Übertragungsgeschwindigkeit von minimal 2 Mbyte\s zu einem Controller
(wahrscheinlich AVR) übertragen, der sie dann auf eine HDD schreibt.
Da bei solchen Geschwindigkeiten die Serielle Schnittstelle nicht mehr
reicht, dachte ich an USB. Leider scheint das nicht so einfach zu sein,
vor allem von den Treibern her.

Hab mich bischen umgeschaut und bin auf den USBN9603 gestoßen, der
einen parallelen Mikrocontroller Interface besitzt. Wäre der für meine
Aufgabe geeignet und kann ich ihn aus meinen Java oder C Programmen
ansprechen ohne mir selbst ein Treiber zu schreiben, denn damit habe
ich gar keine Ahnung?

Wäre für jeden Tipp dankbar
MFG Tobias

von Schoaschi (Gast)


Lesenswert?

Bietet der Herstelle nicht schon fertige Treiber für deine Baustein an?

von A.K. (Gast)


Lesenswert?

> von minimal 2 Mbyte\s zu einem Controller
> (wahrscheinlich AVR) übertragen

Also gleichzeitig USB rein und IDE raus mit 2MB/sec. Du bist sicher,
dass der AVR das hinbekommt?

von Tobias (Gast)


Lesenswert?

Ich hab auf der Seite von National Semiconductor gesucht und eine App.
Note gefunden ( http://www.national.com/an/AN/AN-1222.pdf ), in der ein
Beispielprogramm is. Kanns sein, dass die schon die auf dem PC
vorhandenen Treiber verwendet?

MFG Tobias

von Rufus T. Firefly (Gast)


Lesenswert?

Zwei MByte/sec kannst Du mit dem USBN9603 nicht übertragen, der ist
nämlich nur ein USB1.1-Device-Controller. Und mit USB1.1 sind mehr als
12 MBit/sec Brutto nicht möglich.

Um 2 MByte/sec zu übertragen musst Du schon USB2.0-Hardware verwenden

Ein AVR würde eine derartige Datenrate allerdings sowieso nicht
ansatzweise verarbeiten können. Selbst bei 16 MHz Takt hätte der AVR
gerade mal 8 Takte pro übertragenem Byte zur Verfügung stehen.

Wenn Du tatsächlich eine Festplatte via USB an einen PC anschließen
möchtest und nicht auf eine der ungezählten fertigen Lösungen
zurückgreifen möchtest, empfiehlt sich der Einsatz einer
USB-zu-IDE-Bridge, wie dem CY7C68300, den man beispiel bei Segor
beziehen kann.

Wenn das betreffende Gerät vom PC getrennt ist, kann der '68300 den
IDE-Bus freigeben, so daß Du mit einem Microcontroller auf die
Festplatte zugreifen kannst.
Das ist ein beispielsweise in einigen Festplatten-mp3-Playern
angewandtes Konzept und bietet den Vorteil der sehr hohen
Übertragungsgeschwindigkeit des '68300, der -sofern die Festplatte
mitkommt- auch 20 MByte/sec übertragen kann.
Obendrein ist keinerlei Devicetreiberentwicklung erforderlich, weil der
'68300 die "USB Mass Storage Device Class" implementiert, die jedes
anständige OS von Hause aus unterstützt.

Was exakt möchtest Du Dir da bauen?

von Tobias (Gast)


Lesenswert?

Danke für deinen Tipp!!!
Das mit dem CY7C68300 is ne gute Idee, denn 15 Mbyte\s gibt meine
Festplatte her und des wäre in bezug auf mehrere GB dann doch etwas
schneller als die AVR Lösung. ;-)

Wird dann die Festplatte mit irgendeinem FAT oder ähnlichem
beschreiben/gelesen, oder kann ich die einzelnen Sektoren auf der HDD
selber beschreiben und lesen?

Bauen möchte ich für zu Hause eine Art Musikserver, der Musik an bis zu
4 Anlagen in CD-Qualität ausgeben kann. Da bei CD-Qualität große
Datenmengen anfallen müsste ich halt schnell auf die Festplatte vom PC
aus schreiben können, da sonst das laden von neuen CD´s ziemlich lange
dauern könnte.

MFG Tobias

von Rufus T. Firefly (Gast)


Lesenswert?

Der PC gibt das verwendete Dateisystem vor; die USB-zu-IDE-Bridge stellt
die Festplatte lediglich als blockorientiertes Gerät vor.

Mit Spezialsoftware auf dem PC könntest Du also die Festplatte mit
beliebigen eigenen "Dateisystemen" betreiben; sonderlich sinnvoll
erscheint mir das aber nicht.
Praktischer ist es sicherlich, ein übliches Dateisystem zu verwenden,
das von jedem System ohne zusätzliche Software etc. verstanden wird.
Das läuft auf FAT32 heraus; NTFS ist nicht wirklich dokumentiert; FAT16
kennt eine maximale Partitionsgröße von 2 GByte (in Ausnahmefällen auch
4, aber das ist sehr rar).
FAT32 lässt sich allerdings aus nichttechnischen Gründen nicht ohne
Hilfsmittel unter Windows2000/XP mit mehr als 32 GByte Größe anlegen,
aber das ist eine reine Willkürgrenze, die auch nur beim Formatieren
greift.

Du solltest also auf Deinem System FAT32-Unterstützung implementieren.
An was für einen Controller hast Du gedacht? Für einen AVR klingen die
Anforderungen etwas zu heftig (vier CD-Audio-Streams simultan
abspielen, das sind 4 * 174 kByte/sec ...).

von Tobias (Gast)


Lesenswert?

Da bin ich auch noch am überlegen. Bis jetzt hab nur überlegt, was der
"Server" können sollte und wollte erstmal wissen, ob des mit USB
machbar is und jetzt such ich nach nem geeignetem Controller.

Ein LPC 21xx wird wohl ned reichen, weil ich gehört hab, dass die vom
in/out langsamer als die AVR sein sollen!? Wie wäre es mit einem SX28,
die gibts ja bis 75Mhz, nur hab ich damit überhaupt keine Erfahrung.
Was könntet ihr mir so empfehlen?

MFG Tobias

von Jörn G. aus H. (Gast)


Lesenswert?

Anstatt den ATA-Bridge-Chip zu kaufen, würde ich gleich eine fertige
Bridge kaufen. Mit 2,5" Gehäuse kostet sowas bei reichelt etwa 10,-
und funktioniert bereits. Die Platine dann einfach entnehmen, Gehäuse
evtl. weg und dann gleich mit den Dingen in deinem Projekt fortfahren,
die man nicht fertig kaufen kann.

jörn

von Rufus T. Firefly (Gast)


Lesenswert?

Bei der Verwendung einer fertig aufgebauten USB-zu-IDE-Bridge tritt das
Problem auf, daß diese bei Nichtverbundensein mit dem PC die
IDE-Schnittstelle in Ruhe lassen muss; nicht jeder
USB-zu-IDE-Bridgecontroller sieht eine entsprechende Steuerleitung vor,
mit der er seine Bustreiber in den Tristate schaltet.
Ohne die müsste das aufwendig mit externen bidirektionalen Bustreibern
nachgebildet werden, was das bei schnellerer IDE-Ansteuerung
(UDMA-Modi) nicht ganz triviale Timing sicherlich durcheinanderbringen
würde.
Auch bekommt man nicht von jedem auf irgendwelchen Fertigplatinen
verbauten Bridgecontrollern ein Datenblatt, um deren Verhalten
überhaupt beschrieben zu sehen.
Davon abgesehen ist das natürlich keine schlechte Idee ...

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.