Anda di halaman 1dari 8

Construindo um dispositivo USB com PIC18F

Atualizao
Foi publicado uma Classe Visual C++ de Cdigo Aberto (Open Source) para USB Comunicao !"#en$rico% &or 'a(or) d* uma ol+ada para in'orma,es mais detal+adas sobre a programao de aplicati(o para !" gen$rico para -indo.s e uma atuali/ao de aplicati(o para o -indo.s para este pro0eto 1 Simon (2343536563)% 78iste agora uma (erso em C 9 das bibliotecas utili/adas para a comunicao com o +ost -indo.s% Voc* poder: ler sobre isso a;ui (em ingl*s) 1 Simon (234313<13<)%

Introduo
Se pergunta muito sobre a construo de dispositi(os USB usando &!C4=F% "epois de procurar muitos pro0etos como Atari >o?stic@ USB Adaptor e CAB V!C7 Front17nd parece +a(er uma demanda por mais in'orma,es sobre como Cmodi'icar os prprios aparel+osC% Deste artigo (ou mostrar como montar em uma protoboard um simples dispositi(o USB !" gen$rico) a criao do 'irm.are &!C4=F e) 'inalmente) criar a inter'ace do -indo.s para o dispositi(o ;ue permitir: ;ue (oc* controle um E7" do &C e ler o estado de um boto do dispositi(o% "esde o ad(ento do -indo.s F (oc* precisa de uma certi'icao de (alidao cara da Gicroso't para criar dri(es personali/ados USB (sem ;ue a maioria dos usu:rios no podem nem mesmo instalar o seu so't.are)% Usando os dri(ers nati(os para dispositi(os gen$ricos !" 'ornecem um m$todo simples para criao de dispositi(os compatH(eis com -indo.s e Einu8 e tamb$m 'acilita a criao de 'irm.are e so't.are muito simples% "esde ;ue o padro !" apareceu no e8ige a necessidade de dri(ers personali/ados (oc* no (ai precisar obter um certi'icado para o seu dri(er) tamb$m o -indo.s e o Einu8 t*m bibliotecas embutidas para a0udar (oc* a comunicar (ia USB%

&ara este pro0eto (amos (er um dispositi(o USB bastante b:sico% O dispositi(o permite1 l+e controlar um E7" a partir do -indo.s e tamb$m (er o status de um boto ligado no dispositi(o% Usando estes princHpios b:sicos de comunicao USB de 2 (ias (ai 'icar claro o ;ue d: para ser 'eito nos pro0etos mais comple8os% &ara manter o custo e a di'iculdade to bai8os ;uanto possH(el (ou me concentrar na construo do +ard.are em protoboard utili/ando poucos componentes) o 'irm.are &!C4=F ser: baseado em (disponH(el gratuitamente) G&EAB e o compilador itec+ C) o so't.are -indo.s ser: criado usando o Gicroso't Visual C++ 233= 78press (;ue tamb$m $ li(re para 'a/er o do.nload)% 7mbora este pro0eto se0a baseado no do microcontrolador &!C4=FB<<3 (oc* pode 'acilmente substituir esse para o &!C4=F2<<3 menor e mais barato ;ue $ compatH(el com o cdigo do B<<3 ;ue $ maior% Se (oc* ;uiser acompan+ar este pro0eto) eu sugiro ;ue (oc* (: at$ o 'im e 'assa o do.nload do so't.are ;ue o acompan+a% Iamb$m (eri'i;ue se (oc* tem o G&EAB) iIec+ C para o &!C4=F e Gicroso't Visual Studio 233= 78press instalado% &or 'a(or) note ;ue todas as imagens de telas so 'eitas a partir de uma m:;uina com -indo.s F) se (oc* precisa encontrar os programas iguais5semel+ante a uma instalao -indo.s antiga por 'a(or diri0a1se ao #oogle) onde (oc* (ai encontrar muita in'ormao sobre onde os itens esto em uma m:;uina -indo.sG7 por e8emplo%

Hardware
&ara comear) precisamos construir um dispositi(o USB para se comunicar% Do diagrama de circuito abai8o (oc* pode (er a con'igurao mHnima para um dispositi(o USB utili/:(el% O dispositi(o inclui um conector !CS& (!n Circuit Serial &rogramming) e um conector USB tipo B% Al$m disso) e8iste um Jnico E7" e um boto simples para representar os dispositi(os de entrada e saHda%

O circuito $ bastante a(anado (se (oc* no entende este nH(el de eletrKnica de microcontroladores eu sugiro ;ue (oc* tent e construir alguns dos muitos e8emplos de pisca E7" e boto disponH(eis na .eb antes de tentar isso)% O &!C4=FB<<3 ser: Lalimentada por bus C) isso signi'ica ;ue o dispositi(o (ai tirar sua energia a partir do +ost USB (&C) de 'orma ;ue nen+um regulador de tenso $ necess:ria% O capacitor de BF3nF (C6) $ necess:rio para ;ue o &!C possa operar o circuito USB interno (;ue contribui com a regulao da tenso USB e8igido pela inter'ace USB on1board no &!C)% O cabeal+o !CS& permite ;ue (oc* conecte um programador &!C) eu sugiro usar o programador &!C@it2) por$m outros programadores !CS& compatH(eis de(em 'uncionar muito bem% O cloc@ de 23G+/ $ necess:rio para aplica,es USB% !sso permite ao &!C para usar &EE ;ue le(anta a (elocidade de cloc@ a B=G /) necess:rio para a comunicao USB% (O leitor M>asonN me mandou um e1mail apontando ;ue um cristal de 23G+/ no $

estritamente necess:rio ;uando se utili/a a USB nati(a do &!C4=F 1 O ;ue $ bastante correto% Voc* pode usar (:rios cristais desde ;ue altere a con'igurao dos 9FUS7S do &!C% Con'ira no datas+eet do &!C4=FB<<3 p:ginas 2O163 para obter mais in'orma,es 1 Obrigado >asonP)% A 'igura a seguir mostra o circuito construHdo numa protoboard% 7u adicionei alguns rtulos Q imagem para ;ue 'i;ue claro ;uais componentes e onde est colocados% Dote ;ue) para a programao) estamos usando a 'onte de <V do programador% Como este $ um dispositi(o alimentado pelas lin+as de barramento do dispositi(o USB de <V ser: ligado ao conector USB tamb$m% !sso signi'ica ;ue) se ambos o programador e o cabo USB esto conectados simultaneamente) o potencial do programador 'ornece <V para o +ost USB) o ;ue no $ recomendado pelos padr,es USB% 7u nunca (i um caso em ;ue esta ligao gere danos (para 'ins de e8perimentao)) mas se (oc* ;uiser) pode adicionar um diodo reti'icador para o conector USB para impedir isto% Dos meus pro0etos eu costumo usar um diodo de barreira Sc+ott@? 4D<=4F para isso%

Se (oc* no tem um plug USB para o seu protoboard (oc* pode simplesmente 'a/er um usando um pe;ueno pedao de placa padro (como o meu adaptador simples na 'oto acima)) ou (oc* pode cortar uma e8tremidade de um cabo USB) solte os 'ios e colo;ue diretamente na protoboad% 7u recomendo 'a/er um adaptador) ele redu/ o risco de os 'ios se soltarem) ;uando (oc* est: conectando o cabo USB dentro e 'ora de seu &C%

(o leitor MBrandonN me mandou um email perguntando sobre as propriedades dos resistores e capacitores neste pro0eto 1 resistores e capacitores de 45B- nominal para ;ual;uer coisa acima de < (olts so per'eitos para este pro0eto ((alores mais ele(ados no entanto de(em 'uncionar bem) 1 Obrigado BrandonP ) Se no ti(er certe/a da ligao do cabo USB a imagem a seguir ;ue mostra a pinagem de um conector USB (tipo B '*mea) e a codi'icao padro de cor do caboR

"epois de construHdo o circuito acima no se es;uea de (eri'icar as liga,es de energia positi(a e negati(a procurando ;ual;uer curto antes de conectar o dispositi(o em seu &C) (oc* no ;uer dani'icar seu computadorP Certi'i;ue1se sempre de (eri'icar as coisas antes de conectar ;ual;uer cabo USB ou seu programador para e(itar despesas de reparaoP

Firmware
&ara conectar seu dispositi(o USB no computador ;ue (oc* precisa primeiro escre(er e compilar alguns 'irm.ares para o &!C4=FB<<3% A Gicroc+ip ('abricante do microcontrolador &!C) 'ornecer li(remente uma pil+a USB para do.nload apenas para esta 'inalidade% &ara 'acilitar as coisas ;ue ten+o escrito alguns 'irm.ares simples para iniciar o dispositi(o) (oc* pode usar como base para entender como 'unciona o 'irm.are% Assim ;ue ti(er o seu primeiro dispositi(o rodando (oc* (ai ac+ar muito mais ':cil entender como (oc* pode adapt:1lo para aplica,es mais comple8as% O 'irm.are tem ;ue e8ecutar duas tare'as importantes ;ue esto descritos abai8o%

numerao de dispositivos
A primeira $ a enumerao do dispositi(o USB 1 este 'eito pode soar comple8o) $ na (erdade a primeira comunicao com o +ost USB (&C) ;uando o dispositi(o in'orma ao +ost o ;ue $ e como ele dese0a se comunicar% A comunicao USB $ 'eita usando LterminaisL) ;ue ;uerem en(iar in'orma,es para o +ost ou para o dispositi(o% Bem

como a criao de canais de comunicao do dispositi(o tamb$m de(em passar o nome do dispositi(o e outros dois (alores importantesR o V!" e &!"% O V!" $ a identi'icao do 'ornecedor e identi'ica o 'abricante do dispositi(o% &ara obter seu prprio V!" (oc* precisa pagar mil dlares ou mais para o corpo de padr,es USB% Deste e8emplo) usaremos V!" da Gicroc+ip para sal(ar a despesa% Se (oc* est: pensando s$rio sobre a produo e (enda de dispositi(os (oc* ter: de registrar um dos seus prprios V!"% O &!" $ a identi'icao do produto% >untamente com a V!" eles 'ormam um identi'icador e8clusi(o para o seu dispositi(o% Suando o primeiro dispositi(o enumera o -indo.s ir: arma/enar a combinao V!" e &!" para o dispositi(o) o ;ue $ (erdadeiro mesmo se (oc* usar um dri(er gen$rico) como a !") uma (e/ ;ue redu/ a ;uantidade de tempo ;ue o -indo.s necessita para obter o seu dispositi(o pronto% !sto $ importante por;ue) se (oc* decidir mudar as in'orma,es do seu dispositi(o de enumerao (adicionar mais pontos de e8tremidade etc%)) (oc* tamb$m (ai precisar de pelo menos mudar o &!" antes de reconectar caso contr:rio (oc* ter: errosR T"ispositi(o no 'oi iniciadoL mesmo ;ue o cdigo este0a impec:(el (com a e8peri*ncia ;ue eu ten+o notado o Einu8 no $ to e8igente e tende a no reclamar se (oc* manti(er a mesma combinao V!"5&!")%

Comunicao com o !ost "PC#


A segunda tare'a importante ;ue o 'irm.are reali/a $ a comunicao real entre o +ost e o dispositi(o% Cada comunicao $ identi'icada por um CcomandoC% Ao utili/ar o padro !" gen$rico o LcomandoL di/ ao +ost (&C) e ao dispositi(o como interpretar a in'ormao ;ue $ passada com o comando% 7sta in'ormao pode ser ;ual;uer coisa (no c+amam de Lgen$ricoL por nadaP)% 7 $ assim ;ue (oc* pode conseguir uma grande 'le8ibilidade nas tare'as ;ue seus dispositi(os (o e8ecutar% Suando o dispositi(o $ enumerado o +ost pes;uisa periodicamente o dispositi(o esta $ sempre iniciada pelo +ost) e no pelo dispositi(o (embora +a0a e8ce,es) mais tarde) ;uando c+egar mais pro'undamente nos protocolos de comunicao)% 7m cada ao o +ost pode tanto en(iar uma comando de dados para o dispositi(o) bem como receber um comando e os dados do dispositi(o% A parte principal do 'irm.are ;ue (oc* de(e ol+ar $ a seo ;ue trata dos pedidos de ao a partir do +ost e e8ecuta as a,es necess:rias para 'a/er 'uncionar o dispositi(o%

ntendendo o c$di%o &onte do &irmware


Do ar;ui(o C&!C4=F gen$rico !" "e(iceC /ip incluHdo com este pro0eto (oc* encontrar: um 'irm.are completo pronto para ser gra(ado no &!C4=FB<<3% Basta descompactar o ar;ui(o num diretrio do seu pro0eto G&EAB e depois usar o G&EAB para abrir o pro0eto% 7u separei dois ar;ui(os 'onte e ar;ui(os de cabeal+o no cdigo ;ue (oc* de(e ol+ar e as partes mais gen$ricas da pil+a Gicroc+ip (arma/enados em

Lpil+a USBU (USB stac@s) nos sub1diretrios do na(egador de pro0eto)% Os ar;ui(os ;ue esto nos diretrios sobre a Lpil+a USBU (USB stac@s) so interessantes) mas para comear rapidamente (oc* no de(e se preocupar com os aspectos minuciosos do cdigo at$ ;ue (oc* este0a mais 'amiliari/ado com os nH(eis superiores% "esde o V!"5&!" e o resto das in'orma,es de enumerao 0: esto preparados) (oc* de(e comear 'a/endo um build1all no pro0eto e 'aa o Vdo.nloadW do 'irm.are resultante para o &!C4=F% Claro) (oc* (ai precisar de um bom ambiente de criao para este trabal+o) mas +: uma abundXncia de recursos atra($s do #oogle) se (oc* esti(er tendo problemas com o desen(ol(imento% Iente alguns e8emplos simples para (eri'icar se tudo est: o@) antes de recarregar este pro0eto e tentar no(amente% O 'irm.are o'erece tr*s comandosR

38=3 1 Guda o estado do E7" 38=4 1 E* o estado do boto 38=2 1 E* o estado do E7"

O cdigo ;ue e8ecuta esses comandos est: locali/ado no ar;ui(o de origem main%c na 'uno processio()% 7sta 'uno $ respons:(el por determinar os comandos necess:rios e) em seguida) en(iar e receber dados) con'orme apropriado% !sto $ bastante simples uma (e/ ;ue a pil+a USB cuida de toda a comple8idade da comunicaoY d* uma r:pida ol+ada no cdigo 'onte e (oc* (er: o ;uo simples isto realmente $% A Jnica 'uno e8tra e8ecutada pela $ (er se o dispositi(o est: em Testado de con'iguradoL) o ;ue signi'ica ;ue o dispositi(o est: conectado a um +ost e a enumerao 'oi bem sucedida% A principal 'uno simplesmente c+ama a pil+a USB para e8ecutar as tare'as de bai8o nH(el do dispositi(o e) em seguida) c+ama a 'uno processio() uma e outra (e/% Z possH(el 'a/er isso usando interrup,es ao in($s de um loop) no entanto) neste 'irm.are eu manti(e o mais simples possH(el% &ara entender um pouco mais sobre o processo de enumerao d* uma ol+ada em usb[descriptors%c ;ue cont$m as in'orma,es ;ue so passadas para o +ost ;uando o dispositi(o $ ligado pela primeira (e/% Do 'onte (oc* (ai encontrar as in'orma,es V!" e &!" para o dispositi(o) bem como uma s$rie de descritores de con'igurao ;ue e8plicam para o +ost o tipo de inter'aces do dispositi(o e as capacidades das inter'aces% O LendpointsL so os conectores para os CpipesC descrito anteriormente% : tamb$m algumas se;\*ncias ;ue descre(em o 'abricante e o produto te8tualmente% O -indo.s normalmente usa essas in'orma,es ao nomear dispositi(os USB% Compreender o processo de enumerao e os descritores de 'ormatos $ bastante comple8o e $ coberto por (:rias especi'ica,es USB) bem como di/ um grande li(ro de >an A8elson c+amado LUSB Completo 1 Iudo ;ue (oc* precisa para desen(ol(er peri'$ricos USB personali/adosL (!SBD OF=14O64BB=3=A)% Se (oc* est: gostando deste pro0eto e ;uiser obter mais in'orma,es sobre USB eu recomendo obter o li(ro) ;ue certamente me a0udou ;uando eu esta(a aprendendo%

Dormalmente) o 'irm.are $ bem simples) tudo ;ue (oc* precisa para rodar e se comunicar com o +ost (&C) est: incluHdo% Ob(iamente (oc* pode 'a/er isso to comple8o como ;uiser) mas para os 'ins deste pro0eto (;ue (ai 'icar com USB) +: muito para e8perimentar%

Anda mungkin juga menyukai