Hallo, gibt es einen IC der Bereits den USB-Hardwarestack implementiert hat und man diesen IC mit einem ARM ohne O/S einfach ansprechen kann - über SPI etc. Die Datenrate von USB sollte auf jeden Fall 10MByte/s betragen. Zweck: Über USB (ist fest) kommen Daten an diesen ARM und müssen lediglich auf mehrere RS485-Ausgänge aufgeteilt werden + ein paar Steuerdaten für den Controller selbst. Also eigentlich keine große Aufgabe. Hardwaremäßig wäre es deshalb am Schönsten, wenn man einen kleinen ARM7 verwenden könnte, der bereits Flash und RAM ausreichend integriert hat (daher ist ein O/S auch nicht so wünschenswert)... Der ISP1160 ist zwar technisch (USB-SPI) gesehen ideal, hat aber leider keinen USB-Stack implementiert. Bei Maxim heißt es, dass die entsprechenden ICs nicht mehr für neue Sachen verwendet werden sollen. Gruß Bernd
Bernd Schuster schrieb: > Der ISP1160 ist zwar technisch (USB-SPI) gesehen ideal, hat aber leider > keinen USB-Stack implementiert. Bei Maxim heißt es, dass die > entsprechenden ICs nicht mehr für neue Sachen verwendet werden sollen. Hallo, USB komplett in Hardware gibt es nicht. Das Mittel der Wahl ist ein µC, der für USB "vorbereitet" ist: die nötige Hardware zum Senden und Empfangen ist als Peripherieschaltung eingebaut und die nötige Software wird mitgeliefert bzw. steht zum Download zur Verfügung. Diese muss man dann mit der eigenen Aufgabenstellung zusammen zum Laufen bringen. Auch fertige Clientschaltungen wie USB-V24 sind i.d.R. solche Prozessoren. Gruss Reinhard
>USB komplett in Hardware gibt es nicht. Das Mittel der Wahl ist ein µC, >der für USB "vorbereitet" ist: welche ICs kommen hier z.B. zum Einsatz? Unter FTDI hab ich zwar ein paar gefunden, allerdings sind die nicht besonders schnell was die Übertragung zwischen dem USB-µC und dem eigentlichen µC angeht. Gruß Bernd
USB vollständig in Hardware gibts auch, und zwar als IP-Cores für FPGAs. Allerdings kosten die richtig Geld und sind einigermaßen aufwendig. Für die geforderten 10MB/s könnte man einen aktuellen FT2232H nehmen, der soll das wohl angeblich jetzt schaffen. Oder halt den USB 2.0 HighSpeed Klassiker: Cypress FX2LP (Cy7C68013A). Das ist ein kompletter 8051 (grusel) µC mit USB 2.0 Enigine, die das USB Protokoll nahezu in Hardware abhandelt. Der schafft etwa 40MB/s.
Danke für die beiden Controller-Namen: >Das ist ein kompletter 8051 >(grusel) µC mit USB 2.0 Enigine, die das USB Protokoll nahezu in >Hardware abhandelt. Wo befindet sich denn die Schnittstelle, was der Controller selbst macht und was man hinzufügen muss?? Bis jetzt hab ich lediglich für den ARM-Bereich eine ToolChain und nicht für die 8051 Controller. D.h. gut wäre es, wenn dieser Controller ohne zusätzliche Programmierung die Daten z.B. via SPI an meinen eigentlichen Controller weiterleitet. Gruß Bernd
"Die Daten" gibt es bei USB nicht so direkt... Da gibt es mehrere "Endpoints", die jeweils ihre eigenen Datenströme senden/empfangen, und das auch noch blockweise... Ein einfacher und universeller USB->SPI Umsetzer ist also nicht möglich. Verrat vielleicht mal etwas mehr über deine Anwendung, dann kann man dir auch konkret zu einzelnen Lösungen raten. Vorneweg: Willst du ein Device oder einen Host implementieren?
ich möchte gern einen USB Device implementieren. Die Nutzdaten werden von einem x86 Controller Basis zu einem ARM7 (steht noch nicht fest welcher) transportiert werden. Der ARM7 soll lediglich die Nutzdaten an RS485-Ausgänge (4 Stück) weiterleiten. Der x86 Controller bietet diese Möglichkeit nicht.
Bernd Schuster schrieb: > Danke für die beiden Controller-Namen: > >>Das ist ein kompletter 8051 >>(grusel) µC mit USB 2.0 Enigine, die das USB Protokoll nahezu in >>Hardware abhandelt. > > Wo befindet sich denn die Schnittstelle, was der Controller selbst macht > und was man hinzufügen muss?? Bis jetzt hab ich lediglich für den > ARM-Bereich eine ToolChain und nicht für die 8051 Controller. D.h. gut > wäre es, wenn dieser Controller ohne zusätzliche Programmierung die > Daten z.B. via SPI an meinen eigentlichen Controller weiterleitet. Die Schnittstelle befindet sich im RAM. Die OUT-Endpoints werden vom PC aus mit den Daten gefüllt, die IN-Endpoints vom 8051 aus. Hat der PC einen Endpoint gefüllt, bekommst du einen Interrupt. Wenn du einen EP gefüllst hast, musst du ein Register mit der Länge der zu übertragenden Daten beschreiben, dann wird der Endpoint dem PC zur Verfügung gestellt und kann abgeholt werden. Natürlich ist das alles recht flexibel konfigurierbar, speziell die Interrupt bei voll/leer usw. Die zweite Möglichkeit wäre, die Daten am parallelen Interface des FX2 ausgeben zu lassen. Dazu musst du allerdings ein paar Register in der Firmware setzen. Ganz ohne Firmware tut der Chip zwar auch was, aber die Daten bleiben im Chip. Die power-on Firmware ist quasi nur der Bootloader. Wenn du mit solchen Chips arbeiten willst, ist ein recht hohes Verständnis von USB nötig, weil du eben unten auf der Endpoint-Ebene arbeitest. Wenn du das einmal intus hast, ist der Chip klasse, der kann nämlich sämtliche USB Geräte darstellen. Vom HID über MSD bis zum eigenen Verbundgerät mit mehreren Interfaces usw. Durch die quasi unbegrenzten Möglichkeiten hast du allerdings auch eine steile Lernkurve. Das Technical Reference Manual ist 350 Seiten dick....
Das ist etwas illusorisch. USB ist keine dumme Schnittstelle wie RS232 und benutzt je nach Anwendung unterschiedliche Protokollelemente. Einen fertigen Chip nur für die USB Kommunikation der dann 10MByte/s durchhält und das auch noch brauchbar an einen externen Microcontroller weitergibt wird es in der Form nicht geben. Ich würde empfehlen einen Microcontroller mit USB (High Speed) SIE zu nehmen und dann halt den Protokollstack des Herstellers auf die Anwendung anzupassen, alle Hersteller von USB Chips bieten auch Samplecode an, das sollte also gehen.
Bernd Schuster schrieb: > ich möchte gern einen USB Device implementieren. > > Die Nutzdaten werden von einem x86 Controller Basis zu einem ARM7 (steht > noch nicht fest welcher) transportiert werden. Der ARM7 soll lediglich > die Nutzdaten an RS485-Ausgänge (4 Stück) weiterleiten. Der x86 > Controller bietet diese Möglichkeit nicht. Nach dieser Beschreibung würde ein USB-COM485-PLUS4 am PC reichen.. http://www.ftdichip.com/Products/EvaluationKits/USB-COM485-PLUS4.htm ist ein USB-RS-485-Adapter (FT4232H basiert) mit vier getrennten RS-485-Schnittstellen. Auf jeder Schnittstelle sind 10 Mbps möglich.
Hallo Bernd Schuster, Du willst also 10MByte/s über SPI verschicken? Das wären ja dann 80 MHz. Ich denke, der USB ist hier das kleinere Problem. Gruß Potter
>Die Schnittstelle befindet sich im RAM. Die OUT-Endpoints werden vom PC >aus mit den Daten gefüllt, die IN-Endpoints vom 8051 aus. d.h. aus dem 8051 kommen die Nutzdaten, die über USB übertragen worden sind, wieder raus, und stehen entweder am I2C, oder dem Businterface 16Bit breit. BTW: Gibt es einen ARM7 Controller, der diese ankommenden Daten (Daten- und Adressbus) mittels DMA im internen RAM z.B. einfach speichern kann, ohne dass die CPU selbst was mitbekommt? Gruß Bernd
ist es eigentlich von der Implementierung das gleiche, den 8051 zu verwenden von Cypress oder einen ARM7 / ARM9 mit integriertem USB (meistens nur Full Speed)? Oder gibt es beim Cypress IC noch irgendwelche Vorteile? Wieviel MBit/s schafft ein normaler ARM7 - schaffen die wirklich die besagten 12MBit/s stabil?
Bernd Schuster schrieb: >>Die Schnittstelle befindet sich im RAM. Die OUT-Endpoints werden vom PC >>aus mit den Daten gefüllt, die IN-Endpoints vom 8051 aus. > > d.h. aus dem 8051 kommen die Nutzdaten, die über USB übertragen worden > sind, wieder raus, und stehen entweder am I2C, oder dem Businterface > 16Bit breit. Die Daten liegen ganz normal in einem RAM. Hardwaretechnisch sind das FIFOs, die kann man automatisch nach außen führen (Slave-FIFO Interface), oder aber man schreibt eine Firmware, die irgendwas damit anstellt. Zum Beispiel an I2C raus schreiben. Das musst du aber dann selber machen. HW-Unterstützung gibts nur das Parallel-Interface. Es gibt da noch ein GPIF, das kann man irgendwie am PC grafisch programmieren..... Aber ich denke, ein FT4232H wäre wirklich was sinnvolleres für deine Zwecke...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.