Choď na obsah Choď na menu
 

USB s PIC18F

Obsah

 [Hide]

Aktualizovať

Som aktualizovala tento článok použiť kompilátor Microchip C18 a musí byť založený na Moji rámcových USB knižníc ako pre PIC a Windows (2011-10-19). To by malo zabezpečiť hladší cestu z tejto základnej tutoriál na viacerých komplexných projektov. Ako vždy Vítam vašu spätnú väzbu a návrhy v priebehu v mojich fórach.

Predstavenie

Mám počet e-mailov každý mesiac žiadať o vytvorení USB zariadení pomocou PIC18F mikrokontroléru. Potom, čo pri pohľade na projekty, ako je môj Atari Joystick USB adaptéra a C64 PODPREDSEDU Front-End sa zdá, že dopyt po viac informácií o tom, ako "hack svoje vlastné".

V tomto článku vám ukážem, ako sa doštička jednoduchý USB všeobecný HID zariadenie, vytváranie PIC18F firmware a nakoniec vytvorenie rozhrania systému Windows pre zariadenie, ktoré vám umožní ovládať LED z PC a čítať stav tlačidlom od zariadení. Od príchodu Windows 7 budete potrebovať drahé certifikácie overenie Microsoft vytvoriť vlastné ovládače USB (bez nej väčšina užívateľov si ani inštaláciu softvéru). Pomocou vstavaných ovládačov pre generických HID zariadenie poskytuje jednoduchý spôsob vytvárania systému Windows a kompatibilných zariadení Linux, a tiež robí tvorbu oboch firmware a software ďaleko jednoduchšie.Vzhľadom k tomu, HID štandardné nevyžaduje vlastné ovládače nebudete musieť získať certifikát pre vodiča, tiež Windows i Linux majú vstavaný v knižniciach ktoré vám pomôžu komunikovať.

18F4550.jpg

Pre tento článok sa budeme držať pomerne základné zariadenie USB. Prístroj vám umožní ovládať LED zo systému Windows a tiež zobraziť stav push-zapnutie prístroja. Pomocou tejto základné princípy 2-way komunikácie USB, bude jasné, ktorá vám umožní pokrok na zložitejšie projekty.

Udržať náklady a obtiažnosť tak nízke, ako je to možné I sa bude sústrediť na doštičku konštrukciu hardvéru pomocou niekoľkých komponentov, bude PIC18F firmware byť založené na (voľne k dispozícii) MPLAB a Microchip C18 kompilátor, bude softvér Windows byť vytvorené pomocou Microsoft Visual C # 2010 Express (ktorý je tiež voľne k stiahnutiu).

Hoci tento článok je založený na mikroprocesore PIC18F4550 môžete ľahko nahradiť to pre menšie a lacnejšie PIC18F2550, ktorý je kód kompatibilný s väčším 4550.

Ak chcete sledovať spolu s týmto článkom navrhujem vám posunúť nadol až na dno a stiahnuť sprievodný softvér. Tiež skontrolujte, či máte MPLAB, Microchip C18 pre PIC18F a Microsoft Visual Studio 2010 expresné nainštalovaný.

Upozorňujeme, že všetky hostiteľských screenshotov sú prevzaté z Windows 7 stroj, ak potrebujete nájsť rovnaký / podobnú vec na staršom systéme Windows krabici, prosím zamierte na Google, kde nájdete veľa informácií o tom, kde sú položky na vašom windows stroj.

Hardware

Ak chcete začať s musíme vybudovať USB zariadenie pre komunikáciu s. V nasledujúcom schémy zapojenia môžete vidieť minimálnu konfiguráciu pre použiteľného zariadenia USB. Zariadenie obsahuje hlavičku ICSP (In Circuit Serial Programming) a B pripojenia typu USB. Okrem toho je jeden LED a jediným stlačením spínača reprezentovať vstupných a výstupných zariadení.

Tutorial Schematic.png

Okruh je veľmi priamočiara (ak nie ste oboznámení s touto úrovňou mikroradičov elektroniky Navrhujem vám do toho ísť a postaviť niektoré z mnohých blikajúca LED a stlačte tlačidlo tutoriály sú k dispozícii na webe pred pokusom toto). PIC18F4550 bude "zbernice USB"; to znamená, že zariadenie bude čerpať svoju silu z hostiteľa USB (vaše PC), takže nie je treba žiadnych regulácie výkonu. 470nF kondenzátor (C3), je nutné, aby PIC možno ovládať vnútorné obvody USB (to pomáha pri regulácii požadovanej rozhraním USB na palube v PIC napätia USB) - Všimnite si, že C3 môže byť ľubovoľná hodnota medzi 220nF a 470nF ( datasheet odporúča 220nF ale ja mal 470nF k dispozícii, to neznamená, že žiadne šance pre fungovanie obvodu.

V záhlaví ICSP umožňuje pripojiť PIC programátor, navrhujem použitie lacného PICkit3 programátor, však ďalšie kompatibilné programátori ICSP by malo fungovať v pohode. Externý oscilátor (kryštál), je nutné pre PIC, aby mohli používať modul USB na palube. V týchto príkladoch (a súvisiace firmware) 20MHz kryštál sa používa (to umožňuje PIC používať PLL ktoré UPS rýchlosti hodiny na požadovanú 48MHz nevyhnutné pre komunikáciu USB). Môžete použiť aj iné rýchlosti kryštálu, ale ja odporúčam používať 20 MHz pre začiatok, pretože inak budete musieť zmeniť firmware.

Nasledujúci obrázok ukazuje obvod postavený na fandov doštičku. Pridal som niektoré popisky na obrázku, aby bolo jasné, aké komponenty tam, kde. Upozorňujeme, že pre programovanie, budeme používať napájanie 5V z programátora. Pretože sa jedná o zariadenie USB zbernice-poháňal linky 5V bude pripojený ku konektoru USB tiež. To znamená, že ak sú pripojené oba programátor a USB kábel súčasne existuje potenciál pre programátora dodávať 5V k hostiteľovi USB; to nie je odporúčané štandardy USB. Nikdy som nevidel prípad, kedy to na čom záleží (pre účely experimentovanie), ale ak chcete, môžete pridať bariérový diódu do USB konektora, aby sa zabránilo to. Vo svojich projektoch som zvyčajne používajú 1N5817 Schottkyho diódu pre toto.


Breadboarded.png


Ak nemáte konektor USB pre vaše doštička na krájanie, môžete buď jednoducho urobiť jednu pomocou malého kúska elektrická vodiaca doska (ako môj jednoduchý adaptér na obrázku vyššie), alebo si môžete znížiť jeden koniec kábla USB, pás späť drôty a dať ich priamo do doštička na krájanie. Odporúčal by som si urobili čas, aby sa adaptér, to znižuje riziko vodičov prichádzajúcich uvoľniť, keď sa zapojíte kábel USB dovnútra a von z vášho PC.

Všetky použité odporov sú malé 1 / 4W odpory. Pri všetkých ostatných zložiek (ako sú kondenzátory), čokoľvek, čo je dimenzovaný na 5Vs a vyššie bude fungovať dokonale. Dbajte tiež pri čítaní schéme, nie všetky komponenty sú zastúpené v 'pin poriadku ". Vezmite na vedomie čísla PIN pri pripájaní všetko dohromady.

Ak si nie ste istí, kabeláž pre kábel USB, nasledujúci obrázok ukazuje Pinout pre USB zásuvky (female typ B) a štandardného kábla farebné kódovanie:


USB B connector.png


Potom, čo ste postavil obvod vyššie uistite sa pozitívne a negatívne elektrické prípojky pre všetky šortky (použite multimetra Ku kontrole kontinuity medzi 5Vs a zem) Pred pripojením zariadenia k vášmu PC;Nechcete, aby poškodiť váš počítač. Vždy sa uistite sa veci znovu pred pripojením buď USB kábel alebo vaše programátor, aby sa zabránilo nákladné opravy účty!

Firmware

Ak chcete pripojiť zariadenie USB k počítaču, ktorý bude najprv musieť napísať a skompilovať nejaký firmware pre PIC18F4550. Microchip (výroba PIC mikroprocesora) dodávať voľne k stiahnutiu USB stack práve na tento účel. Ak chcete, aby sa veci jednoducho som napísal nejaký jednoduchý firmvér riadiť zariadenie, môžete použiť k ísť a tiež ako základ pre pochopenie toho, ako funguje firmware. Potom, čo ste dostal svoj prvý prístroj beží zistíte, že je oveľa ľahšie pochopiť, ako si môžete prispôsobiť ju pre zložitejšie aplikácie.

Firmware musí vykonať dva dôležité úlohy, ktoré sú popísané nižšie.

Výpočet zariadenia

Prvý z nich je USB zariadenie výpočet - Tento komplex znejúce výkon je v skutočnosti počiatočné komunikáciu s hostiteľom USB (vaše PC), keď je prístroj povie hostiteľa, čo to je a ako to chce oznámiť. Komunikácia USB sa vykonáva pomocou "koncové body", ktoré odosielajú informácie buď k hostiteľovi alebo k zariadeniu. Rovnako ako nastavenie komunikačných kanálov zariadenia musia tiež odovzdať svoj názov zariadenia a ďalšie dva dôležité hodnoty: VID a PID.

VID je Vendor ID a identifikuje výrobcu zariadenia. Ak chcete si svoje vlastné VID budete musieť zaplatiť tisíc dolárov alebo tak na štandardy USB tela. V tomto príklade budeme používať Microchip VID uložiť náklady. Ak ste vážne o výrobu a predaj zariadení, budete musieť zaregistrovať jeden z vašich vlastných.

PID je Product ID. Spolu s VID tvoria jedinečný identifikátor pre váš prístroj. Keď váš prístroj prvý vypočítava bude systém Windows ukladať VID a PID kombinácia pre zariadenia; To platí aj v prípade, že používate všeobecný ovládač ako HID, pretože znižuje na množstvo času, Windows potrebuje dostať vaše zariadenie pripravené. To je dôležité, pretože, ak sa rozhodnete zmeniť informácie zoznamu vášho zariadenia (pridať ďalšie koncové body, atď), budete tiež musieť prinajmenšom zmeniť PID pred opätovným pripojením inak dostanete "Device nezačal" chyby, aj keď sa kód bezchybný (zo skúsenosti som si všimol, že Linux nie je tak úzkostlivý a inklinuje nie si sťažovať, ak budete mať rovnaké VID / PID kombinácia).

Komunikácia s hostiteľom

Druhým dôležitým úlohou firmware vykonáva je aktuálna komunikácia medzi hostiteľom a zariadení. Každá komunikácia je identifikovaný "príkaz". Pri používaní generických HID štandardu ďalej len "príkaz" hovorí hostiteľa a zariadení, ako interpretovať informácie, ktoré je odovzdaný pomocou príkazu. Tieto informácie môžu byť čokoľvek (Nehovoria to "druhové" pre nič za nič!), A to je to, ako môžete dosiahnuť veľkú flexibilitu v úlohách vaše zariadenie vykonávajú.

Akonáhle je vaše zariadenie zoznamu hostiteľ sa bude pravidelne dopytovať zariadenie (toto je vždy iniciované hostiteľa a nie zariadenie (hoci tam sú výnimky neskôr, keď sa dostanete viac hlboko do komunikačných protokolov). Na každej hlasovaní hostiteľ môžu obaja zaslať velenie a dáta na zariadení, rovnako ako prijímať príkaz a údaje zo zariadenia.

Hlavná časť firmware, ktorý by ste mali pozrieť do je sekcia, ktorá sa zaoberá žiadosťou volebných z hostiteľa a vykoná potrebné opatrenia, aby sa zariadenie pracovať.

Inštalácia a budovanie zdrojový kód firmware

Referenčná firmware je určený pre prekladač Microchip C18 (a nebude pracovať s inými kompilátory PIC bezo zmeny). Firmware sa tiež opiera o Microchip USB zásobníka (ktorý je Google tým, že umožňuje, aby bol kód ľahko aktualizovať, nové verzie zásobníka je uvoľnenie).

Pre inštaláciu firmware budete musieť vytvoriť adresár, do ktorého chcete umiestniť ako knižnicu a firmvéru.Tie potom majú spustiť Microchip Application knižnice inštalátor a poučiť ho nainštalovať do adresára s názvom "Microchip Solutions v2011-07-14" v rámci adresára, ktorý ste vytvorili v poslednom kroku. Firmware je testovaný len proti verzii 2.9a zásobníka (ktorý je obsiahnutý v v2011-07-14 inštalácii) a môžete si stiahnuť inštalačný knižnice tu (poznámka: Microchip majú vo zvyku presúvanie súborov po ... v prípade, že odkaz prestávky, prosím dajte mi vedieť v priebehu vo fórach!).

Ďalšie Chyť kopírovanie súboru zip firmware (v dolnej časti tohto článku) a rozbaľte ho s knižnicou aplikácií. Ak všetko pôjde dobre mali by ste teraz mať dva podadresáre v rovnakom adresári s názvom "Microchip Solutions v2011-07-14" a "WFF Generic HID Demo 3". Teraz dvakrát kliknite na "WFF Generic HID Demo 3" adresári a načítať súbor projektu WFF_GenericHID_Demo_3.mcp.

Zvnútra MPLAB, mali by ste byť schopní zostaviť firmware a potom naprogramovať na PIC obvyklým spôsobom.

Ak zmeníte relatívna polohu buď knižnice alebo firmware, budete musieť zmeniť zahrnúť cestu v projekte firmvéru povedať MPLAB, kde nájsť knižnicu aplikácií. Môžete to urobiť tým, že pôjdete do MPLAB projekt -> Možnosti projektu Build -> Adresáre -> Zahrnúť cestu hľadania a zmena relatívnu cestu, aby zodpovedala set-up.

Vzhľadom k tomu, VID / PID a zvyšok informácií výpočtu je už pripravený, mali by ste začať tým, že vykonaním zostavenie-to všetko na projekte, a potom stiahnuť výsledný firmware do vášho PIC18F.Samozrejme, budete potrebovať rozumný zostavení prostredie pre túto prácu, ale existuje veľa zdrojov, cez Google, ak máte problémy s prostredím. Skúste niekoľko jednoduchých príkladov uistiť, že všetko je v poriadku, než znovu načítať tento projekt a skúste to znova.

Poznámka: Mal som niekoľko poznámok k tejto časti, ktorý upozornil na niektoré otázky. Bohužiaľ som nenašiel dobrú prácu, okolo, ale zatiaľ možno niektoré informácie pomôžu. Po prvé pri inštalácii knižnicu aplikácií od Microchip musíte byť opatrní, aby sa uistil, že je nainštalovaný v adresári s názvom "Microchip Solutions v2011-07-14". Hoci toto je predvolený, keď zadáte iná inštalačné umiestnenie (od Microchip inštalátora), musíte znovu respecify názov adresára.

Po druhé, neexistuje žiadny jednoduchý spôsob využitia relatívne cesty pre súbory v MPLAB (čo je prekvapujúce, pretože sily, Microchip Application knižnice, ktorú ich použitie). Preto pri prvom otvorení priložený projekt niektoré súbory môžu byť zobrazované ako "chýbajúci" v zobrazení projektu. Na vyriešenie tohto problému kliknite pravým tlačidlom myši na chýbajúce súbory v zobrazení projektu a vyberte možnosť nájsť súbor. Potom budete musieť nájsť správny súbor v štruktúre knižnice aplikácie (ak viete, že dobrý spôsob, ako vyriešiť tento, prosím, dajte mi vedieť cez fóre!).

Oba tieto problémy sú kvôli obmedzujúce povahe licencií Microchip knižnice aplikácií. Chcel by som vyzvať vás všetkých na email Microchip zákaznícky servis a spýtajte sa ich, prečo sa Library aplikácia nie je publikovaný ako open-source pomocou OSI uznaný licenciu.

Pochopenie zdrojový kód firmware

Firmware poskytuje 3 príkazy:

  • 0x80 - Prepnúť LED
  • 0x81 - Prečítajte si stav push-spínače
  • 0x82 - Prečítajte LED stav

Kód, ktorý vykonáva tieto príkazy je umiestnený v zdrojovom súbore main.c v processUsbCommands (funkcie). Táto funkcia je zodpovedný za určovanie požadovanej príkaz a odosielanie a prijímanie dát podľa potreby. Toto je veľmi jednoduché, pretože USB stack stará o všetky podkladové zložitosti; sa rýchlo pozrieť na zdrojový kód, a uvidíte, ako jednoduché to naozaj je. Jedinou ďalšia kontrola vykonáva funkciou je zistiť, či je zariadenie v "nakonfigurované stave"; to znamená, že zariadenie je pripojené k hostiteľovi a stanovenie bola úspešná.

Hlavné funkcie jednoducho volá USB zásobník plniť akékoľvek úlohy, low-level zariadenia a potom sa processUsbCommands fungovať znovu a znovu. Je možné, ako to urobiť, a to buď s použitím, alebo prerušenie while () slučky; definície v HardwareProfile.h riadi, ako sa to stane.

Aby sme pochopili, o niečo viac o procese zoznamu sa pozrieť na usb_descriptors.c a HardwareProfile.h, ktoré obsahujú informácie, ktoré sú odovzdávané na hostiteľa pri prvom pripojení zariadenia. V zdroji nájdete VID a PID informácie o zariadení, rovnako ako rad konfiguračných deskriptorov, ktoré vysvetliť hostiteľa, aký typ rozhrania zariadenie má a schopnosti rozhrania. Tieto "koncové body", sú konektory pre "rúry", popísané vyššie. Tam sú tiež niektoré reťazce, ktoré popisujú výrobcu a výrobku textovo. Systém Windows obvykle používa tieto reťazca pri pomenovávaní zariadenie USB.

Pochopenie zoznamu procesu a formáty popisovača je pomerne zložitý a je pokrytá rôznymi špecifikáciu USB, rovnako ako veľký knihy Jana Axelson s názvom "USB Complete - Všetko, čo potrebujete vytvoriť vlastné periférie USB" (ISBN 978-1931448086). Ak ste sa teší tento článok a chcete získať viac vážne USB by som vrelo odporúčam dostať kópiu knihy, určite mi to pomohlo, keď som sa učil.

Celkovo firmware je pomerne jednoduché, všetko, čo potrebujete dostať hore a beží komunikáciu az hostiteľského je v cene. Samozrejme si môžete urobiť to tak zložité, ako sa vám páči, ale pre účely tohto článku (ako sa ideš s USB), je tu veľa experimentovať s.

Pripojenie zariadenia

Potom, čo ste postupovali podľa vyššie uvedených krokov a stiahnuť firmware na USB zariadenie ste pripravení, aby si to pripojený k počítaču. Vzhľadom k tomu, používame generických HID USB ovládače nie je nič inštalovať na PC pred pripojením. Stačí pripojiť kábel USB do vášho zariadenia a druhý koniec kábla USB do počítača.

Windows 7 by mal rozpoznať nové zariadenie a zobrazí sa obvyklý "inštalácia nového hardvéru" oznámenia. Po niekoľkých sekundách by sa mal zobraziť nasledujúce dialógové okno:

Installed.PNG zariadení

Ak prejdite do ponuky Štart a vyberte možnosť "Zariadenia a tlačiarne" (ak máte staršiu verziu systému Windows budete musieť hľadať inde na ovládacom paneli, ale výsledok je to rovnaké. Všetky tieto obrázky sú z Windows 7) uvidíte nové zariadenie zobrazené na obrazovke. Mali by ste vidieť niečo ako nasledovné okno:

Zariadenia a tlačiarne HIDtutorial.PNG

To je to, vaša prvá USB zariadenie je vo výpočte a je pripravená ísť! Teraz môžeme prejsť k hostiteľskej strane programovanie a pri pohľade na to, ako môžete komunikovať s vaším zariadením pomocou Microsoft Visual C # 2010. Poznámka: Východisková stav LED svieti, to by sa mala rozsvietiť krátko po pripojení zariadenia ,

Hostiteľ softvér

Hostiteľský softvér je založený na mojej open-source Generic HID knižnice. Môžete si nájsť všetky podrobnosti o tom a ako to funguje tu.

Hostiteľ Softvér je docela rovno vpred a v podstate sa skladá z 3 častí všetkých obsiahnutých v Form1.h súboru:

  • Sledovanie zariadenia USB, aby sa zabezpečilo, že je pripojený (a zakázať vstup používateľa a komunikačné zariadenia, pokiaľ to nie je)
  • Zobrazenie a spracovanie formulára užívateľského rozhrania, ktoré umožní užívateľovi komunikovať s aplikáciou
  • Komunikácia s USB zariadenia a aktualizáciu stavu zariadenia

Ak chcete spustiť softvér hostiteľa rozbaľte Studio 2010 Express zip súbor Visual a načítať projektu do Visual Studio. Akonáhle sa skompilovať a spustiť kód, ktorý by potom mal byť predložený s nasledujúci dialóg:

DeviceAttached3.JPG

Ak chcete testovať detekčné zariadenie jednoducho odpojiť kábel USB z počítača. Dialóg by sa mal zmeniť na nasledujúce:

DeviceNotAttached3.JPG

Teraz znovu pripojte USB zariadenie, počkajte, kým sa aktualizácie stavu etikiet (a hovorí v prílohe), teraz skúste stlačiť tlačidlo "Toggle LED diódami. Mali by ste vidieť LED na doštičku zapnutie a vypnutie ... pohode nie? :)

Ďalšie uistite sa, že LED dióda stav štítok v okne zodpovedá skutočnému stavu LED. Toto je príkaz 0x82 vo firmvéru v akcii. Nakoniec vyskúšajte stlačením tlačidla na doštičku, mali by ste vidieť tlačidlo Push zmenu stavu zodpovedajúcim spôsobom v okne.

Gratulujeme, teraz ste hrdým majiteľom vášho prvého samostatného vyrobený USB zariadenie!

Uviedol som celý zdrojový kód v súbore Visual Studio zips, takže by ste mali byť schopní zobraziť projekt v Visual Studio, aby ste získali lepšie pochopenie toho, ako to funguje.

Kam ďalej?

USB HID generické rozhranie je jedným z mnohých dostupných typov rozhranie v štandarde USB (hoci to je pravdepodobne najviac užitočné PIC vývojárov). Pomocou presne rovnaké techniky uvedené v tomto článku si môžete vytvoriť dáta-lesné robotníci, robotika rozhranie, vlastné rozhranie hardvér, atď. Atď. Zoznam je nekonečný.

Dúfajme, že tento článok vám dal nahliadnuť do toho, čo je možné, pre vaše ďalšie kroky Odporúčam vám pozrieť sa na mojej Open Source rámca pre USB Generic HID zariadení založených na PIC18F a Windows.

Okrem toho, ak by ste chceli, aby aj naďalej experimentovať, ale chceli by dostať silnejší odkaz hardvérové ​​prostredie prosím, pozrite sa na mojej PIC USB Development Board, ktorý vám umožní ľahko experimentovať s mnohými ďalšími návrhmi a rozhranie USB.

Ste vítaní opustiť otázky a spätnú väzbu k tomuto článku vo fórach.

Súbory na stiahnutie

Súbory MPLAB projektu pre PIC18F4550 firmware - Firmware súbory kompilácie s kompilátorom Microchip C18 pomocou MPLAB. Oboje je možné stiahnuť z Microchip zadarmo.

Visual C # 2010 Súbory projektu na hostiteľskom programe Windows