Hallo miteinander
Hallo,
Man hat mich von mikrocontroller.net hierher weitergeleitet.
Das ist sehr erfreulich, sonst beschränkt sich die Schnittmenge aus den beiden Foren meist auf doppelte Postings.
Ich versuche einmal den Umstieg auf das USB der PIC's. Leider ist dies für mich noch ein sehr grosser, undurchsichtiger Urwald.
Beim Durchlesen von Sprut, USB in a nutshell und noch weiteren Dokumenten habe ich diverses aufgeschnappt, aber das ordnen ist noch am laufen...
Microchip bietet ein sehr umfangreiches Framework an, welches theoretischerweise das ganze vereinfachen soll. Aber bei mir vereinfacht
es nicht wirklich das Ganze.
Es stellt sich die Frage ob Du die USB-Gerätefirmware und ggf. auch den PC-Treiber komplett selbst schreiben willst oder kannst?
Mein Problem ist, dass ich einen SPI-Datalogger bauen möchte, und dieser soll dann die Daten aus einem Flash an den PC senden (~10MB).
Was muss ich da aber jetzt genau alles einbinden? Die API vereinfacht irgendwie auch nichts... oder bin ich einfach zu blöd?
In welchen "Portionen" kommen denn die 10MB beim Logger an? Also wie viele Byte/s oder kB/s?
1) Was wäre für diese Art Gerät am Besten? CDC ist ja "nur" wieder ein viruteller Comport, HID ist es auch nicht wirklich. Also generic?
Das hängt in erster Linie von der benötigten Datenrate ab.
2) Wie muss man was über die API einstellen?
?
3) Welche Dateien werden schlussendlich benötgit?
Das hängt ab vom ausgewählten PIC und den USB-Klassen die du implementieren willst. Die meisten Projekte im MCHPUSB-Framework sind für mehrere Targets (PICs) verfügbar. Du kannst an den Projekten gut sehen, für welche Hardware und USB-Funktion du welche .C/.H-Dateien du brauchst.
4) Das Programm muss über eine State-Machine gelöst werden, soweit ist klar, aber wie wird dann Senden und Empfangen gelöst?
Das macht zu großen Teilen die integrierte USB-Hardware.
5) Windows speichert die Einstellungen des Gerätes (anhand VID und PID) ab. Was passiert, wenn jetzt das Gerät anders konfiguriert wird, mehr/weniger In- Out-Endpoints hat?
Dafür sind (vereinfacht gesagt) die Deskriptoren da. Damit dürfte
6) Wozu dienen die Deskriptoren?
auch beantwortet sein.
Ein kleines Demo-Projekt in diese Richtung wäre sehr hilfreich.
Ich kenne mich bis jetzt nur mit FTDI aus, wobei hier auch schon VCP und D2XX bearbeitet wurden (sehr einfach auf PC-Seite, was auch so bleiben sollte mit PIC).
Ein USB-Gerät auf Basis eines PIC mit USB hat mit einem FT232 o.ä. nicht viel gemein (aus Entwickler-Sicht). Da wirst du dich umstellen müssen.
Achja, noch etwas zu den VID und PID: Bei Microchip kann man ja eine PID beantragen. Nur unter welchen Bedingungen?
In meinem Betrieb möchte man diverse kleine Test-Geräte für die grosssen Verkaufsmaschinen bauen (Datalogger und so ähnlich), welche aber nur intern verwendet werden. Muss man dann auch eine PID ordern?
Du kannst dem Microchip-Support eine entsprechende Anfrage senden. Die Bedingungen für den Erhalt einer PID durch Micropchip sind Online zugänglich:
http://ww1.microchip.com/downloads/en/AppNotes/Application%20for%20USB%20Vendor%20ID%20Sublicense.pdfSollte das nicht klappen oder weitere Hilfe nötig sein, kannst du mir gerne eine PN senden. Wir finden dann eine Lösung.
Ich weiss, eine Menge Fragen. Aber ich hoffe, Ihr könnt mir etwas weiterhelfen
MFG
Patrick
Gruß,
Edson