"r J Especi!ica cuanta corriente re-uiere el dispositi'o. este 'alor e-ui'ale a la mitad del nmero de mili amperes re-ueridos2 Si el dispositi'o re-uiere :00 mili amperes el 'alor de este reistro deber) ser 1002 $a corriente m)9ima -ue un dispositi'o puede solicitar es 500miliamperes2 =uardar el reistro con la mitad de la capacidad re-uerida permite almacenar este dato en un solo b/te2 Si la corriente re-uerida no se encuentra disponible. el an!itrión se neara a con!iurar el dispositi'o2
Descrip!ores de la in!erfa& El descriptor de la inter!ace pro'ee in!ormación acerca de una !unción o caracterstica -ue un dispositi'o implementa2 El descriptor contiene clases. subclases. in!ormación del protocolo / el nmero de endpoint -ue la inter!a emplea2 Una con!iuración puede tener mltiples inter!aces. las cuales pueden estar acti'as al mismo tiempo. las inter!aces puedes estar asociadas con una sola !unción o pueden no estar relacionadas entre si2 Una con!iuración puede adem)s soportar una inter!a alternati'a. mutuamente e9clusi'a2 El an!itrión puede solicitar una inter!a alternati'a con una solicitud SetInter!ace / leer la inter!a actual con la instrucción =etInter!ace2 Un descriptor de inter!ace contiene + campos. la siuiente tabla muestra los campos en el orden en -ue estos ocurren en el descriptor2 ucos dispositi'os no emplean todos los 'alores de los campos2
OFFSET CAMPO SIE DESCRIPCION DECIMA1 BTES * ,-engt+ 1 )aa/o de descriptor en ,tes ( ,'escriptor)p 1 -a constante Inter!ace %04+& e ) ,Inter!ace#u 1 nuero identifcador de a inter!ace
,
/
4
.
?
,er ,AternateSetti ngs ,#undpoint s ,Inter!aceCas s ,Inter!aceSu,c ass ,Inter!acerot oco iInter!ace
3
• • •
•
•
•
•
•
•
•
1
1
aor epeado para seeccionar una confguración aterna #uero de endpoint soportados %Sin contar e endpoint 0& Código de case
1
Código de su,case
1
Código de protocoo
1
1
)L"!,(7: @umero de b/tes en el descriptor )D"'ri/(#rT9/": $a constante I@AE"F#CE &04( iI!("r;%" J Nndice de una cadena -ue describe la inter!a. este 'alor es cero si no e9iste tal cadena )I!("r;%"N*-)"r : Identi!ica la inter!a. en un dispositi'o compuesto. una con!iuración tiene mltiples inter!aces. las cuales pueden estar acti'as al mismo tiempo2 Cada inter!ace debe tener un descriptor con un 'alor nico en este campo. por de!ault este 'alor es cero2 )A&("r!%("S"((i!, : Cuando una con!iuración soporta inter!aces mltiples mutuamente e9clu/entes. cada una de las inter!aces debe tener un descriptor con el mismo 'alor en bInter!ace@umber / un 'alor nico en b#lternateSettin2 $a intruccion =etInter!ace reresa los datos de la con!iuración actual. / la instrucción SetInter!ace selecciona la con!iuración a usar. por de!ault este 'alor es cero2 )N*-E!d/#i!(' J El nmero de endpoints -ue la inter!ace soporta adicionalmente al endpoint 02 )I!("r;%"C&%'' J Similar a b%e'iceClass en el descriptor del dispositi'o. pero para dispositi'os con una clase especi!icada por la inter!a2 $a siuiente tabla muestra los códios de!inidos2 ?alores de 01 a FE est)n reser'adas para clases de!inidas2 FF indica una clase de!inida por el !abricante. el cero est) reser'ado2 )I!("r;%"S*)C&%'' J Similar a b%e'ideSubClass en el descriptor del dispositi'o. pero para dispositi'os con una clase de!inida por la inter!ace2 Para inter!aces -ue pertenecen a una clase. este campo puede especi!icar una subclase dentro de la clase2 Si bInter!aceClass es 0. bInter!aceSubClass debe ser 02 Si bInter!aceClass es un 'alor entre 01 / FE. bInter!aceSubClass debe ser 0 o un códio de!inido por la especi!icación USB2 BI!("r;%"Pr#(##& J Similar a b%e'iceProtocol en el descriptor del dispositi'o pero para dispositi'os con una clase de!inida por la inter!ace2 Puede especi!icar un protocolo de!inido por la clase o subclase de inter!a seleccionada2
Código de clase 7eadecial *(7 *)7 *,7 *47 *.7 *?7 *37 *@7 *A7 *B7 *D7 *E7 DC7 E*7 Fe7 FF7
Descripción
Audio Counication 'evice Cass %Inter!a" de counicaciones& 'ispositivo de inter!a" +uana %=I'& ?(sico Iagen Ipresora Aacenaiento asivo =u, Counication 'evice Cass %Inter!a" de datos& Sart CA@' Contenido de seguridad ideo 'ispositivo de diagnostico Controador Bireess specifco de apicación specifco de !a,ricante
Opciones para bInterfaceClass
Descrip!or de cadena Un descriptor de cadena contiene te9to descripti'o2 $a especi!icación USB :20 de!ine los descriptores -ue pueden contener ndices a 'arias cadenas. inclu/endo cadenas -ue describen el !abricante. el producto. nmero de serie. con!iuración e inter!aces2 El soporte para descriptores de cadenas es opcional. sin embaro alunas clases re-uieren de ellos2
OFFSET DECIMA1 * ( )
CAMPO
,-engt+ ,'escriptor) pe string ó B-A#*I'
SIE DESCRIPTOR BTES 1 )aa/o de descriptor en ,tes 1 -a constante String %03+&
aria
• • •
•
)L"!,(7 J El nmero de b/tes del descriptor )D"'ri/(#rT9/" $a constante SA"I@= &0>( >LANGID?0..!@ J Usado nicamente en la cadena descriptora 02 $a cadena descriptora 0 contiene uno o m)s códios de identi!icación de lenuaje de 1;bits. los cuales indican el idioma en -ue las cadenas est)n disponibles2 El códio para el inl*s es 000+ / el subcodio para Inles @orteamericano es 00042. Estos se supone ser)n los nicos códios soportados por el sistema operati'o2 $a Leb del USBIF contiene una lista de los identi!icadores de lenuaje2 )S(ri!, J Para 'alores de 1 / ma/ores el campo Strin contiene una cadena en Unicode. el !ormato Unicode emplea 1;bits para representar cada car)cter. con alunas e9cepciones los caracteres #@SI 00 al F corresponden uno a uno con los códios Unicode 0000 000
Cuando el an!itrión solicita el descriptor de la cadena. el $SB del campo L?alue. es un 'alor de ndice2 Un 'alor ndice de 0 tiene la !unción especial de solicitar el idioma de las identi!icaciones2
NOTA: E& di,# d" &"!,*%" /%r% "& "'/%#& M
Endpoin!s del disposi!i#o )odo e trfco de ,us viaFa +acia o desde e endpoint de dispositivo. endpoint es un ,uGer e cua aacena ;tipes ,tes. )(picaente un endpoint es un ,o:ue de eoria o un registro en e c+ip de controador. -os datos aacenados en e endpoint pueden ser datos reci,idos o datos esperando a ser enviados. anftrión ta,i>n tiene ,uGers :ue retienen datos reci,idos o datos esperando a transitirseH pero e anftrión no cuenta con este ,uGer especia aado endpointH en su ugar e anftrión sirve de inicio t>rino para as counicaciones con e endpoint de dispositivo. -a especifcación S defne e endpoint de dispositivo coo una porción de dispositivo S ;nicaente direcciona,e :ue es a !uente o destino de in!oración en un JuFo de counicación entre e anftrión e dispositivo. na dirección de endpoint consiste de un n;ero de endpoint de un sentidoH e n;ero es un vaor entre 0 15H e sentido es defnido desde a perspectiva de anftriónH un endpoint I#K provee datos para ser enviados a anftrión un endpoint O)K aacena os datos reci,idos por e +ost.
n endpoint confgurado para trans!erencias de contro de,e transitir datos en a,os sentidosH as( :ue un endpoint de contro consiste en un pr de direcciones de endopints I# O) os cuaes coparten un n;ero endpoint. Cada dispositivo de,e tener e ndpoint 0 confgurado coo un endpoint de controH es reaente raro a necesidad de endpoints de contro adicionaesH sin e,argo agunos c+ips os soportan.
Noras El USBIF &USB implementers !orum(. es la asociación encarada de enerar las normati'as -ue rien el empleo del est)ndar USB2 En la p)ina ttpJDDLLL2usb2orDde'elopersDdocsDusb:0docsD podremos encontrar todo lo relacionado con las di!erentes normati'as -ue de!inen las caractersticas !sicas / t*cnicas de los protocolos USB2 $os dispositi'os USB se di'iden por clases de acuerdo a sus !uncionalidades. estas a su 'e se di'ides en subclases. las clases reconocidas por la oraniación son las siuientesJ
• • • • • • • • • • • • • • • • • • • • •
#udio class #udioD?ideo de'ice class Batter/ carer Cable conector Common class Comunication de'ice class Content securit/ %e'ice !irmLare uprade roup I% class Imain class Ir%# ass storae edia trans!er protocol onitor pen USB%I Personal ealtcare P/sical inter!ace de'ices PoLer Printer class Smart card class Aest O measurement class
•
?ideo class
En el presente reporte se detallaran los re-uerimientos para la comunicación USB entre la computadora / un microcontrolador. esta comunicación ser) empleando una transmisión serie. la cual se encuentra disponible en la clase C%C2 Este m*todo es el m)s sencillo para la comunicación serie. permite el intercambio de in!ormación en ambos sentidos empleando instrucciones / caractersticas similares a las empleadas en las comunicaciones tipo U#"A2 Uni'ersal Serial Bus Class %e!initions !or Communications %e'ices es el documento donde se detalla este modo de operación. es posible encontrarlo como C%C1:0:010110>tracM2pd!
Res%en de la nora 'CDC()*+)*(*((*,-
2.FUNCTIONAL OERIE Esta sección describe las caractersticas !uncionales de los C%C. los cuales inclu/en la oraniación / operación del dispositi'o
2.1 FUNCTION MODELS Un dispositi'o de comunicaciones tiene > responsabilidades b)sicas #dministración del dispositi'o #dministración de la operación
Aransmisión de datos
El dispositi'o debe usar una inter!a GCommunication ClassH para lle'ar acabo la administración del disposit'o2
2.2 DEICE OPERATION $os dispositi'os de comunicación presentan los datos al an!itrión &ost( en una !orma de!inida por otra clase. como #udio. %atos. I%2
2.4.. DATA CLASS INTERFACE $a G%ata class inter!aceH de!ine una inter!a de datos como una inter!ace con un tipo de clase de datos. esto -uiere decir -ue la transmisión de datos de un dispositi'o de comunicación no est) restrinido por las inter!aces empleando clases de datos prede!inidas. en resumen la inter!a de datos es usada para transmitir. recibir datos. los cuales no se encuentran de!inidos en ninuna otra clase. un ejemplo de esto esJ
• • •
#luna !orma de datos brutos &"#< %#A#( de aluna lnea de comunicación %atos de módems obsoletos %atos usando un !ormato propietario
E! "'(" /*!(# "' r"'/#!'%)i&id%d d"& '#;(>%r" %!;i(ri! %' #-# d"& di'/#'i(i+# #-*!i%r'" "& *!# %& #(r# '#)r" %&,*!% i!("r;%$ CDC6 /%r% d"("r-i!%r "& ;#r-%(# %/r#/i%d# % *'%r.
Co%nicación de#ice class $a clase de dispositi'os de comunicación enloba : tipos de dispositi'osJ tel*!onos / dispositi'os de red de baja 'elocidad. los tel*!onos inclu/en tel*!onos analóicos / módems. terminales IS%@ / tel*!onos diitales. en cuando a dispositi'os de red enloba módems #%S$. módems de cable.. / ubs / adaptadores de Eternet 10B#SEA2
Esta clase tambi*n se considera una buena opción para otros dispositi'os accesados 'a !unciones de puerto C por parte del an!itrión2 $a principal documentación para los dispositi'os de comunicación es la especi!icación para la clase Gdispositi'os de comunicaciónH &C%C(2 %os subclases tienen sus propias documentaciones2 $a subclase G
E! r"'*-"!
AN((./ USB clase CDC para disposi!i#os e0e0idos En esta nota de aplicación de icrocip nos da una introducción de las !uncionalidades del módulo USB. en nuestro caso espec!ico para implementar una comunicación del tipo U#"A a tra'*s de USB2 $a clase C%C indica como es la inter!a de comunicación USB. se desarrolló para dispositi'os como módems e inter!aces de red. sin embaro unas de las !uncionalidades de este modo de operación pueden emplearse para emular un puerto serie. lo cual puede pro'eer una terminal U#"A 'irtual2
IMP1EMENTACION DE COMUNICACI2N USB EN UN MICROCONTRO1ADOR PIC(3F/44*
El empleo de un lenuaje de proramación de alto ni'el es de ran a/uda para la implementación de !unciones USB en el microcontrolador. esto debido a -ue CCS cuenta con !unciones para la inicialiación / el control del módulo USB del PIC2
Re5%eriien!os • • • • •
Un microcontrolador -ue soporte comunicación 'a USB Un prorama en el microcontrolador para transmitir la in!ormación2 Una computadora con puerto USB2 %ri'er en la computadora an!itrión2 Prorama para leer los datos del dispositi'o e9terno
Descripción general del ód%lo USB en el PIC(3F/44* El PIC18F550 contiene un GUSB Serial Inter!ace EnineH &SIE( compatibles con alta / baja 'elocidad el cual permite una r)pida comunicación entre el USB an!itrión / el microcontrolador2 $a SIE puede ser conectada directamente al USB. utiliando un transceptor interno. aun-ue tambi*n es posible emplear un transceptor e9terno2 #lunas caractersticas especiales de ardLare an sido implementadas para mejorar el rendimiento2 Una memoria de doble puerto a sido implementada &USB "#( para compartir acceso directo el ncleo del microcontrolador / la SIE2 Un puerto paralelo de streamin se a pro'isto para soportar la trans!erencia ininterrumpida de laros 'olmenes de in!ormación. como datos asncronos2
Diagrama de la organización interna del módulo USB
1H. USB STATUS AND CONTROL $ a operación del USB es con!iurada a tra'*s de > reistros. adem)s un total de :: reistros est)n in'olucrados para el manejo de la in!ormación USB. los m)s importantes sonJ
• • • •
USB C@A"$ "E=ISAE" &UC@( USB C@FI=U"#AI@ "E=ISAE" &UCF=( USB A"#@SFE" SA#AUS "E=ISAE" &USA#A( USB %E?ICE #%"ESS "E=ISAE" &U#%%"(
1H.10.5 ENUMERATION Cuando el dispositi'o es inicialmente conectado al bus. el an!itrión comiena el proceso de enumeración. en un intento por reconocer el dispositi'o. esencialmente el an!itrión interroa al dispositi'o. obteniendo in!ormación como el consumo ener*tico. tama3o / muestreo de datos. protocolo e in!ormación descripti'a. los descriptores contienen esta in!ormación2 Un proceso tpico de enumeración ocurra de la siuiente maneraJ
El ost es el encarado de detectar cual-uier dispositi'o -ue se conecta al bus2 Cuando un dispositi'o es detectado el ost necesita obtener in!ormación sobre el. a este proceso es al -ue se le llama enumeración2 Esta in!ormación -ue necesita el ost se encuentra de!inida en el dispositi'o en los llamados descriptores2 $os descriptores son datos -ue se uardan en la memoria no 'ol)til del PIC / contienen la siuiente in!ormaciónJ El I% del 'endedor &?I%( / del producto &PI%(. consumo de corriente del dispositi'o. tipo de trans!erencia -ue se 'a a utiliar. endpoint utiliados. 'ersión USB soportada. clase utiliada. etc2 El ?I% &?endor I%( / el PIC &Product I%( son dos nmeros de 1; bits representados en e9adecimal. si se 'a a emplear la clase C%C &Communications %e'ice Class( de CCS para la comunicación USB estos 'alores los podemos modi!icar en el arci'o Qusbdesccdc2Q / sen el sistema operati'o instalado en el ost deberemos modi!icarlos tambi*n en el arci'o 2in! 2
"ealmente el modi!icar estos 'alores solo es til si se -uiere distribuir el producto comercialmente. en ese caso e9iste una oraniación llamada USB Implementers Forum -ue se encara de proporcionarnos pre'io pao correspondiente &creo -ue unos 1500 R( un ?I% 'alido para -ue nuestro dispositi'o con'i'a sin problemas con el resto de dispositi'os USB del mercado. adem)s tendremos dereco a poner el loo USB en nuestro producto certi!icando de esta manera -ue a pasado los controles pertinentes / cumple con el est)ndar USB2 Si esto no estu'iera reulado tal / como est) / cada dispositi'o tu'iera el ?I% / PI% -ue -uisiera. cuando coincidieran en un mismo sistema dos nmeros iuales se presentara un con!licto ardLare / ambos dispositi'os dejaran de !uncionar2
1H.10. DESCRIPTORS E9isten 8 tipos distintos de est)ndares para los descriptores
1H.10..1 DEICE DESCRIPTOR Este descriptor pro'ee de in!ormación de in!ormación eneral. como el !abricante. el nmero del producto. el nmero de serie. la clase del dispositi'o as como el nmero de con!iuraciones. solo e9iste un descriptor de este tipo2
1H.10.. CONFIGURATION DESCRIPTOR Este descriptor pro'ee de in!ormación como los re-uisitos ener*ticos del dispositi'o. / cuantas distintas inter!aces son soportadas en esta con!iuración. puede aber m)s de una con!iuración para el dispositi'o2
1H.10.H BUS SPEED Cada dispositi'o USB debe indicar la presencia de su bus / la 'elocidad al an!itrión. esto se lora a tra'*s de una resistencia de 125oms. el cual es conectado al bus al momento de conectar !sicamente el dispositi'o USB2
%ependiendo de la 'elocidad del dispositi'o. el resistor pone en estado de PU$$UP la lnea %6 ó % a >2>?. para el modo de baja 'elocidad la resistencia se conecta en %. mientras -ue en el modo de alta 'elocidad se conecta del lado de %62
1H.10.8 CLASS SPECIFICATIONS AND DRIERS $as especi!icaciones del USB inclu/en especi!icaciones de clases los cuales son respaldados opcionalmente por los !abricantes de los sistemas operati'os2 Ejemplos de clases soportadas son #udio. ass storae. Comunications and uman Inter!ace &I%( En la ma/ora de los casos. un dri'er es re-uerido en el an!itrión para poder comunicarse con el dispositi'o USB. en aplicaciones especiales. un dri'er tendra -ue ser desarrollado en conjunto2 #!ortunadamente e9isten ran cantidad de dri'ers disponibles para las clases de dispositi'os m)s comunes2
?unciones de osciador para counicación S icrocontroador IC18?4550 cuenta con ;tipes opciones para a generación de a osciación necesaria para su correcto !uncionaientoH es capa" de operar con cristaesH osciadores @CH entradas eternas de reoF con e osciador interno @C. Sin e,argo para esta,ecer a counicación S de ata veocidad se recoienda a epeo de cristaes de cuar"oH os cuaes presentan una eFor esta,iidad de !recuencia para un apio argen de teperaturas. oduo osciador interno de icrocontroador cuenta con un -a"o de seguiiento de !aseK --H e cua proporciona una saida de 96=" a ingresare una onda de 4="H esto aunado a un preescaer a a entrada de -nos perite epear una gran variedad de cristaes para e !uncionaiento de nuestro circuito. n a siguiente iagen se presenta e circuito osciador de ICH se encuentran arcados os vaores de eFepo para a confguración de osciador para cristaes de 20=". -a !recuencia de osciación de 20+" entra a preescaer de --H este perite dividir a !recuencia entre 1H2H3H4H5H6H10 12H e L!use asociado es e --'IH posteriorente a se/a toa 2 cainos. n caino pasa por un divisor de !recuencia %!D2& para uego ir a un M asociado a !use S'IH a epear e !use S'I indicaos a icrocontroador :ue a !recuencia proveniente de -- es a :ue epeareos
para e oduo SH en caso contrario a !recuencia proveniente de a entrada se utii"ara en dic+o oduo. otro caino :ue toa oa saida de -- pasa por un postcaerH e cua perite dividir os 96=" de saida de -- entre 2H3H4 6 para su epeo en e resto de as !unciones de icrocontroador.
Diagrama interno del preescaler
1i0rerías de CCS
El compilador CCS cuenta con libreras creadas para la con!iuración / el manejo del módulo USB del microcontrolador. para la correcta proramación de la comunicación USB es necesario mandar a
llamar 'arias libreras dentro de CCS2 En el siuiente diarama se muestra la interrelación -ue e9isten *ntrelas distintas libreras2
Diagrama que muestra las relaciones entre las distintas librerías para manejo del puerto USB en CCS
*')Jd.7 $ibrera para crear un puerto C 'irtual en la PC sobre USB. empleando la especi!icación C%C. al emplear este arci'o en el códio. se arearan las interrupciones / descriptores re-ueridos2
Esta librera crea un linM 'irtual "S:>: entre la PC / el PIC. por lo -ue en esta librera encontraremos !unciones similares a a-uellas empleadas para el manejo de datos de entrada / salida del tipo U#"A2
•
•
•
•
•
•
•
*')JdJ=)7i(6 T "eresa un 'alor 'erdadero si e9iste uno o m)s caracteres recibidos / esperando en el bu!!er de entrada2 *')JdJ,"(6 T btiene un car)cter del bu!!er de entrada. si no a/ datos en el bu!!er esperara asta -ue se presenten. si no se -uiere esperar en un bucle in!inito se debe emplear la instrucción *')JdJ=)7i(6 primero para cecar -ue e9isten datos antes de mandar a llamar con la instrucción *')JdJ,"(6. *')JdJ/*(7%r 6 T Pone un car)cter en el bu!!er de salida. si est) lleno espera a -ue se 'aci* antes de colocar el car)cter en el bu!!er. este bu!!er es ledo por la computadora mu/ r)pido. as -ue el bu!!er solo se encontrara lleno unos miliseundos. si esto le preocupa / no -uiere -uedarse en un bucle in!inito use *')JdJ/*(r"%d96 para cerciorarse -ue e9ista luar en el bu!!er se salida2 *')JdJ/*('K/(r6 T En'a el comando de cadena terminada al bu!!er de salida. a di!erencia de *')JdJ/*(6 o *')JdJ/*(J;%'((. esta rutina acomodara la cadena en un solo pa-uete &mientras -ue las otras rutinas empujaran el pa-uete tan pronto como se libere el "!d/#i!((2 Esta !unción reresa un 'alor 'erdadero si el pa-uete se en'ió / !also si el bu!!er aun se encuentra en uso2 Podra dejar de copiar caracteres del apuntador &ptr( al bu!!er de "!d/#i!( una 'e -ue este est* lleno. pero aun as podra reresar un 'alor 'erdadero2 *')JdJ/*(r"%d96 T "eresa un 'alor 'erdadero si a/ espacio disponible en el bu!!er de salida para un car)cter mas2 *')JdJ/*("-/(96 T "eresa un 'alor 'erdadero si el bu!!er de salida se encuentra 'aco / a transmitido toda la in!ormación a la PC2 *')JdJ#!!"("d6 T "eresa un 'alor 'erdadero si se recibió G '"(J&i!"J#di!,H.en mucos proramas de terminal serial &como /perterminal(. estos en'an un mensaje G'"( &i!"J#di!, cuando el prorama inicia / este abre el puerto C. esta es una manera sencilla de determinar si la PC esta lista para desplear los datos en el prorama de terminal serial. pero no se arantia -ue !uncione todo el tiempo o -ue !uncione en otras terminales 'irtuales2
•
•
•
•
•
*')JdJ/*(J;%'(7%r 6 T Similar a *')JdJ/*(6 a e9cepción -ue si el bu!!er de salida esta lleno omitir) la cadena2 *')JdJ&i!"J#di!, T Una estructura usada para '"(J&i!"J#di!, / ,"(J&i!"J#di!,. la ma/or parte del tiempo puedes inorar esta instrucción2 *')JdJ)r"%= T Si la PC a en'iado el comando B"E#. esta podr) mantenerse el tiempo de interrupción &B"E# AIE en ms(. si la PC en'a un 'alor de 09FFFF el dispositi'o debe mantener la interrupción asta -ue se le en'i* un 'alor de 02 *')JdJ%rri"r T donde se almacena el 'alor de '"(J#!(r#&J&i!"J'(%("(2 *')JdJ'"ri%&J'(%("'(%("6 T Aransmite al an!itrión el SE"I#$SA#AE &estado serial(. este contiene in!ormación como %C%. %S". rin. breaM / m)s2
$as siuientes !unciones tambi*n son pro'ista. / son puertos de las !unciones de entrada / salida en i!/*(. • • • • •
,"(J;%(J*')6 T $ee un numero tipo !loat del usuario ,"(J!,J*')6 T $ee un numero tipo lon del usuario ,"(Ji!(J*')&6 T $ee un numero tipo entero del usuario ,"(J'(ri!,J*')7%r K' i!( -%<6 T $ee una cadena del usuario ,"(7"
USBJCDCJISR6 puede ser de!inido si se desea una rutina espec!ica para se llamada cuando a/ datos entrantes del puerto C 'irtual2 Esto es til si se -uiere actualiar de códio antiuo "S:>:. en donde se empleaba intrda para manejarlos datos entrantes en el "S:>: IS"2 @ormalmente *')JdJ/*(6 / *')JdJ/*(J;%'( trataran de descarar los datos tan pronto sea posible. sin embaro esto en ocasiones puede llear a ser bastante ine!iciente / podra descarar pa-uetes con 1 b/te2 $a opción USJCDCJDELAYEDJFLUS3 tratara de descarar al inicio de *')JdJ/*(6 / *')JdJ/*(J;%'(6 si el bu!!er local se encuentra lleno. esta !unción tambi*n tratara de descarar el pa-uete en cada llamado a *')J(%'=6. Es recomendable -ue solo se emple* esta !unción si se cuenta con un loop principal -ue periódicamente llame a *')J(%'=6.
Este dri'er carara el resto del códio para USB. / establecer) los descriptores -ue adecuadamente describir)n el dispositi'o como C%C para una terminal C 'irtual. esto se ace con una llamada a la librera *')Jd"'Jd.7
TAMAOS DEL BUFFER USBC%C%#A#I@SIVE controla el tama3o del bu!!er de salida. el tama3o total del bu!!er de salida ser) &&USBC%C%#A#I@SIVEW:(1(2$os dispositi'os de alta 'elocidad &!ullspeed( limitaran este 'alor a ;42 Para incrementar el tama3o del bu!!er local del PIC tambi*n se puede de!inir USBC%C%#A#$C#$SIVE. si este se de!ine entonces el tama3o total del bu!!er de salida ser) USBC%C%#A#$C#$SIVE6USBC%C%#A#I@SIVE2 Si USBC%C%#A#$C#$I@SIVE no se de!ine. se emplea un 'alor por de!ault de ;4. si USBC%C$C#$SIVE no se de!ine. esta opción no es empleada2
LIMITACION DE LAS INTERRUPCIONES Esta sección solo es rele'ante si se est) empleando interrupciones USB / no la opción USBIS"P$$I@=2 El manejo del puerto USB es complejo. comnmente re-uiere el en'io de mucos pa-uetes para completar la trans!erencia de un blo-ue de datos. la ma/or parte de este proceso se realia en la USB IS". es por eso -ue no puedes llamar usbcdcputc&( dentro de otra IS". USB IS" o cuando las IS"X,s estas inabilitadas2 Para resol'er este problema usa usbcdcputc!ast&( / la opción USBC%C%E$#7E%F$US. aun-ue esta no es la mejor opción por-ue si se emplea usbcdcputc!ast&( para desbordar el bu!!er de salida los datos se perder)n2
CONFIGURACION DEL PUERTO RS2 IRTUAL %entro de esta librera es posible cambiar las caractersticas de la comunicación serie. al llamar la rutina de inicialiación esta asina los 'alores preestablecidos. es posible cambiarlos en la librera para as tener m)s control de cómo -ueremos -ue sea la comunicación serie2
Captura de pantalla de la sección del archive usb_cdc.h donde podemos conigurar valores de la comunicación serie como lo son la velocidad del puerto en bps! paridad " bits de datos
Descrip!ores
*')Jd"'Jd.7 $a librera usbcdc2 ace un llamado a usbdesccdc2 -ue es la librera encarada de asinar los descriptores del dispositi'o2 En esta sección es posible con!iurar los descriptores de dispositi'o. de con!iuración. de cadena. de inter!a. con el !in de lorar desarrollar un producto acorde a las necesidades del desarrollador2 Cuando un dispositi'o USB es conectado se identi!ica a si mismo al an!itrión a tra'*s de la combinación del PI% / el ?I%. el ?I% es un numero de 1;bits del 'endedor. el PI% es un numero de 1; bits del nmero de producto. la PC emplea esta combinación para encontrar los dri'ers a emplear2 Esta librera no cuenta con instrucciones. solo es para de!inir l os descriptores. para este caso emplearemos como ?I% el 004%8 -ue es el nmero -ue de!ine al dispositi'o como un producto de icrocip. como PI% emplearemos el 09000. este -ueda a consideración del desarrollador. sin embaro con'iene in'estiar un poco si la combinación PI%D?I% a emplear no causara con!lictos con dispositi'os reistrados2
Captura de pantalla de la sección del archivo usb_cdc_desc.h donde podemos modiicar los valores P#D " $#D%
En la siuiente parte podemos de!inir la in!ormación -ue es despleada por el Liard de
Captura de pantalla de la seccion del archive usb_cdc_desc.h donde podemos modiicar los valores de las cadenas de te&to%
#l modi!icar las cadenas de te9to debemos de tener en cuenta establecer el tama3o de las mismas. asi como el o!!set de todas las cadenas respecto al inicio
12 El o!!set indica el inicio de cada cadena. es decir. tendr) tantos elementos como cadenas tena el descriptor. para este caso >. o indica el inicio de la primera cadena. -ue es la -ue de!ine el idioma. como esta tiene una dimensión de 4b/tes el siuiente o!!set es de 4 / como la seunda cadena tiene una dimensión de 8b/tes el tercer o!!set es la suma de las : dimensiones &1:(2 :2 Por de!ault el descriptor 'iene con el descriptor para el idioma inles 09040+. sin embaro si -uieren usarse smbolos especiales de aln otro idioma. debe indicarse en esta parte el idioma a emplear2 >2 $a lonitud de la cadena inclu/e el comando de t*rmino G@U$$H . por lo -ue al nmero de caracteres de la cadena debemos de sumarle : b/tes2
Prograas de generación de descrip!ores 6 arc7i#os 8inf #un-ue se puede optar por modi!icar el arci'o de los descriptores Gusbcdc2H manualmente con la a/uda de aln editor de te9to. tambi*n se tiene la opción de emplear proramas especialiados para tal !in2 Uno de ellos es el denominado GI@F Enumeración %atos uC PICUSBH el cual podemos encontrarlo ratuitamente en la red. este prorama est) dise3ado para enerar los arci'os de los descriptores / el arci'o in!2
Captura de pantalla del programa
El prorama nos permite de!inirJ nombre de la cateora. ?I%. PI%. la Ubicación. %escripción Fabricante. ?ersión / Feca. por de!ault esta seleccionada la opción de PICC CCS como lenuaje de proramación. adem)s nos permite seleccionar el tipo de trans!erencia -ue emplearemos para la comunicación USB. nos da la opción de emplear un arci'o multipropósito o uno especialiado para "S:>: sobre la clase C%C2 #l uardar debemos de seleccionar pre'iamente la opción de uardar ambos. la cual nos permitir) uardar el arci'o del descriptor para emplearlo en la compilación en CCS / el arci'o mcpcdc2in! para indicarle al sistema operati'o -ue Controlador debe instalar con el dispositi'o2
DRI"ER Descripción general Un dri'er o tambi*n conocido como controlador de dispositi'o es un prorama in!orm)tico el cual permite al sistema operati'o interaccionar con un peri!*rico. aciendo una abstracción de ardLare / proporcionando una inter!a para su uso2 E9isten tantos tipos de controladores como tipo de peri!*ricos. / es comn encontrar m)s de un controlador disponible para el mismo dispositi'o. cada uno o!reciendo distintas !uncionalidades. entre los principales encontramos los o!iciales &disponibles en la p)ina del !abricante(. los proporcionados por el sistema operati'o / 'ersiones ecas por terceros2 Si el !irmLare de nuestro dispositi'o no cumple con las especi!icaciones de aluna de las clases bene!iciadas por el uso de dri'ers en*ricos instalados en
•
•
•
•
-7/*').'9' T es el arci'o binario -7/*').i!i T este arci'o contiene la in!ormación del dri'er / es re-uerido por el sistema operati'o para la primera cone9ión. para -ue el S22 determine -ue dri'er asinarle al dispositi'o. adem)s el S22 obtiene in!ormación de a-u para con!iurar correctamente el dispositi'o. este es un arci'o de te9to -ue se puede editar. en si debemos de acer -ue los 'alores del ?I% / el PI% coincidan con el de nuestro dispositi'o. adem)s es posible editar alunas cadenas de te9to -ue se mostraran como in!ormación del dispositi'o una 'e instalado el dri'er DLL -/*')%/i T una %$$ es una capa de so!tLare. -ue en este caso !acilita por medio de !unciones la comunicación entre la aplicación de escritorio / el dri'er del dispositi'o2 *')'"r.'9' es el dri'er en*rico de
Ser#icio Pl%g 9 Pla6 de :indo;s En computación un ser'icio de GPlu and Pla/H es una especi!icación -ue !acilita la interación de nue'o ardLare en la PC an!itrión. sin la necesidad de con!iurar el dispositi'o o la inter'ención del usuario para resol'er con!lictos2 $a instalación de un nue'o dispositi'o en
Adinis!rador de disposi!i#os Si es e9itoso este procedimiento el dispositi'o en cuestión aparecer) en el administrador de dispositi'os. como GardLare desconocidoH. en ese momento se dice -ue el nue'o dispositi'o a sido enumerado por el sistema operati'o. el cual crea un reistro con las caractersticas dadas por el dispositi'o / es uardado en E7$C#$#CI@EYCurrentControlSetYEnum2
Captura de pantalla del registro hecho al enumerar el dispositivo
Creación del ins!alador del con!rolador con INSTA11S
Captura de pantalla de #'S()**S+#,*D -./0
Para comenar daremos clic en Fi&" N"> Pr#"( lo cual nos despleara la siuiente 'entana
En esta 'entana seleccionaremos la opción E9press Project. el idioma lo cambiamos a espa3ol / nombramos el pro/ecto. despu*s dar clic en O
Seleccionamos la pesta3a de I!'(%&&%(i#! d"'i,!"r. por de!ault nos 'a a abrir la 'entana de G"!"r%& i!;#r-%(i#!. en esta debemos de Inresar > datos2 12 En el campo Pr#d*( !%-" inresamos el nombre del producto :2 En el campo INSTALLDIR damos clic / nos 'a a abrir mltiples carpetas del sistema donde podemos colocar nuestros arci'os. seleccionaremos la carpeta ?i!d#>'F#&d"r@ / damos clic nue'amente. aora despu*s escribimos el nombre de la carpeta destino. en este caso es la carpeta i!;. >2 En el campo T%, Cr"%(#r ID colocamos nuestro id con el !ormatoJ r",id.AAAA MM.#-.!#-)r"d"/%,i!%>") Posteriormente nos 'amos a la 'entana Fi&"' la cual est) en el punto S/"i;9 A//&i%(i#! d%(%
En esta sección incluiremos los arci'os -ue se 'an a instalar en la computadora an!itrión. es decir el arci'o in! -ue indicara a la computadora el dri'er -ue debe instalarse al conectar nuestro dispositi'o. posteriormente damos clic en el icono de la barra e asta abajo -ue dice I!'(%&&%(i#! #+"r+i"> ?1@
En esta pantalla tenemos la opción de brindar ciertos re-uisitos o permisos al momento de ejecutar el instalador. dado -ue nuestra instalación solo colocara un arci'o en una carpeta de!inida podemos de!inir todas las opciones como !# ?@. Posteriormente damos clic en el icono )*i&d %/&i%(i#! ?1@
En esta pantalla dar clic en la opción 'i!,&" "<"*(%)&"H ?@ . el cual creara un solo arci'o G2e9eH para la distribución de la instalación. por ultimo basta dar clic en GBuild installationsH ?2@ para -ue se cree el arci'o ejecutable en la carpeta -ue seleccionamos para uardar el pro/ecto2 El arci'o ejecutable se encuentra en la rutaJ Y@B"E%E$P"7ECAYE9pressYSinleImaeY%isMImaesY%IS1 Una 'e creado el ejecutable este se puede distribuir de la manera -ue lo decida el desarrollador. no necesita ninn so!tLare adicional. sin embaro debido a -ue realia cambios en la carpeta de
Primera pantalla de bienvenida
Segunda pantalla donde se muestran los datos generales de la instalación
(ercera pantalla! donde se muestra el progreso de la instalación
Cuarta pantalla! donde se da por concluida la instalación
IMP1EMENTACION $a implementación de la comunicación USB es posible realiarla mediante dispositi'os dise3ados para tal !in como lo es el controlador USB+;0 o mediante dispositi'os embebidos -ue cuenten con módulo de comunicación USB2 # continuación se desarrollara la implementación de la comunicación USB en modo te trans!erencia C%C mediante un PIC18F4550 para la realiación de una terminal de simulación "S:>:2 Para la proramación se a eleido el entorno de proramación PIC CCS. el cual es un compilador C mu/ completo. debido a -ue cuenta con libreras interadas tanto para la realiación de la comunicación USB como para la simulación del puerto "S:>:2
Pr#,r%-% d" ""-/ Para comenar a trabajar con la implementación del prorama para comunicación serie. primero debemos de comenar identi!icando los par)metros -ue deber) lle'ar el arci'o descriptor. entre los -ue destacanJ
• • • • •
Id de !abricante Id de modelo Corriente re-uerida al puerto USB ?ersión Aipo de trans!erencia
Estos datos pueden modi!icarse manualmente en el arci'oJ Gusbdesccdc2H. lo recomendable es cambiar el nombre a este arci'o para conser'ar los arci'os oriinales con los -ue 'iene el prorama. adicionalmente se deber) crear un arci'o in! con los mismos datos para la correcta instalación del dispositi'o por parte del sistema operati'o2 tro camino es emplear el prorama de eneración de descriptores / arci'os 2in!. del cual se abla en la p)ina >1 de este manual2 Una 'e obtenidos el arci'o descriptor / el arci'o in!. procedemos a la realiación del prorama en CCS2
CODIGO FUENTE
Lincude N18?4550.+ L!uses =S--H#OP')H#O@O)C)H#O-H#O'*HS'IH--5HC'I1H@*# DD !use =S-- se epea para activar a !unción de -- en conFunto con un crisa DD !use S'I e indica a icrocontroador :ue a !recuencia proveniente de -- ser a DDutii"ada para as !unciones S DD--5 indica a división de preescaerH esta es para e epeo de un crista de 20=" DDC'I1 indica a división de postcaerH indica :ue e icrocontroador tra,aFara con a !recuencia de saida de postcaerD2 Luse dea %cocQ48000000& DD-a !recuencia epeada para e dea es de 48=" de,ido a epeo de -- posterior division DDso,re 2 Ldefne -C'#A-I# I#C2 Ldefne -C'@SI# I#A4 Ldefne -C'@PI# I#A5 Ldefne -C''A)A4 I#A0 Ldefne -C''A)A5 I#A1 Ldefne -C''A)A6 I#A2 Ldefne -C''A)A7 I#A3 Lincude NR'.C Lincude N-C'.C Lincude Nus,desccdc.+ DDn esta sección se incuen as i,rer(asH entre eas e arc+ive de descriptores de nuestro DDdispositivoH e cua a su ve" aa a as otras i,rer(as S L) )@ISA Q 0?92 L) O@)A Q 0?80 L) -A)A Q 0?89 L) )@IS Q 0?93 L) O@) Q 0?81 L) -A) Q 0?8A L) )@ISC Q 0?94 L) O@)C Q 0?82 L) -A)C Q 0?8 DDA@IA-S *-OA-S c+ar aH,T
DDI#ICIO ' @O*@AA void ain%& U DDI#ICIA-IVACIO# ' -OS @)OS setuptier3%)3'ISA-' W )3'I1&T setupadc%A'CO?? &T setupadcports%#OA#A-O*SW@?@?&T setupccp1 %CCO??&T setupccp2 %CCO??&T port,puups%)@&T DDCO@OACIO# ' ?#CIO#AI#)O '- IC cdinit%&T deas%100&T print!%cdputcH E Inter!a" SE&T cdgoto%1H2&T cdcursoron%1&T deas%150&T DDI#ICIA-IVACIO# ' -I@@IAS us,cdcinit%&T DDIniciai"acion de a i,rer(a S en odo C'C us,init%&T DDIniciai"acion de as !unciones S ,dinit%&T DDCO@OACIO# ' CO#MIO# S i!%us,attac+ed%&QQ1& U B+ie %)@& U aQ,dgetc%&T i! %aXQ YZ0Y& U print!%us,cdcputcH E[cEH a &T output+ig+%I#C6&T deas%10&T outputoB%I#C6&T \ i! %us,cdc,+it%&QQ1& U ,Qus,cdcgetc%&T i! %,QQYZ,Y& U print!%cdputcH E[cEH , &T print!%cdputcH E E&T \ print!%cdputcH E[cEH , &T \ deas%1&T
\ \ \
Circ%i!o A continuación se presenta e diagraa e diagraa de a terina serieH e crista epeado es de 20=".
Si%lación -a siuación en @O)S no !ue posi,eH de,ido a :ue os drivers para a siuación S soo estn disponi,es para sisteas de 32 ,its.
Pr%e0a na ve" arado e circuito prograado e ICH se procede a a instaación de driver. driver de,e de instaarse antes de conectar e dispositivoH para :ue PindoBs sea capa" de instaar os drivers re:ueridos.
na ve" instaada nos aparecer una terina CO virtua en e adinistrador de dispositivos.
osteriorente procedeos a a,rir una terina un onitor de actividad serie en a coputadora.
na ve" esta,ecida a coneión podeos coen"ar a enviar reci,ir datos por nuestra terina.