Hur du gör USB-enhet (PIC18F) (6 / 8 steg)
Steg 6: Förstå källkoden firmware
i i 'PIC18F generiska HID-enhet' zipfilen i denna artikel hittar du en komplett ready-to-go firmware för PIC18F4550.Helt enkelt packa upp filen i din favorit MPLAB projektkatalog och sedan använda MPLAB för att öppna projektet.
Jag har åtskilda både källfilerna och header-filer i koden bör du titta på och sedan de mer generella delarna av mikrochip stacken (lagrad under "USB stack" underkataloger i projektet navigator).
Filer under "USB stack" kataloger är intressant, men för att komma igång snabbt du ska inte oroa de praktiska detaljer aspekterna av koden tills du är mer förtrogna med de övre nivåerna.
Eftersom VID/PID och resten av informationen som uppräkning är redan förberett bör du börja med att göra en bygga-all i projektet och sedan ladda ner den resulterande firmware till din PIC18F. Naturligtvis behöver du en sane kompileringsmiljö för detta att fungera men det finns gott om resurser via Google om du har problem med din miljö.
Prova några enkla exempel att se till att allt är ok innan omlastning detta projekt och försöker igen.
Den fasta programvaran finns 3 kommandon:
- 0x80 - växla LED
- 0x81 - Läs push-switch status
- 0x82 - Läs lysdioden status
Den kod som utför dessa kommandon ligger i main.c källfilen i funktionen ProcessIO(). Denna funktion är ansvarig för fastställande av kommandot krävs och sedan skicka och ta emot data som lämpliga. Detta är ganska enkelt eftersom USB-stacken tar hand om alla underliggande komplexitet. ta en snabb titt på källkoden och du kommer att se hur enkelt det egentligen är. Bara extra kontrollen utförs av funktionen är att se om enheten är i ett konfigurerat tillstånd; Detta innebär att enheten är ansluten till en värd och uppräkning har varit framgångsrik. Den huvudsakliga funktionen bara kräver USB-stacken för att utföra någon lågnivå Enhetsaktiviteter och sedan funktionen ProcessIO om och om igen. Det är möjligt att göra detta använder avbryter snarare än en loop, men i denna firmware jag har hållit det så enkelt som möjligt. För att förstå lite ta mer om uppräkning processen en titt på usb_descriptors.c som innehåller de uppgifter som överförs till värden när den ansluts först. I källan hittar du information om VID och PID för enheten som en serie av konfiguration deskriptorer som förklarar för värden vilken typ av gränssnitt har enheten och funktionerna i gränssnitten. "Ändpunkterna" är anslutningar för "rören" beskrev tidigare. Det finns också några strängar som beskriver tillverkaren och produkten textmässigt. Dessa strängar används vanligtvis vid namngivning av USB-enheter. Förstå uppräkning processen och deskriptorn-formaten är ganska komplext och omfattas av de olika USB specifikationerna samt en stor bok av Jan Axelson kallas "USB-komplett - allt du behöver för att utveckla anpassade USB kringutrustning" (ISBN 978-1931448086). Om du njuter av den här artikeln och vill få allvarligare om USB-jag skulle starkt rekommendera att få en kopia av boken, hjälpte det mig verkligen när jag lärde.
Övergripande är firmware ganska enkelt, allt du behöver för att få upp och löpande kommunikation till och från värden ingår. Självklart kan du göra det så komplicerat som du vill, men för tillämpningen av denna artikel (får du igång med USB) finns det massor att experimentera med.