C/C++/C#-Programmierung für die Anbindung von USB an PIC-Mikrocontroller

Ich bin ein Informatikstudent, der für einige kleine Heimprojekte eine PIC-Mikrocontroller-Programmierung durchführen möchte. Ich spreche fließend C/C++/C#/Java und habe auch ein Verständnis für die Programmierung von Mikroprozessoren (ALP - der 8086). Ich plane, in einem meiner Projekte eine USB-Schnittstelle zu bauen, um eine Beleuchtung und einen Motor zu steuern. Ich habe die Schaltungskomponenten und das Layout geplant. Ich habe den PIC 18f4550 im Auge und habe die Bibliotheken bereits von der Microchip-Website heruntergeladen. Das einzige Problem ist, dass ich nicht weiß, welchen Code ich dafür schreiben soll. Die Bibliotheken sind riesig und ich muss nicht wirklich auf alle Details eingehen (so denke ich). Ich habe versucht, andere Ressourcen zu finden, aber es scheint, dass der PIC alt ist und die meisten Links von Google nur Sackgassen waren. Kennt jemand einen Blog, ein Video, oder etwas, das mir helfen könnte, loszulegen? Ich hoffe, dass dies mit einer der oben genannten Sprachen möglich ist.

Haben Sie sich die Beispiele angesehen, die mit der USB-Bibliothek von Microchip bereitgestellt werden? Versuchen Sie beim Googlen, nicht nur nach PIC18f4550 zu suchen, sondern nach PIC18f USB-Beispielen im Allgemeinen. Die PIC18-Geräte sind ähnlich genug, um (den größten Teil des) USB-Codes von einem zum anderen zu übertragen.
Wenn es Ihnen nichts ausmacht, die USB-Lernkurve nicht zu bewältigen, ist die Verwendung eines FTDI-USB-Chips / -Anschlusses / -Kabels möglicherweise der einfachste Weg, um einen PIC auf USB zu bringen. ftdichip.com/FTProducts.htm und digikey.com/PTM/…
Niemand erwähnt hier MPLAB X? Übersehe ich etwas?

Antworten (3)

Sie sollten sich zuerst die Beispiele ansehen, die mit dem Microchip USB Framework (Teil der Microchip Application Libraries ) bereitgestellt werden. Die Dokumentation enthält einige Beschreibungen zu den einzelnen Demos. Die Hilfedatei selbst ist meiner Meinung nach etwas versteckt, aber Sie finden sie unter<YourInstallLocation>\Microchip\Help\MCHPFSUSB Library Help.pdf

Um loszulegen und je nachdem, wie Ihr Gerät auf dem Host-PC angezeigt werden soll, würde ich den Code der folgenden Demos durchgehen:

  • Gerät - CDC Basic-Demo
  • Gerät - HID - Benutzerdefinierte Demo

Beide geben in der Beschreibung an, dass sie auf dem 'Low Pin Count USB Development Board' laufen können, das einen PIC18F14K50 verwendet . Der PIC18F4550 sollte ähnlich genug sein, damit Sie den größten Teil, vielleicht sogar den gesamten Code übertragen können.

Ein anderer Ansatz, wie von Kenny empfohlen, besteht darin, einen IC zu verwenden, der die meisten USB-Sachen für Sie erledigt. Eine beliebte Wahl sind die von FTDI . Wenn Sie den FT232R nehmen, schließen Sie den UART Ihres Mikrocontrollers an den IC an. Das Schreiben von Code zum Senden / Empfangen von Daten ist jetzt viel einfacher.

Ähnlich wie der FT232R ist der von Microchip hergestellte IC MCP2200 . Wofür man sich entscheidet, ist Geschmackssache (und evtl. Fahrerunterstützung).

+1 für das Auslagern des Schmerzes auf einen FTDI-Chip. Das Leben ist zu kurz, um Ihren eigenen USB-Stack zu rollen, es sei denn, Sie werden dafür bezahlt, genau das zu tun, und sie werden FTDI nicht als Antwort akzeptieren. Es gibt weit mehr „lustige“ Probleme da draußen, wie zum Beispiel, wie man einen Hausziegel in die Nase passt.

Erstellen eines PIC18F-USB-Geräts

Ich habe seine C#-Bibliothek verwendet und sie funktioniert sehr gut und ist einfach zu bedienen. Es kann leicht erweitert oder modifiziert werden, um Ihren Anforderungen gerecht zu werden. Seine Tutorials sind auch sehr gründlich und leicht verständlich und er antwortet normalerweise schnell in den Foren, wenn Sie Fragen haben.

Sehen Sie sich, wie PetPaulsen bereits erwähnt hat, alle von Microchip bereitgestellten Code- und Beispielprojekte an. Sie müssen nicht verstehen, wie das USB-Protokoll funktioniert. Sie müssen wirklich nur die Hauptdatei und die usb_descriptors-Datei ändern, damit die Dinge funktionieren.

Sie können Code von http://tomeko.net/miniscope.php?lang=en ausprobieren. Es gibt eine leicht vereinfachte "Generic HID Demo" von Microchip-Beispielen (einige redundante Multi-Board-Codeabschnitte entfernt) für ältere MPlab + C18 und Konsolen- basierendes Code::Blocks-Projekt für Windows (LED umschalten, Taster lesen, ADC lesen). Wenn Sie nicht viel GPIO benötigen, versuchen Sie stattdessen den kleineren PIC18F2550. Trotzdem glaube ich nicht, dass diese MCUs im Moment beispielsweise mit STM32F042F (TSSOP20-Paket, USB-Gerät ohne externen Kristall, mehr Speicher, USB-Bootloader im ROM) oder STM32F103 (Mini-Boards sind nur für 4 US-Dollar erhältlich, UART) konkurrenzfähig sind -basierter Bootloader).

Beachten Sie, dass Sie für PIC18F2550/4550 wahrscheinlich einen Programmierer kaufen müssten (es sei denn, Sie haben einen alten PC mit geeignetem RS-232, um einen einfachen Programmierer im JDM-Stil anzuschließen).