Vous êtes sur la page 1sur 5

Caractersticas:

-Tasa de transferencia: Puede ser de baja velocidad (15 Mb/s) o de alta velocidad (12Mb/s).
-Soporta Interrupciones. Cada vez que se produce una transmisin o recepcin de datos en el bus, se genera
una interrupcin en el PIC ante la cual la rutina de atencin debe responder gestionando todos los aspectos de
bajo nivel de la especificacin USB. De esta manera para la aplicacin principal que ejecuta el microcontrolador
el manejo del protocolo USB es transparente.
-Permite el uso de hasta 32 EndPoints (16 bidireccionales) pero normalmente solo utilizaremos 3 (endpoints
0, 1 y 2). Un endpoint es un buffer que almacena datos dentro del dispositivo (Tpicamente es un registro). A
su vez cada endpoint dispone de un identificador nico que viene asignado de fbrica y una determinada
orientacin del flujo de datos (IN/OUT). Todos los dispositivos deben soportar el endpoint 0, que se usa para la
configuracin.
-1-Kbyte Dual Access RAM. Los bancos 4 a 7 de la memoria de datos estn mapeados a un puerto dual
especial de RAM. Cuando el mdulo USB est desactivado, los GPRs en estos bancos se utilizan como cualquier
otro GPR en la memoria de datos. Cuando se permite el mdulo USB, la memoria en stos bancos se asigna
como RAM de almacenamiento intermedio para las operaciones del USB. Esta rea se comparte entre el
ncleo del microcontrolador y el motor de la interfaz en serie (SIE) del USB y se utiliza para transferir datos
directamente entre los dos.
-SIE (Serial Interface Engine) encargado de la generacin del CRC, la sincronizacin de las seales D+ y D- y
la correcta comunicacin entre el modulo y el PIC. El SIE puede interconectarse directamente al USB, utilizando
el
transmisor-receptor interno, o puede conectarse a travs un transmisor-receptor externo.
Configuracin
- USBEN: es un bit prioritario al comienzo de la configuracin ya que habilita o deshabilita el modulo
USB, ignorando todos los bits de control y estado cuando esta a cero. Este bit tambin activa el regulador de
tensin del chip y conecta las resistencias pull-up, si se permiten, asi que con USBEN podemos por software
conectar o desconectar del USB. Este bit podemos encontrarlo en el registro UCON<3>.
Configuracin de la frecuencia
Para la puesta en marcha de la comunicacin USB es necesario configurar correctamente el PIC, donde
una parte fundamental es la configuracin de la frecuencia de reloj. Dependiendo de si queremos
funcionar con el modulo en baja velocidad o alta velocidad (USB 2.0), deberemos proporcionar al modulo
de 6 o 48 Mhz respectivamente. Para este ejemplo usaremos la configuracin de USB 2.0 y un cristal
conectado al PIC de 4 Mhz.

USBDIV=1, con lo que la temporizacin pasar por el PLL Prescaler


PLL1 con lo que, al disponer de 4 Mhz de Fosc, a la salida del PLLDIV se
mantendrn esos mismos 4 Mhz
CPUDIV1 con lo que se mantienen los 4 Mhz para temporizar el sistema.

-Como se puede ver en OSC1 y OSC2conectamos nuestro cristal: 4 Mhz, aunque podramos haber usado uno
de 8 Mhz, 12 Mhz, 16 Mhz, 20 Mhz, 24 Mhz, 40 Mhz 48 Mhz, que son los cristales validos compatibles. Hay
que tener en cuenta que este cristal es el mismo para generar la frecuencia de 48 Mhz necesaria para el
USB 2.0 y para el Clock del PIC, que pueden ser la misma o no, segn la configuracin que al final
adoptemos. Esto quiere decir que podemos tener el USB a 48 Mhz y nuestro programa en el PIC funcionando a
12 Mhz por ejemplo.

Tras el Smicht Trigger del Primary Oscillator salen tres lneas en paralelo que van a mdulos distintos con
distintas posibilidades.

-La primera lnea, la superior, va directamente al switch USBDIV que si est a cero indica que la frecuencia
base original del cristal es directamente inyectada al USB, si el switch FSENtambin esta a 1. Este switch
elige entre el PLL o el Primary Clock del CPU. Esta Opcin de inyectar directamente la frecuencia del cristal es
obviamente solo posible si usamos un Cristal de 48 Mhz que es lo que necesitamos para el USB. Cualquier otro
cristal
debe
ser
tratado
para
conseguir
los
48
Mhz
necesarios.
-La segunda lnea tiene a su entrada un PLL Prescaler (Divisor de frecuencia). En cada una de sus salidas
vamos a tener FOSC dividida por 1, 2, 3, 4, 5, 6, 10 12. Y mediante PLLDIV (Multiplexor) vamos a seleccionar
la que deseamos usar. As si nuestro cristal es de 4 Mhz y en PLLDIV colocamos un 000 estaremos
dividiendo por 1 el valor de FOSC con lo que tendremos 4 Mhz a la salida del MUX. Esta salida del MUX es
lo que utilizamos para inyectrsela al PLL de 96 Mhz. Si le metemos 4 Mhz l genera 96 Mhz. Pero 96 Mhz es
el doble de lo que nos hace falta para el USB que son 48 Mhz, as que inmediatamente despus tenemos usar
un divisor por 2 que es el segundo camino por el que llegamos a USBDIV y en este caso le pondremos un 1
para
usar
la
seal
proveniente
del
PLL.
-El resto de la circuitera esta asociada a la configuracin y asignacin de la velocidad de reloj para la ALU.
Transmisor interno
-El perifrico USB tiene un transmisor de poca velocidad internamente conectado al SIE. Esta caracterstica es
til en aplicaciones baratas con un chip.El bit UTRDIS (UCFG<3>) controla el transmisor. Est permitido
por defecto (UTRDIS = 0).
Transmisor externo
-Este mdulo proporciona ayuda para el uso de un transmisor fuera del chip. El
transmisor externo se utiliza en aplicaciones donde las condiciones fsicas dictan la
localizacin del transmisor lejos del SIE. Las operaciones con un transmisor externo se permiten activando el
bit UTRDIS=1.
Regulador interno
-El dispositivo PIC18FX455 tiene un regulador incorporado de 3,3V para proporcionar energa al transmisor
interno y proporcionar una fuente para el pull-up interno y externo, en aplicaciones de 5V. Para que el
regulador sea estable se necesita un condensador externo de 220nF (20%). El regulador se activa por defecto
y puede inhabilitarse a travs del bit de configuracin (VREGEN = ON, OFF). Cuando est activo, la tensin es
visible en el pin VUSB. Cuando el regulador est desactivado, se tiene que conectar una fuente de 3,3V al pin
VUSB para alimentar el transmisor interno.

Las especificaciones del USB requieren 3,3V en las comunicaciones, sin


embargo, el resto del chip puede funcionar con una tensin ms alta. Por eso la fuente de energa del
transmisor es una fuente separada (VUSB).
Velocidad del BUS
-Podemos funcionar con el modulo en baja velocidad o alta velocidad (USB 2.0), para ello se encarga
el registro UCFG y las resistencias de Pull-Up. Las resistencias pull-up internas o externas estn diseadas
para conocer los requerimientos del USB baja velocidad y Full-Speed. Para funcionar en modo USB 2.0
hay que habilitar del bit FSEN del registro UCFG. Una vez habilitado FSEN una resistencia de Pull-Up queda
alimentada en la patilla D+ (Esto permite que el perifrico que se conecte al USB detecte el modo Full-Speed).
-En modo baja velocidad hay que deshabilitar FSEN y la resistencia de Pull-Up que quedaria alimentada
seria la de D- (As se autodetecta modo baja velocidad).
Bit de permiso del Full-Speed(FSEN en UCFG<2>):
1 = dispositivo en Full-speed y pull-up en D+ (Requiere 48 Mhz).
0 = dispositivo de poca velocidad y pull-up en D- (Requiere 6 Mhz)
Bit de activacin de resistencias de Pull-Up (UPUEN en UCFG<4>):
1 = Pull-up del chip permitido
0 = Pull-up del chip desactivado
-La velocidad del USB, la transmisin y las pull-up deben configurase solamente durante la fase de
activacin del mdulo. No se recomienda cambiar estos ajustes mientras que el mdulo est funcionando.
Interrupciones del USB
-El dispositivo 18F4550 tienen fuentes mltiples de interrupcin y una prioridad de interrupcin que permite
que cada fuente de interrupcin se le asigne un nivel prioritario o un nivel bajo de prioridad. El puntero de alta
prioridad est en 000008h y el puntero de interrupcin de baja prioridad est en 000018h. Cada fuente de
interrupcin tiene tres bits para controlar su operacin. Las funciones de estos bits son:
Flag para indicar que ha ocurrido una interrupcin.
El bit que permite habilita la interrupcin.
El bit de prioridad para seleccionar alta o baja prioridad.
-Registro PIR2
PIR2 contiene el flag de la interrupcin del USB.
BIT 7

BIT 6

OSCIF CMIF

BIT 5

BIT 4 BIT 3

USBIF EEIF

USBIF: Flag del USB:

BIT 2

BIT 1

BIT 0

BCLIF HLVIF TMR3IF CCP2IF

1= El USB pide una interrupcin (borrado por software)


0= El USB no necesita interrupcin
-Registro PIE2
PIE2 contiene el permiso de la interrupcin del USB.
BIT 7

BIT 6

OSCIE CMIE

BIT 5

BIT 4

USBIE EEIE

BIT 3

BIT 2

BIT 1

BIT 0

BCLIE HLVIE TMR3IE CCP2IE

USBIE: Bit de permiso de interrupcin del USB:


1= Interrupcin activada
0= Interrupcin desactivada
-Registro IPR2
IPR2 contiene los bits de prioridad de la interrupcion del USB.
BIT 7

BIT 6

OSCIP CMIP

BIT 5

BIT 4

USBIP EEIP

BIT 3

BIT 2

BIT 1

BIT 0

BCLIP HLVIP TMR3IP CCP2IP

USBIP: Bit de prioridad de la interrupcin del USB:


1= Alta prioridad
0= Baja prioridad
-Una vez que el SIE active un bit de interrupcin, se tiene que borrar por software
escribiendo un 0.
Control De Los Endpoints Del USB

-Todos los dispositivos USB estn compuestos por una serie de endpoints y
una direccin nica asignada por el sistema. Un endpoint es un buffer que
almacena datos dentro del dispositivo. Cada endpoint dispone de un
identificador nico que viene asignado de fbrica y una determinada
orientacin del flujo de datos (In,Out). Todos los dispositivos deben soportar el
endpoint 0, que se usa para la configuracin. Las asociaciones entre los distintos endpoints de un dispositivo y
el host se llaman Pipes (tuberas). Las Pipes permiten mover datos entre el software del host y el endpoint del
dispositivo. Cada Pipe esta determinado por su tipo de servicio, numero de endpoint, tamao de paquetes,
direccin, etc.
Existen 4 tipos de endpoints distintos (Control, Bulk, Iscronas e Interrupciones),
cada uno se utiliza en un tipo de transferencia.

-Cada uno de los 16 Endpoints bidireccionales posibles en el PIC18F4550 tiene un registro de control
independiente, UEPn (donde n representa el nmero del Endpoint). Cada registro tiene los mismos bits
de control.
El bit EPHSHK (UEPn<4>) controla el protocolo de intercambio de los Endpoints; activar este bit permite
el protocolo de intercambio del USB.Tpicamente, este bit se setea siempre excepto al usar Endpoints
sncronos. El bit EPCONDIS (UEPn<3>) se utiliza para permitir o inhabilitar las operaciones de control del
USB (SETUP) con Endpoint. Borrar este bit permite las transacciones SETUP. Los bits EPINEN UEPn<1>) y
EPOUTEN (UEPn<2>) se deben activar para permitir las transacciones de entrada y de salida. Para el
Endpoint 0, este bit debe estar siempre borrado por que las especificaciones del USB identifican el Endpoint 0
como el Endpoint de control por defecto.

Vous aimerez peut-être aussi