You are on page 1of 14

En esta ocacin vengo para empezar a desarrollar entre todos una librera de USB usando el lenguaje ensamblador para

la familia de microcontroladores PIC1 !""#"$ %a razn de esto & es por'ue (a) muc(os usuarios 'ue son e*pertos manejando +S, pero no saben utilizar bien el lenguaje C o lenguajes de alto nivel$ -ambi.n otra razn es 'ue 'uiero 'ue todos entendamos de una manera m/s profunda el funcionamiento del mdulo USB de la familia microc(ip$$$) luego de esto poder 0tratar0 de implementar la comunicacin USB en cual'uier microcontrolador$$$ El desarrollo de este (ilo se (ar/ de forma parecida al Control de dispositivos a trav.s del mdulo USB del PIC1 !1##2 pero todos los desarrollos al igual 'ue los diferentes programas de ejemplos se (ar/n en +S,$ Para empezar a trabajar con el puerto USB del microcontrolador veremos todos los registros del micro asociados con este perif.rico & su funcionamiento ) luego poco a poco comenzaremos a confeccionar los primeros programas$ Bueno para empezar veremos donde est/n (ubicados los pines 34 ) 35 6 correspondientes a las se7ales de datos del puerto USB en el PIC1 !1##2 ) en el PIC1 !8##29 & asi como tambi.n los otros pines 'ue intervienen en su funcionamiento$

:;U<%= Breve descripcin del funcionamiento del mdulo USB: %a familia de dispositivos PIC1 !"8##;"##2 contiene una interfaz serie compatible con el SIE 6serial interface engine o m/'uina con comunicacin serie en espa7ol9 USB >full4speed? 61$29 ) >de poca velocidad? 61$29 'ue permite la comunicacin r/pida entre cual'uier dispositivo USB ) el microcontrolador PIC@$ El SIE puede interconectarse directamente al USB& utilizando el transmisor 4 receptor interno& o puede conectarse a trav.s un transmisor4receptor e*terno$ El PIC tiene un regulador interno de A&AB para alimentar el transmisor4receptor interno en aplicaciones de #B$ Se (an incluido algunas caractersticas especiales en el (ardCare para mejorar el funcionamiento$ Se proporciona memoria de puerto dual en la memoria de datos del dispositivo 6<+, del USB9 para tener acceso directo a la memoria desde el nDcleo del microcontrolador ) desde el SIE$ -ambi.n se proporcionan unos buffer para 'ue el programador elija libremente el uso de la memoria dentro del espacio de la <+,

del USB$ E*iste un puerto paralelo para transmitir grandes cantidades de datos 6SSP9& para esto se (a proporcionado la a)uda de transferencia ininterrumpida de volDmenes de datos grandes& por ejemplo datos sncronos& a los buffer de memoria e*ternos$ Bueno a(ora veremos en detalle como se comunica la SIE con el e*terior ) las diferentes opciones a nivel cone*ionado del USB con el e*teriorE

+ntes 'ue nada veremos las notas a las referencias 1 ) A 'ue est/n dentro de la inm/gen$ +clarar 'ue estas notas son importantes para no cometer e'uivocaciones a la (ora de programar el cdigo 'ue lo configura$ entoncesE Nota* 2:%as pull 4 ups e*ternas son opcionales & pero si 'ueremos usarlas (a) 'ue desactivar las propias resistencias de pull 4 up internas 'ue tiene el microcontrolador$ %a activacin o desactivacin de estas resistencias se (ace mediante el bit UPUEN$$$'ue se ver/ m/s adelante$ Nota* 3:El regulador de voltaje de A$Av& nos provee de tensin al mdulo USB en aplicaciones de A$Av$ En caso de tener una fuente e*terna de A$Av conectada a Busb& tenemos 'ue desactivar el mdulo interno del regulador$ Bemos en la inm/gen los diferentes pines 'ue segDn configuracin de la SIE & podemos usar un transceptor e*terno& el fin de este tutorial no es el estudio de los

mdulos e*ternos & por lo 'ue se ver/ mu) superficialmente$ +lgo F ,u) importante G 'ue tenemos 'ue ver es el puente bidireccional entre la SIE ) el SSP$$$este puente nos va a permitir el transporte a alta velocidad de grandes flujos de datos en modo sincrono& por lo 'ue se estudiar/ tambi.n en su momento$ Ber la siguiente inm/gen en donde se muestra dic(o puenteE

Espero les sirva $$$despu.s sigo Estado y control del mdulo USB: En total (a) 11 registros para manejar las transacciones del USB$ %os registros sonE H <egistro de control del USB 6UCON9 H <egistro de configuracin del USB 6UC !9 H <egistro de estado de la transferencia del USB 6US"#"9 H <egistro de direccin de dispositivo USB 6U#$$%9 H <egistros del nDmero del frame 6U %&': U %&(9 H <egistros activadores de los Endpoints de 2 a 1# 6UEPN9 El primer registro 'ue estudiaremos ser/ el UCIJ 6registro de control del USB9E En la siguiente inm/gen veremos como est/ constituidoE

Este registro de control contiene los bits necesarios para determinar el comportamiento del bus durante las transferencias$ El registro contiene los bits 'ue gobiernan lo siguienteE H Permiso del perif.rico principal del USB

H <eset de los punteros tipo ping4pong H Control del modo al suspender H 3esactivar la transferencia de pa'uetes El significado de los diferentes bits se muestra a continuacinE B)"*: Bit no implementado se lee como 020 B)"+: El bit PPB%S"& se encarga de controlar el estado del reset& cuando se utiliza el modo 3oble 4 Buffering o modo Ping 4 Pong$Cuando se activa el bit PPB%S"& todos los buffers Ping 4 Pong se fijan a los buffers intermedios$ El bit PPB%S"& tiene 'ue borrarse por firmCare$Este bit se ignora en los modos de buffer 'ue no usen el buffer ping4pong$ B)",: El bit SE-&se utiliza para indicar el estado del bus& si slo se manda un cero$ Cuando se permite el mdulo USB& este bit debe supervisarse para determinar si las lneas de datos (an salido de una condicin de single4ended cero 6slo se manda cero9$ Esto a)uda a distinguir el estado de ciclo inicial de la se7al de reset del USB$ B)".: El bit P/"$)S&es un flag 'ue indica si el SIE (a in(abilitado la transmisin ) la recepcin de pa'uetes$ Este lo bit activa el SIE cuando recibe un SE-UP para permitir su procesamiento$ Este bit no lo puede activar el microcontrolador& slo borrarK al despejarlo el SIE continua la transmisin );o recepcin$ Cual'uier acontecimiento pendiente dentro del buffer intermedio todava estar/ disponible& indicado dentro del registro US-+- en el buffer !I!I$ B)"3: El bit USBEN&la operacin total del mdulo USB se controla con este bit$ +ctivar este bit setea el mdulo ) resetea todos los bits PPBI en el Buffer a L2M$ Este bit tambi.n activa el regulador de tensin del c(ip ) conecta las resistencias pull4up& si se permiten$ +s& este bit puede utilizarse como una unin;separacin al USB$ +un'ue se ignoran todos los estados ) bits de control si este bit est/ borrado& el mdulo necesita preconfigurarse antes de activar este bit$ B)"2: El bit %ESU&E&permite al perif.rico realizar un reinicio ejecutando la se7al resume$ Para generar un reinicio v/lido& por firmCare se debe activar el <ESU,E durante 12ms ) entonces borrar el bit$ B)"0: El bit SUSPN$&coloca el mdulo ) soporte del circuito 6es decir&regulador de tensin9 en un modo de baja potencia$ El reloj de entrada al SIE se desactiva$ Este bit debe activarse por softCare dentro de la respuesta a una interrupcin I3%EI!$ 3ebe borrarse por firmCare despu.s de observar una interrupcin +C-BI!$ Cuando este bit est/ activo& sigue estando el dispositivo unido al bus pero las salidas del transmisor4receptor permanecen en reposo$ %a tensin en el pin BUSB puede variar dependiendo del valor de este bit$ +ctivar este bit antes de un I3%EI! dar/ lugar a

comportamiento imprevisible del bus$ Nota:Cuando est. en el modo de suspensin& el bus del dispositivo USB se limita al ,--1# de corriente$ Nsta es la corriente completa cedida por el dispositivo PIC ) su circuito de soporte$ Oa) 'ue tener cuidado de ceder la corriente mnima cuando el dispositivo entre en el modo de suspensin$ B)"-: Bit no implementado se lee como 020 %e2istro de confi2uracin del USB: +ntes de comunicarse con el USB& se tiene 'ue configurar el mdulo del (ardCare interno );o e*terno$ %a ma)or parte de la configuracin se realiza con el registro UC !$ El regulador de tensin del USB se maneja con la configuracin de los registros$ El registro U C! contiene la ma)or parte de los bits 'ue dirigen el comportamiento del mdulo USB$ Nstos inclu)enE H Belocidad del bus 6>+lta velocidad? vs >Baja velocidad?9 H Permiso de las resistencias pull4up del c(ip H Permiso del transmisor del c(ip H Uso del buffer ping4pong El registro UC ! tambi.n contiene dos bits 'ue a)udan a probar el mdulo& eliminando errores ) certificaciones del USB$ %a salida de control de estos bits permite el monitor de estado ) generacin de patrones >de ojo?$

B)" *: U"E3E: Bit de permiso del test patrn >de ojo? del USB$ 1 P prueba del patrn >de ojo? permitido$ 2 P prueba del patrn >de ojo? in(abilitado$ B)" +: UOE&ON: Bit de permiso del monitor IE del USB$ 1 P se7al del UIEQ activaK indica los intervalos durante los cuales las lneas 35;34 est/n conduciendo$ 2 P se7ales del UIEQ inactivas$ B)" .: UPUEN: Bit de permiso del pull4up del c(ip$ 1 P Pull4up del c(ip permitido 6pull4up en 35 con !SEJP1 o en 34 con !SEJP29$

2 P Pull4up del c(ip desactivado$ B)" 3: U"%$)S: Bit in(abilitador del transmisor del c(ip 1 P -ransmisor del c(ip in(abilitadoK la interfaz digital del transmisor permitida$ 2 P transmisor del c(ip activo$ B)" 2: SEN: Bit de permiso del !ull4Speed$ 1 P dispositivo !ull4speedE controla los flancos del transmisorK re'uiere un reloj de 8 ,Oz$ 2 P dispositivo de poca velocidadE controla los flancos del transmisorK re'uiere un reloj de R,Oz$ B)" 04- PPB0:PPB-: Bits de configuracin de los buffer ping4pong$ 11 P buffers ping4pong permitidos en los End4Points 1 a 1#$ 12 P buffers ping4pong permitidos en todos los End4Points$ 21 P buffer ping4pong permitido en los End4Points de salida 2$ 22 P buffers ping4pong in(abilitados$ Nota 0: 1E Si se activa U-<3IS& la se7al UIEQ estar/ activa independiente del ajuste del bit UIE,IJ$ 1E %os bits UPUEJ& U-<3IS ) !SEJ no deben cambiarse mientras el mdulo USB est. permitido$ Estos valores se deben preconfigurar antes de permitir el mdulo$ AE Este bit solamente es v/lido cuando el transmisor del c(ip est/ activo 6U-<3IS P 29K si no& se ignora$ Nota 2: %a velocidad del USB& la transmisin ) las pull4up deben configurase solamente durante la fase de activacin del mdulo$ Jo se recomienda cambiar estos ajustes mientras 'ue el mdulo est. funcionando$ Biendo un poco el registro UC !& en donde se encuentra el bit U"E3E& 'ue es un bit de control de estado del USB 'ue vigila los errores ) es un generador de patrones$ %uego tenemos al bit UOE&ON$ Este bit nos muestra cuando las lineas 35 ) 34 est/n conduciendo ) lo 'ue estos valores representan segDn el siguiente cuadroE

+(ora tenemos 1 bit 'ue trabajan de forma conjunta

SEN ) UPUEN& segDn sea su

configuracin activar/n o desactivar/n las <esistencias Pull 4 Up internas del mdulo USB o configuraran el mdulo USB para trabajar a full 4 speed o sloC 4 speed$ Beamos el circuito lgico 'ue realiza estas acciones ) una pe'ue7a tabla donde se muestran las posibles configuraciones$

%uego tenemos U"%$)S& 'ue (abilita o des(abilita el transmisor del c(ip& en caso de 'ue el bit sea 2 & activamos el transceptor ) los pines C8 ) C# son usados para conectar el dispostivo USB$ En caso de 'ue el bit sea seteado a 1 & el transceptor es desactivado ) las lineas C8 ) C# 'uedan para poder ser usadas como entradas digitales unicamente$

Por Dltimo tenemos los bits de configuracin B)" 04- PPB0:PPB-: 'ue establecen la configuracin del modo Ping 4 Pong$

<espuestaE USB ) PIC 1 !1##2 3esarrollo de pro)ectos en +S, <egistro de estado del USB 6US-+-9E El registro de estado del USB divulga el estado de las transacciones dentro del SIE$ Cuando el SIE publica una interrupcin de transferencia completa por el USB& (a) 'ue leer US-+- para determinar el estado de la transferencia$ US-+- contiene el nDmero del Endpoint de la transferencia& direccin ) valor del puntero del buffer pingpong 6si est/ utilizado9$ JotaE %os datos en el registro de estado del USB son v/lidos solamente cuando el flag de interrupcin -<JI!est/ activo$ El registro US-+- es realmente una ventana legible de los cuatro b)tes de estado !I!I mantenida por el SIE$ Permite al microcontrolador procesar una transferencia mientras 'ue SIE procesa los Endpoints adicionales$ Cuando el SIE termina con un buffer de lectura o escritura de datos& actualiza el registro US-+-$ Si se realiza otra transferencia USB antes de realizar una interrupcin de transaccin completa& el SIEalmacenar/ el estado de la transferencia siguiente en el estado !I!I$ 3espejando el flag de la transferencia completa& -<JI!& provoca alSIE 'ue avance el !I!I$ Si los datos siguientes en el registro !I!I son v/lidos& el SIE inmediatamente reafirma la interrupcin$ Si no (a) datos adicionales presentes& -<JI! seguir/ borradoK los datos de US-+-puede 'ue no sean correctos$ JotaE Si se recibe una peticin de Endpoint mientras 'ue el US-+- !I!I este lleno& el SIE publica autom/ticamente un J+S de nuevo al anfitrin$ En la siguiente figura mostramos la !I!IE

+(ora veremos 'ue significan cada uno de los bits dentro del registro$

BI- TE Jo implementado & legible como 020 BI- R al AE EJ3PAEEJ3P2E Bits de actividad del nDmero codificado del Dltimo Endpoint 6representa el nDmero del B3- actualizado por la Dltima transferencia del USB9$ 1111 P Endpoint 1# 1112 P Endpoint 18 U$ 2221 P Endpoint 1 2222 P Endpoint 2 BI-1E 3I<E Bit puntero de la Dltima direccin B3$ 1 P la Dltima transaccin era de entrada$ 2 P la Dltima transaccin era de salida o de SE-UP$ BI-1 PPBIE Bit puntero del puntero ping4pong B3Q 1 P la transaccin pasada estaba al banco Idd de B3$ 2 P la transaccin pasada estaba al banco Even de B3$

JI-+E Este bit es solamente v/lido para los Endpoints con registros Even ) Idd B3 disponibles$

%espuesta: USB y P)C 05 2,,- $esarrollo de proyectos en #S&

CON"%O( $E (OS EN$PO)N"S $E( USB:

%as funciones de cada bit se dan a continuacinE B)" * 4 ,: Jo implementados& se leen como 020$ B)" . EP'S'/: Bit de permiso del protocolo de intercambio 1P Se permite el protocolo de intercambio del Endpoint$ 2P Se in(abilita 6utilizado con los Endpoints sncronos9$ B)" 3 EPCON$)S: Bit bidireccional de control del Endpoint Si EPOU"EN60 y EP)NEN60: 1P In(abilita las transferencias de control del Endpoint nK slo permite las de entrada ) las de salida$ 2P Permite las transferencias de control 6SE-UP9 ) las de entrada ) salida del Endpoint n$ B)"2 EPOU"EN: Bit de permiso de la salida del Endpoint$ 1P %a salida del Endpoint n permitida$ 2P %a salida del Endpoint n in(abilitada$ B)" 0 EP)NEN: Bit de permiso de la entrada del Endpoint$ 1P %a entrada del Endpoint n permitida$ 2P %a entrada del Endpoint n in(abilitada$ B)" - EPS"#((: Bit de permiso de la parada del EndpointQ 1P Se puede parar el Endpoint n$ 2P El Endpoint n no se puede parar$ Nota 0: B/lido solamente si se permite el Endpoint nK si no& se ignora el bit$ Cada uno de los 1R Endpoints bidireccionales posibles tiene un registro de control independiente& UEPn 6donde LnM representa el nDmero del Endpoint9$ Cada registro

tiene los mismos bits de control$ El bit EP'S'/ 7UEPn8.9: controla el protocolo de intercambio de los EndpointsK activar este bit permite el protocolo de intercambio del USB$ -picamente& este bit se setea siempre e*cepto al usar Endpoints sncronos$ El bit EPCON$)S 7UEPn839: se utiliza para permitir o in(abilitar las operaciones de control del USB 7SE"UP: con Endpoint$ Borrar este bit permite las transacciones SE-UP$ Ibservar 'ue los bits EP)NEN y EPOU"EN se deben activar para permitir las transacciones de entrada ) de salida$ Para el Endpoint 2& este bit debe estar siempre borrado por 'ue las especificaciones del USB identifican el Endpoint 2 como el Endpoint de control por defecto$ El bit EPOU"EN 7UEPn829: se utiliza para permitir o para in(abilitar las transacciones de salida del anfitrin$ +ctivar este bit permite transacciones de salida$ Semejantemente& el bit EP)NEN 7UEPn809: permite o in(abilita las transacciones de entrada al anfitrin$ El bit EPS"#(( 7UEPn8-9: se utiliza para indicar la condicin S"#(( para el Endpoint$ Si se ejecuta una S-+%% en un Endpoint particular& el bit EPS-+%% para ese Endpoint lo activar/ el SIE$ Este bit permanece (asta 'ue se borre por softCare o (asta 'ue ocurra un reset del SIE$ %E!)S"%O $E $)%ECC);N $E( USB 7U#$$%:: El registro de direccin del USB contiene la Dnica direccin del USB 'ue el perif.rico descifra cuando est/ activo$U#$$% se pone a 22( cuando recibe un reset del USB& indicado por U%S") & o con un reset al microcontrolador$ %a direccin del USB la tiene 'ue escribir el microcontrolador durante la fase de setup del USB como parte del firmCare del USB de la a)uda de microc(ip$ %E!)S"%OS $E( N<&E%O $E( %#&E $E( USB 7U %&':U %&(:: %os registros del nDmero del frame contienen los 11bits del nDmero del frame$ El b)te de orden inferior est/ en U %&(& mientras 'ue los tres bits de orden superior permanecen en U %&'$ El par de registros se actualizan con el nDmero de frame actual cuando recibe un SO $ Para el microcontrolador& estos registros son slo de lectura$ El registro del nDmero del frame se utiliza sobre todo para transferencias sncronas$ %#& $E( USB: %os datos del USB se mueven entre el nDcleo del microcontrolador ) el SIE a trav.s de una memoria conocida como USB <+,$ Nsta es una memoria de puerto dual especial 'ue est/ mapeada en la memoria normal de datos en los bancos de 8 a T 6822( a T!!(9 para un total de 1Vb)te$ El banco 8 6822( con 8!!(9 se utiliza especficamente en el control del buffer del Endpoint& mientras 'ue los bancos de # a T est/n disponibles para los datos del USB$ 3ependiendo del tipo de buffer 'ue se utilice& los b)tes del banco 8 pueden estar disponibles para utilizarlos como buffer del USB$ +un'ue la <+, del USB est/ disponible en el microcontrolador como memoria de datos& las secciones 'ue est/ modificando el SIE no las puede usar el microcontrolador$ Se utiliza un mecanismo de sem/foros para determinar el acceso

a un buffer en un momento dado$

BU

E% $ESC%)P"O% 3 "#B(# $E( BU

E% $ESC%)P"O%:

%os registros del banco 8 se utilizan especficamente para el control del buffer del Endpoint en una estructura conocida como "a=la del Buffer descriptor 7B$":$ Esto proporciona un m.todo fle*ible a los usuarios para construir ) para controlar los Buffers del Endpoint de varias longitudes ) configuraciones$ %os B$" se componen de los Buffers descriptores 6B39 'ue se utilizan para definir ) controlar los Buffers reales del Espacio de la <+, del USB$ Cada B3& alternadamente& consiste en cuatro registros& donde n representa uno de los R8 B3s posibles 6gama de 2 a RA9E H B$nS"#": <egistro de estado de B3

H B$nCN": <egistro del b)te de cuenta de B3 H B$n#$%(: <egistro bajo de la direccin de B3 H B$n#$%': <egistro alto de la direccin de B3 B$s ocurre siempre como blo'ue de cuatro b)tes en la secuencia& B3nS-+-EB3nCJ-EB3n+3<%EB3n+3<O$ %a direccin de B3nS-+- es siempre una compensacin de 68n419 6en (e*adecimal9 de 822(& con n como el nDmero del Buffer descriptor$ 3ependiendo de la configuracin del buffering utilizada& (a) A1& AA R8 sistemas de Buffer descriptores$ El B3- debe ser por lo menos b)tes de largo$ Esto se debe a 'ue la especificacin del USB asigna 'ue por mandato debe tener cada dispositivo el Endpoint2 configurado como entrada ) salida en la disposicin inicial$ 3ependiendo del Endpoint ) de la configuracin buffering& el B3- puede ser de 1#R b)tes de largo$ +un'ue se puede creer 'ue los buffers descriptores ) los registros de direccin son registros de funciones especiales 'ue no est/n mapeados en (ardCare& como lo est/n los S!<s convencionales en el banco 1# del microcontrolador$ Si el Endpoint correspondiente a un B3 particular no est/ permitido& sus registros no se utilizan$ En vez de aparecer como direcciones no implementadas& aparecen como <+, disponible$ Solamente cuando un Endpoint est/ permitido& activando el bit UEPnW1X& se consigue 'ue la memoria de esas direcciones funcione como B3$ Como los registros B3 tienen cual'uier direccin en la memoria de datos en un reset& tambi.n tienen un valor indeterminado$ Un sistema particular de los registros B3 son solamente v/lidos si el Endpoint correspondiente est/ permitido usando el registro UEPn$ -odos los registros B3 est/n disponibles en la <+, del USB$ El B3 para cada Endpoint debe configurarse antes de permitirlo$ ,eta te digo 'ue el ingl.s no es lo mio pero eso no me detiene$$

You might also like