Internes USB nutzen, Microchip Framework
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache C  |  Internes USB nutzen, Microchip Framework « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Internes USB nutzen, Microchip Framework  (Gelesen 1340 mal)
 
P51D
Newbie
*
Offline Offline

Beiträge: 1


Profil anzeigen
« am: August 24, 2011, 09:50:31 »

Hallo miteinander

Man hat mich von mikrocontroller.net hierher weitergeleitet.
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.

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?

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?
2) Wie muss man was über die API einstellen?
3) Welche Dateien werden schlussendlich benötgit?
4) Das Programm muss über eine State-Machine gelöst werden, soweit ist klar, aber wie wird dann Senden und Empfangen gelöst?
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?
6) Wozu dienen die Deskriptoren?

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

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?

Ich weiss, eine Menge Fragen. Aber ich hoffe, Ihr könnt mir etwas weiterhelfen
MFG
Patrick

Gespeichert
Edson
Globaler Moderator
Sr. Member
*****
Offline Offline

Beiträge: 373



Profil anzeigen
« Antworten #1 am: August 24, 2011, 13:51:57 »

Hallo miteinander

Hallo,

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

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

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

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

Zitat
2) Wie muss man was über die API einstellen?

?

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

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

Zitat
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

Zitat
6) Wozu dienen die Deskriptoren?

auch beantwortet sein.

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

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

Sollte das nicht klappen oder weitere Hilfe nötig sein, kannst du mir gerne eine PN senden. Wir finden dann eine Lösung.

Zitat
Ich weiss, eine Menge Fragen. Aber ich hoffe, Ihr könnt mir etwas weiterhelfen
MFG
Patrick

Gruß,
Edson
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #2 am: August 24, 2011, 13:56:13 »

Hallo,

Zitat
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?
CDC ist virtueller COM Port, HID ist für Eingabegeräte gedacht. Bei Genereic musst du alles von Hand per Treiber programmieren und würde ich dem Anfänger nicht emfpfehlen.
Zitat
Wie muss man was über die API einstellen?
Kommt darauf an, und meinst du die PIC oder PC seitige API. Auf dem PC gibts nur eine bei Generic, bei HID teilweise.

Bevor ich deine anderen Fragen beantworte, würde ich dir folgende Lösung vorschlagen:

Die Datenloggerfunktion realisierst du mit einer SD Karte, die Daten können dann später direkt oder per USB übertragen werden. Dazu brauchst du einen PIC der genug Rescourcen für die Software hat und vorzugsweise mit 3,3V läuft, um die SD Karte leicht ansteuern zu können. Geeignete Kandidaten wären zB PIC18F26J50 / 46J50 oder PIC18F47J53 bzw 27J53.
Da du von Datenlogger schreibst, gehe ich davon aus dass die Daten nicht zu schnell reinkommen (paar kB/s). Diese Daten würde ich dann in eine Datei auf der SD Karte schreiben.

Um oben genanntest zu bewerkstelligen, brauchst du ein USB Framework für Massenspeicher und ein Dateisystem. Beides gibts fix und fertig bei Microchip in der Application Library, unter www.microchip.com/MAL . Runterladen und installieren, da gibts unter USB Beispielen eines das sich SD Card Logger heisst, das sollte für deine Anwendung genau passen. Das wäre die einfachste Lösung, da du keine Treiber für USB brauchst, und auch das Wegschreiben der Daten im PIC ist vergleichsweise einfach.
Zitat
Das Programm muss über eine State-Machine gelöst werden, soweit ist klar, aber wie wird dann Senden und Empfangen gelöst?
Es reicht ein regelmäßigs Pollen der USBTask() und MSDProcess() Funtkion, ca. alle 1 Millisekunde.
Zitat
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?
Sobald sich da was ändert, wir der VID/PID ein neuer Treiber zugewiesen. Warum sollte dein Gerät mehere Endpoints haben`?
Zitat
Wozu dienen die Deskriptoren?
Sie sagen dem Betriebssystem, um was für ein USB Gerät es sich handelt.
Zitat
Achja, noch etwas zu den VID und PID: Bei Microchip kann man ja eine PID beantragen. Nur unter welchen Bedingungen?
Es gibt keine wirklichen Vorraussetzungen, ausser dass du bei Produkten die in Serie gehen sollen (mehr als 5000) du eine eigene VID PID brauchst. Aber das steht alles auch in dem Formular.

Gruß
Stefan
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.044 Sekunden mit 20 Zugriffen.
 
Top! Top!