Hallo Leute, ich habe wirklich keine Ahnung in Sache USB, um so mehr freue mich um jede Hilfe Mein Problem: muss ein Treiber für ein USB für data exchange (PC-Device) entwickeln 1- lohn es sich überhaupt ein Treiber zu programmieren? wenn nein wo finde ich denn ein der meine Aufgabe löst. wenn ja was brauche ich denn? ich benutze ein PIC18F4450 (USB-fähiges uC von MicroChip) als Slave? MfG
Benutze doch einfach den FT232 Seriell-USB-Wandler. Der kostet zwar etwa 5 €, funktiniert dennnoch super. Der FT232 simuliert eine virtuelle COM-Schnittstelle, d.h. du musst dich nur im eine Serielle Komunikation kümmern, sprich RX und TX. Beispiele findest du sehr viele im Netz. Einfach unter serielle Schnittstelle schauen. Den Schaltplan findest du im Datenblatt des FT232. Gruß
Das ist unter OpenBSD und OS/2 recht einfach. Einfach in die API gucken. Ansonsten lohnt sich ein Blick auf http://www.usb.org/ dort kann man die Spezifikation sogar KOSTENLOS runterladen. Und wenn man gar keine Ahnung hat, lohnt sich ein Blick auf http://de.wikipedia.org/wiki/Universal_Serial_Bus
Also falls du mit Treiber wirklich einen PC-Treiber meinst, dann besorg dir irgendwo einen generischen USB-Treiber und programmier diesen an. z.B. -> "USBIO" von http://www.thesycon.de Selber programmieren kannst du vergessen. Oder meinst du vielleicht doch eher die USB-Implementierung auf der PIC-Seite?
Treiberentwicklung unter Windows ist nur was für Hardcoregurus und Ultracracks... aber: Für den 18F4450 gibts von Microchip die komplette Entwicklerunterstützung. Schau mal hier: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en021940 Zieh Dir mal die MCHPFSUSB_Setup - Package.... Da ist meines Wissens auch ein Treiber dabei, den Du nehmen kannst.
Schau dir vielleicht auch mal LibUsb-Win32 an... Dazu gibt es auch Beispielcode.
Für Bulk-Transfer wird wohl gerne das Treiber-Bespiel aus dem Windows DDK als Grundlage für MS Windows Treiber genutzt. Haben das DDK selbst nicht, aber die Anleitung auf MSN liest sich so, als sei alles gut vorgekaut - im einfachsten Fall wohl nur VID/PID anzupassen. Ansonsten ist HID unter Windows noch gut überschaubar, damit habe ich selbst etwas herumgespielt. Datenrate allerdings begrenzt (USB 1.1 64Bytes/USB-Paket bei 1 Paket/ms)
Hallo, kann ebenfalls LibUSB-Win32 sehr empfehlen. Habe damit sehr gute Erfahrungen, auch im Produktivbereich, gemacht.
Hier wird dir geholfen: http://www.jungo.com/products_st.html Habs für PCI und kanns nur weiterempfehlen
@ Peter Teurer gehts wohl nicht mehr. Folge dem Tip von Andreas. Bei MChip gibt es ein CDC Demo das du an deine Bedürfnisse anpassen kannst. Dann sprichst du den PIC einfach als virtuellen COM Port an.
Er hat nix über den Preis gesagt.... Auf alle Fälle funktioniert es und spart wochenlange Arbeit und Fehlersuche. Man kann ohne weiteres Grundwissen sofort Hardware programmieren. Zeit ist Geld.
Hallo Leute, Danke für den Support! es hat sich herausgestellt dass wir keinen PIC18F4450 benutzen kann da der Baustein nur über UART-PORT mit dem uC kommuzieren kann! 1. und nun geht es darum ein Baustein zu finden der über SPI an uC angeschloßen wird , und Daten per USB-Protokoll an einem Peripherie senden bzw. bekommt. 2. es soll ein treiber für diese USB entwickeln werden Freue mich auf Ihre Hilfe! MfG
Leon wrote: > es hat sich herausgestellt dass wir keinen PIC18F4450 benutzen kann da > der Baustein nur über UART-PORT mit dem uC kommuzieren kann! der PIC18F4550 IST bereits ein µC, und wie der mit deinem anderen µC Kommunizierst, kannst du selbst festlegen. UART ist da eine Möglichkeit, aber nicht die einzige. Wenns auf Speed ankommt, kannst du z.B. ein Paralleles Interface über den SPP machen, SPI+I2C geht natürlich auch, und mit Soft-SPI könntest du sogar mehrere SPI-Kanäle einbauen... /Ernst
Irgendwie verstehe ich immer noch nicht ganz was er vorhat, irgendwie hört es sich so an als würde er versuchen einen USB-Hostcontroller zu implementieren, an den später Geräte angeschlossen werden...das wird n hartes Stück Arbeit. Falls ich dich jedoch falsch verstanden haben sollte und du nur ein Gerät bauen willst welches über einen µC und USB mit dem PC kommunzieren soll, schau dir auf der µC-Seite mal AVR-USB und als Gegenstück wie schon erwähnt libusb an...damit geht fast alles und wenn's sein muss kann man den libusb sogar per Managed-Sprachen (C#/.net etc.) programmieren, was dann auch wirklich für Anfänger sehr einfach ist...Außerdem benötigst du außer ner Hand voll Hühnerfutter für den µC erstmal keine externen Bauteile... Grüße, phlo
Hallo, ich will kein USB-Hostcontroller implementieren! Also noch mal: ich kann von meinem PC aus (mit HYperterminal) über UART Kommando an einem Steuergeräte senden, und das Steuergeräte kann mir auch Informationen (über UART) zurücksenden. Nun will ich das Ganze über ein USB realisieren! will aber der SPI-Port des uC benutzen. ich brauche also kein Baustein der mir (USB-zu-UART) konvertierung macht sondern (USB-zu-SPI) des uC und für diese Aufgabe soll auch ein Art Treiber entwickeln werden MfG
> 1. und nun geht es darum ein Baustein zu finden der über SPI an uC > angeschloßen wird , und Daten per USB-Protokoll an einem Peripherie > senden bzw. bekommt. Vielleicht den USBN9603 ?
Also ich hab nicht ganz verstanden was du meinst mit eine Art Treiber aber z.B. bietet FTDI den FT2232 an welcher eine Brücke zwischen USB und SPI-Bus herstellen kann. Für die Programmierung unter Windows gibt es eine fertige Lib für den SPI-Bus mit der recht einfach auf dem Bus geschrieben und gelesen werden kann. Wenn ich mich noch recht erinnere ist die maximale CLK Frequenz des SPI-Busses 6Mhz. Vielleicht hilfts, wenn net schaden tuts au net ;)
Hallo, Noch eine Anfängerfrage: wie geht das KONKRETT mit dem FT2232 von FTDI MfG
Die FTDI chips sind auf der einen seite ein USB Slavedevice und auf der anderen Seite asynchron serial. Dieser Baustein wird auf einer Leiterplatte verbaut, und dann leasst sich die Leiterplatte per USB mit eibnem PC verbinden. Auf der PC seite, gibt es einen fertigen Treiber von FTDI, der macht dass ein zusaetzliches Serialport erscheint. Es wird von Windowssoftware wie eine Serialport bedient. Sehr praktisch. Sehr guenstig.
Hallo, ich muss ja später ein Treiber für den USB entwicklen, und auf der Seite von Maxim ist ja keine Treiberbsp. oder etwa in der Richtung vorhanden! MfG
Na ja, einen proprietären Treiber für USB programmieren will gut überlegt sein. Da sollte es schon überzeugende Gründe dafür geben. Es ist nicht jedermanns Sache, für jedes x-beliebige Betriebssystem einen eigenen Treiber zu supporten. Das schaffen nicht einmal Weltfirmen. ;-) Für fast alle Device-Typen gibt es fertige generische Treiber so dass man auch einen Maxim-SPI-USB-Chip darauf abstimmen kann. Jedenfalls wäre damit die Forderung "USB via SPI" elegant gelöst.
Hi Leutz wie wär es mit diesem FTDI käfer... SPI ist ua auch drauf ;-) funzt mit meiner SPC1000-barodose PnP. http://www.vinculum.com/documents/advertForWeb_100dpi.pdf
Hi, wenn Du via USB von einem Mikrocontroller mit dem PC kommunizieren willst, dann kommst Du nicht um einen zusätzlichen (oder integrierten) USB-Controller herum. Hierfür nimmst Du z.B. den USBN9603. Diesen kannst Du dann per SPI/MICROWIRE von irgendeinem Mikrocontroller (AVR/PIC) aus ansteuern. Um nun eine RS232 zu simulieren, muß Deine Schaltung ein USB-Gerät der CDC-Klasse darstellen (das wird in der Firmware programmiert). Damit hast Du auch Dein Treiberproblem auf Seiten des PC gelöst. Für Windows/Unix werden für die CDC-Klasse bereits Treiber mit dem Betriebssystem ausgeliefert. Auf PC-Seite kannst Du jetzt einfach (wie bei RS232) mit CreateFile(), ReadFile() und WriteFile() auf Den USB zugreifen. Gruß Potter
Doch, das geht - solange damit auf die generischen Treiber von Windows zugegriffen wird. Eine ziemlich lockere Sache. Die "Lebensaufgabe" fängt dann an, wenn man meint, unbedingt einen proprietären Treiber entwickeln zu müssen.
www.kleiber.li -> elektronik -> USB (oder so ähnlich) ist schon alles fertig für den PIC, brauchste nur noch vom uC die empfangenen daten so rausgeben zu lassen, wie du's möchtest (parallel, seriell...). ist dort zwar primitiv gemacht, aber einfach - und funktioniert ;)
Hallo Danke für eueren Support! Also ich habe mir nun den FT2322 von FTDI ausgewählt. Treiber und DLL habe ich mir schon runtergeladen. im "D"XX Programmer's Guide" stehen dann 4 Funktionsgruppen die man je nach wusch implementieren kann. und zwar: -> Classic Interface Function -> EEPROM Interface Function -> Extended API Function -> FT-Win32-API 1. welche dieser Gruppe (Funktionen der Gruppe) muss ich implementieren? meine Schaltung sieht so aus _______ | | ______ |TriCore|----> | | | | |FT2322|---> (Geräte) | | | | |_______|--| |______| |________ |SD-Card | Also TriCore Lädt Dll.Code aus einer SD-Card und überträgt sie (per SPI) im Speicher des FT2322 Nun kann FT2322 Daten vom Geräte Lesen und wiederum an TriCore senden. MfG
Hä? Der FT2232 ist KEIN Host-Controller, der kann keine Geräte ansprechen. Du kannst damit nur vom PC (Windows, Linux) aus auf den µC hinter dem FT2232 zugreifen. Dein Konzept ist mit dem FT2232 nicht machbar
Ja Richtig, wir meinen doch das Gleiche oder? PC <-> TriCore <-> FT2322 <-> [Device]
Manmanman... Hättest du dich gleich klar ausgedrückt, hätten wir uns hier zwei Seiten Thread sparen können... Du braucht etwas wie: http://www.embedded-projects.net/usbport oder, wenn mehr Flexibilität bei den Angeschlossenen USB-Geräten erforderlich, einen µC mit Linux drauf (z.B. ARM)
LeBeau wrote: > Ja Richtig, > > wir meinen doch das Gleiche oder? > PC <-> TriCore <-> FT2322 <-> [Device] Nein so klappts eben nicht! Mit dem FT2232 gehts nur so: PC <---USB---> FT2232 <---SPI---> TriCore Du kannst nur Daten zwischen PC und TriCore austauschen. USB Geräte kannst du mit dem FT2232 NICHT ansprechen. Weil´s kein Host-Controller ist, sondern nur ein "dummes" USB-Device.
Hallo Christian, Falsch! mit PC <-> TriCore meinte ich: 1. die Portierung der Code im Speicher des TriCore! 2. später muss doch ein Treiber her (mit ner schöne GUI)! und dann eben PC(Commando) <-> TriCore <-> FT2322 <-> (USB)[Device] und da brauche ich Hilfe! MfG
@LeBeau: sieh's bitte ein: der FT2322 ist ein device und kein host - oder in anderen worten: an den FT2322 kannst du kein device anhängen ;) oder nochmals anders: der FT2322 kannst du nur an einen host anhängen.
@LeBeau: Sorry, aber du redest wirr. Ich lese den Thread schon seit Anfang an mit und habe immer noch nicht verstanden WAS du eigentlich vor hast. Ich denke damit bin ich auch nicht allein... >.. TriCore Lädt Dll.Code aus einer SD-Card >.. die Portierung der Code im Speicher des TriCore! >.. Treiber her (mit ner schöne GUI) Hää? Sammel dich bitte nochmal und versuch uns Außenstehenden doch mal erstmal klar zu machen, was das Ziel deiner Entwicklung ist. Ansonsten kann dir wirklich keiner helfen.
Wie? Du willst den Windows-Treiber für den FT2232 auf deinen TriCore portieren? Wie kommste denn auf den Trichter? Und was willst du dann damit steuern? Einen weiteren µC, der per SPI an den FT2232 angeschlossen ist? Läuft auf dem TriCore ein Betriebssystem? Wenn ja, welches?
Hallo Leute, ich habe es NUN KAPIERT! deswegen ist auch so ein Forum DA! Also Master Snowman du hast Recht! Aber das Löst immer noch nicht mein Problem. OK ARM-Fan das ist mein Problem: das will ich realisieren _______ | | ______ |TriCore|(SPI)----> | | | | |??????|---> (Geräte) | | | | |_______|--| |______| |________ |SD-Card | Über SPI will ich mit einem HOST USB CONTROLLER Daten (VOM EXTernen GERÄTE) austauschen 1. was schlägt ihr als HOST USB CONTROLLER vor?(es soll natürlich ein sein mit Treiber und DLL) 2. wie realisiere ich das ganze?
Es gibt tatsächlich von FTDI einen Embedded USB Host Controller als extra Chip, google mal unter Vinculum. So wie ich es verstanden habe, kommt in deiner Anordnung kein (Windows) PC vor? Damit kommen natürlich Windows DLL und -Treiber nicht in Frage und Du musst deine Software zur Ansteuerung entweder auf dem Tricore selbst programmieren oder zukaufen. Gruss Mike
LeBeau wrote: > Über SPI will ich mit einem HOST USB CONTROLLER Daten (VOM EXTernen > GERÄTE) austauschen > > 1. was schlägt ihr als HOST USB CONTROLLER vor?(es soll natürlich ein > sein mit Treiber und DLL) z.B. den SL811HS von Cypress. Hat aber kein SPI, also noch nen CPLD davor, der dessen paralleles Interface auf SPI umsetzt. Treiber? Häh? dir ist schon klar, das der "Treiber" auf deinem µC laufen muss, und nicht am PC der dranhängt. Weiter oben hab ich einen Link gepostet zu einem HOST Treiber (also der Treiber für den SL811), der sollte sich auch auf deinen µC Portieren lassen. danach braucht du aber noch DEVICE-Treiber für alle USB-Geräte, die an dem Anschluss funktionieren sollen! (Und ja, die müssen AUCH auf deinem µC laufen) > 2. wie realisiere ich das ganze? Nochmal drüber nachdenken, ob du das wirklich so machen willst. Tausch evtl den Tricore durch einen ARM aus, gibt auch hier im Shop schöne Eval-Boards dafür. Vorteil: Alles fertig auf einem Board, Sogar noch Ethernet mit dabei. Treiber (Sowohl HOST als auch DEVICE) sind kein Problem, da läuft Linux drauf.
Was willst du denn mit einer DLL auf deinem TriCore? Die DLL ist für WINDOWS! Auf deinem µC MUSST du dann SELBER den KOMPLETTEN USB-Stack programmieren, der Treiber ist dann noch das einfachste. Wenn du nur eine bestimmte Art Geräte anschließen willst, etwa USB Sticks kannst du den FTDI Vinculum nehmen. Da musst du aber je nach angeschlossenem Gerät eine entsprechende Firmware (USB Stack) reinladen. Wenn du aber sowas wie einen universellen USB Host selber bauen willst, musst du eben den Stack selber programmieren, ebenso Treiber für ALLE Geräte die du anschließen willst. Den Treiber und die DLL von FTDI kannst du dafür nicht nehmen.
Das ist echte ne schwere Geburt hier... Also zusammengefaßt: - Es wird ein µC mit USB-Host Funktionalität gesucht -> Da kämen z.B. aktuelle ARMs wie ein LPC24xx in Frage Sicher auch noch andere. Hab ich grad nur so im Kopf. -> Der Stack und die "Treiber" wären jedoch selbst zu programmieren - oder ein Peripheriebaustein für den vorgegebenen(?) µC (Tricore) wie z.B. den Vinculum, um USB-Host zu realisieren -> rel. einfaches Interface zum µC -> für USB-Sticks(Flashspeicher) gut geeignet - Es soll eine SD-Karte angesprochen werden -> trivial, dafür gibts genug Beispiele - Es sollen "USB-Geräte" angeschlossen werden -> DAS ist der interessante Punkt! -> WAS sollen das für Geräte sein? -> USB-Speichersticks oder "alles mögliche" wie Maus, WLAN-Stick, etc.? Letzteres entscheidet über die Plattform. Sollte mehr als nur ein Speicherstick dran sollen, dann führt IMHO kaum ein Weg an Windows (CE oder XPE) bzw. (Embedded)Linux vorbei, für die es schon die meißten Treiber fertig gibt. Verabschiede dich von irgendwelchen DLLs auf µC. Das ist REIN Windows. Es sei denn du hast ein Windows CE auf deinem TRICORE laufen... Dann nehme ich alles zurück ;-) Also, bitte noch etwas genauere Infos zum Projekt.
Ich werde das Gefühl nicht los, dass der OP euch nur zum Reden animieren möchte.
Naja, zumindest bleibt in dem Thread für andere vielleicht noch die ein- oder andere hilfreiche Information über das Thema USB hängen... Dann wars wenigstens nicht umsonst ;-)
Hallo ARM-FAN, Also NOCHMAL zusammengefaßt: - Es wird ein µC mit USB-Host Funktionalität gesucht für den vorgegebenen µC (Tricore) DAS IST RICHTIG!!! z.B. den Vinculum, um USB-Host zu realisieren -> rel. einfaches Interface zum µC -> für USB-Sticks(Flashspeicher) gut geeignet PROBLEME: treiber nicht vorhanden zumindest auf der Seite von FTDI! Ich meine in "DLL-PROGRAMMING-GUIDE" sind doch die Routinen beschrieben, die ich brauche um eine WINDOWS-PROGRAMMIERUNG zu realisieren oder? (auch nicht vorhanden!!) - Es soll eine SD-Karte angesprochen werden (RICHTIG!!!) -> wie willst du sonst deine WINDOWS-ROUTINE im SPEICHER DES Vinculum kriegen??? - Es sollen "USB-Geräte" angeschlossen werden (RICHTIG!!!) -> WAS sollen das für Geräte sein? : (elektronische STEUERGERÄTE) MfG
@LeBeau: Willst du uns nicht verstehen, oder kannst du nicht? Windows-DLLs kann man !!!NICHT!!! auf einem µC Laufen lassen. Wenn irgendwo solche DLLs dabei sind, dienen diese dem Zugriff des PCs auf den Chip, wenn dieser über USB direkt am PC angeschlossen ist. Für deine Anwendung ist so eine DLL also !!!KOMPLETT IRRELEVANT!!!.
Ich glaub, du willst es nicht verstehn. Wenn auf deinem TriCore kein MICROSOFT WINDOWS läuft, kannst du mit einer DLL rein GAR NIX anfangen. Und für den Vinculum gibts keine Treiber und keine DLL, ganz einfach, weil man keine braucht. Den spricht man über SPI an, es gibt lediglich für wenige Geräte (USB-Sticks, FT-UART-Wandler) eine FIRMWARE, die in den Vinculum muss. Um deine elektronischen Steuergeräte, was immer das sein mag, anzusprechen, benötigst du einen UNIVERSELLEN USB HOST CONTROLLER. KEINEN VINCULUM!!! Dann musst du dir den USB Stack selber schreiben, den "Treiber" selber schreiben und für JEDES Gerät, was du ansprechen willst, ebenfalls den TREIBER SELBER schreiben. Die SD Karte hat damit GAR NIX zu tun. Die WINDOWS DLLs auch nicht!!!
OK Jungs, ich habe von anfang an gesagt daß ich so viel Ahnung von dem Thema hatte! DANKE für den Support! es bleiben noch FRAGEN offen. ICH GLAUBE WIR VERSTEHEN UNS NICHT! 1. ich will kein Betriebssystem auf dem TriCore haben! den UNIVERSELLEN USB HOST CONTROLLER wovon Christian Richter spricht soll doch lediglich als Brücke dienen 2. NOCHMAL: ich habe ein PC bzw. Notebook mit USB Anschluß 3. ich habe ein DIAGTester (bestehen aus TriCore + UNIVERSELLEN USB HOST CONTROLLER) mit ebenfall USB Anschluß 4. ich habe ein elektronische Steuergeräte mit CAN-BUS anschluß 5. PC und DIAGTester sollen über USB verbinden werden 6. DIAGTester ist wieder über CAN mit Steuergeräte verbunden NUN wie realisiere ich PUNKT 5 ???? MfG
Nun also doch PC <-- USB --> Dein Schaltung <-- CAN --> Sensoren? Überleg dir nochmal genau, was wo angeschlossen werden soll, und mal nochmal ne Graphik... weil Hierfür brauchst du keinen HOST-Adaptor Chip, Hierfür geht der oben genannte FTDI, der ein USB-Device ist. Und dann kannst du auch die DLLs für deine Windows-Applikation am PC verwenden.
SCHREIT DOCH NICHT SO RUM UND BEENDET DIESEN UNSINNGEN THREAD! Ist ja nicht zum aushalten.
Hallo Ernst, dieSchaltungsteht schon fest wie oben designed! und auch wie du das gemalt hast ist auch Richtig PC <-USB-> DIAGTester <-CAN-> Steuergeräte wenn ich richtig liege braucht den DIAGTester ein USB-Buchse für die kommukation mit dem PC anders gesagt es wird eine USB-Leitung geben, die Notebook und DIAGTester verbindet. und wenn ich richtig gelesen habe komm der FTDI nicht in Fragen oder? MfG
Egal welche Antwort man gibt, der OP hat jedes Mal eine neue Variante seines imaginären Projekts in petto... @LeBeau Sorry, wenn es dich persönlich angreifen sollte: Aber mit soo wenig Ahnung von der Materie kannst und wirst du so ein Projekt nicht auf die Beine stellen können. Ich würde ja wirklich gerne helfen. Aber wie soll man das, wenn der OP nicht mal ansatzweise sein Systemkonzept und seine Anforderungen beschreiben kann?! So viele von den berühmten Glaskugeln bekommen wir nicht zusammen... Ich schließe mich an: Macht den Thread zu, bitte!
Wenn ich das richtig verstanden habe, willst du einen Diagnosetester für´s Auto bauen. Auf der Basis eines TriCore µC. Auf der einen Seite(Auto-Seite) CAN und auf der anderen Seite(PC, Notebook) USB. So, da brauchst du doch lediglich einen CAN-Controller, den du vom TriCore aus ansprichst(per SPI oder parallel). Und den TriCore sprichst du vom PC aus über USB an. Dazu muss der TriCore USB-Device sein. Das ganze funktioniert dann auch autonom. Wieso also der sinnlose Umweg, zwischen TriCore uns CAN nochmal eine USB-Strecke aufzubauen??? Für die USB Kommunikation kannst du dann einen FTDI nehmen, da ja der TriCore dann nicht als USB-Host fungiert sondern lediglich als Device, der HOST ist dann der PC/Notebook. Es könnte so aussehn: PC <--USB--> FT232R <--UART--> TriCore <--SPI--> MCP2515 <--CAN--> Seteuergeräte
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.