You are on page 1of 153

390_USB

USB device

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 1
Objetivos
 Depois deste treinamento você irá:
− Entender o que é USB e como utilizar em
aplicações embarcadas;
− Familializar-se com os
microcontroladores, soluções Microchip e
LabTools e USB software framework;
− Familiarizar-se com PC Host Custom
Class PC Host Driver da Microchip e
Device Framework

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 2
Agenda
 Parte 1:
− Introdução ao Full-Speed USB
 Parte 2:
− Introdução à solução Microchip
MCHPFSUSB Firmware e Hand’s-on
com CDC Class RS-232
 Parte 3:
− Introdução ao PC Host Custom Class
USB Driver e MCHPFSUSB custom
class device framework da Microchip

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 3
Parte 1:
Introdução ao
Full-Speed USB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 4
Objetivos
 Entender o funcionamento padrão USB
 Perceber o potencial para utilização em
sistemas embarcados
 Aprender sobre arquitetura USB,
protocolo e modelo de programação
 Estar ciente dos fatores importantes em
desenvolver uma aplicação USB
 Identificar as capacidades chaves dos
microcontroladores PIC com USB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 5
Agenda
 Breve história da USB e USB-IF
 Fundamentos da USB – Material sério e importante
− Fundamentos/Velocidades
− Arquitetura/Modelo de programação
− Conexão Física
− Transações USB
− Transferências USB
− Departamentos do dispositivo
− Enumeração
− Descritores
− Planejamento de energia
− VID/PID & USB Compliance
 Microcontroladores PIC USB
 Soluções Microchip e LabTools: Demo/Ferramentas
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 6
Informações gerais
Um pouco de história…
Por que USB?
 Dificuldades de interfacear um periférico
 Adição de placas nos PCs
− Configuração de Interrupções (IRQ)
− Configuração de Jumpers
− Processo necessário sempre que um hardware era inserido ou removido
 Propósito: Interface de comunicação entre dispositivos embarcados e o PC

USB-IF (Fórum de implementadores)


 Especificações USB
− co-desenvolvidas por um grupo de 4 empresas:
 Compaq, Intel, Microsoft, NEC
 1998
− versão 1.1 da especificação denominada USB 1.1.
 2000
− mais 3 empresas se juntam para formar a especificação USB 2.0.
 Hewlett-Packard, Lucent, Philips
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 7
USB (Universal Serial Bus)
Estenda a funcionacilidade do seu PC!

Análise de dados,
Data Logging,
Atualização de Firmware,
Diagnósticos,
Aplicações Embarcadas!

• Auto detecção e configuração (Plug&Play)


• Fácil expansão usando hubs Serial
Paralela
• Bus power
PS/2
• Proteção de dados via CRC
• Três velocidades:
Low- 1,5Mbps, Full 12Mbps e High- 480 Mbps

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 8
Informações gerais
Produtos & detalhes
 Controle total do barramento pelo Host
− Os periféricos podem ser plugados com o Host ligado
− Detecção de velocidade do barramento do periférico
 Low: 1.5 Mbps, Full: 12 Mbps, High:480Mbps
− Detecção e configuração automáticas (Plug & Play)
 Combinação VID e PID geram um código único para diferenciar os
dispositivos no mesmo barramento
− Associação de drivers apropriados
− Fácil expansão através de hubs
Serial
 Barramento de 4 fios Paralela
PS/2
− Barramento de alimentação
− Barramento diferencial com CRC através de SIE

 Topologia “Tiered Star”


− Até 127 dispositivos no barramento, análogo ao Ethernet T-10

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 9
Conceito de USB
 USB é um “Single Master + Multiple Slaves”
USB Host Controller (Mestre)
e Root Hub

Mouse Impressora Caixa acústica


Início do Frame

Int Iso Iso Int Iso Iso Int Iso Bulk Bulk
SOF SOF SOF
EP1 EP1 EP1 EP1 EP1 EP1 EP1 EP1 EP2 EP2

1 ms 1 ms 1 ms
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 10
Barramentos e comparação
de velocidades
1394-Fire Wire
Não precisa ser Ethernet
High-Speed para
ser USB 2.0 WiFi (b/g)

USB 2.0

LS-USB FS-USB HS-USB


1.5 Mb/s 12 Mb/s 480 Mb/s

CAN USB 1.1


Porta Serial Porta Paralela

500 Kb/s 1 Mb/s 1.5 Mb/s 12 Mb/s 100 Mb/s 480 Mb/s 1 Gb
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 11
Maiores Mitos
 Mito: Um periférico USB Low-Speed pode transferir dados
até 187,5 kbps (1,5 Mbps)

 Fato: Impossível, devido a restrições na especificação USB:


− Transferência de 8 bytes de dados a cada 10ms
− (800 bytes/segundo)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 12
Maiores Mitos
 Mito: Um periférico USB Full-Speed pode transferir dados
até 12 Mbps

 Fato: É impossível transferir dados nessa velocidade pois


12 Mbps é a largura total de banda completa do
barramento. A taxa de transferência real para um único
periférico é de aproximadamente 8 Mbps. Em alguns casos,
apenas 0,5 Mbps;
− A largura de banda deve ser compartilhada entre
todos os periféricos USB
− As características do protocolo o sujeitam a
“overhead”
− Restrições de protocolo
− Existem restrições no protocolo
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 13
Informações gerais
Itens Microchip disponíveis
 PIC16C7X5 - Low Speed USB 1.1 (device) - NÃO RECOMENDADO
PARA NOVAS APLICAÇÕES!!!
 PIC18FXX5X, PIC18FXXK5X e PIC18FXXJ5X - Full e Low Speed USB
2.0 (device)
 PIC24FJXXXGBXXX - Full e Low Speed USB 2.0 (device, embedded
host e OTG)
 PIC32MX4XXFXXX - Full Speed USB 2.0 e Low Speed USB 2.0 (device,
embedded host e OTG)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 14
Topologia do Barramento Físico
Controlador
USB host

Alto Hub • Até 127 dispositivos


Teclado na rede
falante
• Os Hubs e o Host
Hub também contam
Analisador • Host tem ID 0
Lógico
• Até 16 “endpoints” por
Hub dispositivo

Maior Cadeia de Hub


hubs possível: 5
Os componentes
Hub PIC18 USB foram
desenhados para
Data Logger
serem periféricos!
Hub

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 15
Topologia de Barramento
Lógico
 Não é um “tiered-star”!
 O software do host se comunica a cada
dispositivo lógico como se estivesse
conectado diretamente ao root hub

Host
Dispositivo
Lógico Dispositivo
Lógico

Dispositivo Dispositivo
Lógico Lógico Dispositivo
Lógico
Dispositivo
Lógico
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 16
Acessando os periféricos
do PC
Modo antigo Modo USB
 Periféricos do PC:  Periféricos do PC:
 Memória mapeada no  Mapeado em um
barramento de barramento virtual
endereço do x86 com 127 endereços
 Determinada a linha de espaço
específica IRQ  Não utiliza nenhum
 Determinado o canal recurso do PC (I/O,
específico DMA IRQ e DMA)
 Acessado diretamente  Acessado indiretamente
em um barramento utilizando a interface de
(ISA, PCI, PCMCIA, programação fornecida
serial, paralela …) por um driver
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 17
Enviando/Recebendo no PC
 Apenas acesso de alto nível
 Quatro funções básicas:
− MPUSBOpen(VID, PID, Endpoint, Direction)
− MPUSBRead(Pointer, Size, Timeout)
− MPUSBWrite(Pointer, Size, Timeout)
− MPUSBClose(Handle)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 18
Enviando/Recebendo no
dispositivo
 Apenas acesso de alto nível
 Exemplo: CDC Class RS-232

void putrsUSBUSART(const rom char *data);


void putsUSBUSART(char *data);
void mUSBUSARTTxRom(rom byte *pData, BYTE len);
void mUSBUSARTTxRam(BYTE *pData, BYTE len);
byte getsUSBUSART(char *buffer, BYTE len);
byte mCDCGetRxLength(void);

Você não precisa mais ler/escrever


diretamente nos SFRs do periférico!

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 19
USB Device Framework
- Software visto pelo Hardware -
Host System Peripheral Device
User Code
Function Layer

Function Layer
Non USB Format
N - Driver Physical Device
Specific
USB Device Driver Pipes (Ep1..)
Bus Interface USB Device

Non USB Format Device Specific Comm

Layer
USB Device Bus Interface
2-Default
Layer

USB System Software Control Pipes Logical Device


(Ep0_OUT/IN)
USB Data Frames USB Data Frames
Layer

Layer
USB Adapter/Controller Cable Bus Interface

Caminho de comunicação física


Caminho de comunicação lógica (“Pipe”)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 20
O dispositivo “lógico” USB
Device
(Fabricante:
Fabricante: Microchip Technology)
(Produto:
Produto: Mouse)
(VID_PID: 04d8_0000)
Configuração
(Ativa)
Ativa)

Interface Analogico/Digital
(Mouse) I/O

USB Device-Specific Pipe(s) Endpoint 1 MCHPFSUSB


(HID) (Interrupt - IN) Funções HID TX/RX
Endpoint 1
(Interrupt - OUT)

Ambientes lógicos
são representados
Endpoint 0 pelo Device
USB System Software (Control - OUT)
Descriptor Table,
(controle padrão de pipes) Endpoint 0 armazenado em
(Control - IN) “usbdsc.c”
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 21
Interface física
VBUS VBUS ~ 5.0 V
D+ D+
~ 3.3 V
D- D-
GND GND

 Half Duplex with codificação de dados NRZI


 Excelente para rejeição de ruidos de modo comum
 Transmissão de dados em apenas uma direção por vez
 Barramento de energia para cada dispositivo:
 4,40 – 5,25 V
 Garantia de pelo menos 100 mA
 Máximo 500 mA mediante a negociação
 Se mais corrente é necessária, deverá ser utilizada alimentação
externa
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 22
Conectores USB (ver!!!)
Plugs “A” utilizados
no Host USB

Plug “B” Plug “mini-B” Plug “micro-B”


Utilizado em Utilizado em Utilizado em periféricos
periférico FS e HS periférico FS e HS



Pinagem USB
Número do pino Função
Periféricos
1
2
VCC
D-
LS, FS, HS
3 D+ Com fio ou
4 GND
customizado
destacável

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 23
Agenda
 Breve história da USB e USB-IF
 Fundamentos da USB – Material sério e importante
− Fundamentos/Velocidades
− Arquitetura/Modelo de programação
− Conexão Física
− Transações USB
− Transferências USB
− Departamentos do dispositivo
− Enumeração
− Descritores
− Planejamento de energia
− VID/PID & USB Compliance
 Microcontroladores PIC USB
 Soluções Microchip e LabTools: Demo/Ferramentas
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 24
Como fazer o host e o
device se comunicarem?
Transações USB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 25
Um Endpoint é um Buffer

Data Bucket

Transação OUT RAM


Endpoint 1 OUT LED

Transação IN RAM
Endpoint 1 IN “Caps-Lock”

 O número máximo de endpoints por device


especificado pela especificação USB:
− 16 OUT endpoints + 16 IN endpoints = 32 endpoints
− PIC18F87J50, PIC18F4550 suporta até 32 endpoints
 EP0 = Pipe padrão de comunicação

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 26
Transação USB

USB Transaction

Sinal do pacote

SETUP e OUT: tipos de sinal


informa ao dispositivo alvo que Especifica:
o host quer enviar dados. • Endereço do dispositivo alvo
IN: tipos de sinal informa ao • Número do Endpoint
• Direção da transferência de
dispositivo alvo que o host quer
dados
ler dados.

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 27
Transação USB - IN

USB Transaction

Pacote do sinal IN

Pacote de dados

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 28
Transação USB - IN

USB Transaction

Pacote do sinal IN

Pacote de dados

Dados de Handshake

Resposta - ACK

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 29
IN Transação ACK
Tráfego USB USB PIC® MCU
USB Transaction

Dados de sinal IN
(para EP1 IN)
Serial If U
OW
RAM
SFR EP1 OUT BD
(UOWN, Length,
Endpoint
N = 1 OUT Pointer)
Interface 1
SFR EP1 IN BD
Pacote de dados SIE Envia dados RAM
(UOWN, Length,
Engine Endpoint 1 IN
0
Pointer)
W N=
ts UO
S e
Pacote de

Atualiza BD
Caractere
digitado
Handshake putsUSBUSART( )

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 30
IN Transação NAK
Tráfego USB USB PIC® MCU
USB Transaction

Dados de sinal IN
(para EP1 IN)
Serial If U
OW
RAM
SFR EP1 OUT BD
(UOWN, Length,
Endpoint
N = 1 OUT Pointer)
Interface 0
SFR EP1 IN BD
RAM
(UOWN, Length,
Engine Endpoint 1 IN
Pointer)
Pacote de SIE Sends NAK
Handshake

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 31
OUT/SETUP Transação ACK
Tráfego USB USB PIC® MCU
USB Transaction
Dados de sinal
OUT/SETUP
If U
(para EP1 OUT) Serial OW
N =1
Interface RAM
SFR EP1 OUT BD
Pacote de dados SIE Deposita dados (UOWN, Length,
Endpoint 1 OUT
Pointer)
Engine WN=
0
UO
h,RAM
SFR EP1 IN BD
ng t (UOWN, Length,
Pacote de
ts Le Endpoint 1 IN Pointer)
Handshake
SIE Envia ACK Se

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 32
OUT/SETUP Transação NAK
Tráfego USB USB PIC® MCU
USB Transaction
Dados de sinal
OUT/SETUP
If U
(para EP1 OUT) Serial OW
N =0
Interface RAM
SFR EP1 OUT BD
Pacote de dados (UOWN, Length,
Endpoint 1 OUT
SI Pointer)
Engine
E
De
sc SFR EP1 IN BD
a rta RAM
(UOWN, Length,
Pacote de da Endpoint 1 IN
Pointer)
SIE envia NAK do
Handshake s

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 33
Lembrete: Tipos de Sinal

SETUP

OUT

IN

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 34
Como fazer o host e o
device se comunicarem?
Transferências USB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 35
Transferências Vs.
Transações
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)
Transferência
Legenda:
Transação 1
64 Byte Payload Pacote de sinal OUT

Pacote de
Transação 2 dados
64 Byte Payload Pacote Handshake ACK

Transação 3
Transfere: Grupo de
1 Byte Payload transações relatadas.

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 36
Tipos de transferência de dados
- USB de alta velocidade (full-speed) -
Transferênci Intervalo de % Reservada Max. # Data Integridade
a/tipo de Polling BW/Frame para Bytes/Frame/Endpoint dos dados
Endpoint todas as (Max# transações por
tranferências frame @ Max Ep Size)*
deste tipo
Interrupt Fixo, Periódico 90 64 (1 x 64) Sim

Isocrono Fixo, Periódico 90 1023 (1 x 1023) Não

Bulk Variável, usa 0 1216 (19 x 64) Sim


largura de banda
livre

Control Variável 10 832 (13 x 64) Sim

* Tamanho máximo do pacote assumido de acordo com o tipo do Ep.


© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 37
Exemplo de tranferência de
interrupção
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)

Tráfego de outros
Endpoints ou aguarda Transações

64 64 1

Frame = 1ms

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 38
Exemplo de transferência
Bulk
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)
As transações
ocorrem somente se
não ocorrer alta
prioridade de tráfego

Int. Isoc. Int. 64 64 Int. 1

Frame = 1 ms

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 39
Máxima transferência teórica
por Endpoint
1400
1216
1200
1023
1000 832
800
KByte/s
600 Baixa
400 Alta
200 64
24 0.8
0
Control Interrupt Bulk Iso
Tipo de transferência

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 40
Tipos de transferências - Exemplos

Mouse Impressora Caixa acústica

Control Control Control


+ + +
Interrupt Bulk Isocrono

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 41
Chave: Tipos de
transferência

Todos os dispositivos PIC18, PIC24


e PIC32
Control, Interrupt, Bulk, Isocrono

PIC16C7X5

Apenas control e Interrupt

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 42
USB Device Classes

Disco
Luva Flexível
de Dados
Adaptador
Ethernet
Mouse
Disco
rígido
Externo
PICkit™ 2
Starter Kit Modem
Mass Storage Class
Controle (MSD)

Communication Device
Class (CDC)
Teclado ICD2

Custom Class
(Vendor Class)
Human Inteface Device Class
(HID)
Muitos outras classes…

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 43
Considerações quando utilizar
Standard Classes
 CDC (Virtual Com Port)  Custom
 Protocolo de  Protocolo de
comunicação device comunicação
definida indefinida

 O PIC “parece” com um  Aplicação do PC fala


modem, ou terminal diretamente ao endpoint no
conectado à porta serial PIC
 A aplicação/PIC PC Host  A aplicação/PIC do PC troca
troca a strings ASCII (exchange) raw bytes
(padrão)
 Pacotes de gerenciamento
são chamadas junto dom
os pacotes de dados.
 Menor velocidade de dados
que a classe adaptada
(80kByte/s vs 1MByte/s) Mais sobre o CDC
Device Class na Parte 2

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 44
Example – Usando CDC
Aplicação

Aplicação
Driver UART

Driver UART
Driver CDC

Hardware UART
Hardware USB

RS-232 RS-232 USB


USB

Hardware UART
Hardware USB

APIs UART Microchip


CDC RS-232 USB UART APIs PIC18, PIC24
Emulação ou PIC32
Aplicação API
Firmware Aplicação
Firmware

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 45
Agenda
 Breve história da USB e USB-IF
 Fundamentos da USB – Material sério e importante
− Fundamentos/Velocidades
− Arquitetura/Modelo de programação
− Conexão Física
− Transações USB
− Transferências USB
− Departamentos do dispositivo
− Enumeração
− Descritores
− Planejamento de energia
− VID/PID & USB Compliance
 Microcontroladores PIC USB
 Soluções Microchip e LabTools: Demo/Ferramentas
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 46
Enumeração e a magia por trás do
“Plug&Play” (não “Plug&Pray”)
Auto-detecção e Auto-configuração

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 47
Auto-Detecção: Full-Speed
Dispositivo Perifé
Periférico

Microcontrolador USB
PIC18, PIC24 ou PIC32
VUSB 3.3 V
Identificação Full Speed
(pull-up na linha D+)
1.5 kΩ±5%

+5V

D+
Transceiver
D-

GND

Conector
USB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 48
Auto-Detecção: Low-Speed
Dispositivo Perifé
Periférico

Microcontrolador USB
PIC18, PIC24 ou PIC32
VUSB 3.3 V
Identificação Low Speed
(pull-up na linha D-)
1.5 kΩ±5%

+5V

D+
Transceiver
D-

GND

Conector
USB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 49
Resistores Pull-up On-chip
Dispositivo Perifé
Periférico

Microcontrolador USB PIC18


VUSB 3.3 V
Resistores pull-up
On-chip!
Controlado por
UCFG<UPUEN> &
+5V UCFG<FSEN>

D+
Transceiver
D-

GND

Conector
USB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 50
Endpoint 0 e Enumeração
 Veja o capítulo 9 em USB 2.0 Spec para maiores
informações.
Microcontrolador USB PIC18
Dual Port/Access RAM

Endpoint 0 OUT
(Dados de controle)
Transferências e controle
Endpoint 0 IN
(Dados de controle) Descritores

Outros
Endpoints

Barramento Ajuste Obter os Ajuste e Dispositivo


Reset endereço Descritores Configuração Pronto

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 51
Descritores

String 0 Device
String 1
Para outras configurações,
se houver possibilidade
String N Configuração 1
Para outras
interfaces, se
Interface 0 Interface 1 houver
possibilidade

Endpoint Endpoint Endpoint Endpoint

 Descritores são tipicamente armazenados em memórias não


voláteis/Flash
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 52
Descritores - Exemplo
USB 2.0, VID = 0x04D8,
Manu. String Dispositivo PID = 0x0007, Num. Configurações,
Strings?
Microchip
Configuração #1: Barramento
Configuração 1 energizado, Wakeup remoto, 500mA,
Prod. String Num. Interfaces
PICDEM USB

Interface 0 Interface #0: HID Class, Num.


Outra String Endpoints
Vá USB!
Endpoint 1 IN, Tipo de transf. Interrupt,
Endpoint
buffer de 64 bytes, polling a cada 3 ms
Caracteres
Unicode
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 53
Planejamento de energia
 Corrente máxima de suspensão USB é
0.5/2.5mA
 Não faça:
VDD
Power from
USB Cable 22µF

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 54
Planejamento de energia
 Corrente máxima de suspensão USB é
0.5/2.5mA
 Faça: Power from V
USB Cable DD

≤10µF

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 55
Microcontrolador PIC®: Detectando
uma conexão USB

Self-Powered
Power from
VDD
USB Cable
I/O

Se o dispositivo for auto-energizado,


você DEVE usar um pino I/O para
detectar a conexão do cabo.

Não deve-se pull up D+ or D- (e nunca


originar a corrente em VBUS) até os
drives do host VBUS estiverem
prontos.

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 56
VID & PID
 Vendor ID (VID) número de 16 bits
− Exigido para introduzir seu produto no mercado
− http://www.usb.org/developers/vendor/
− USD $2,000
− Problemas técnicos e legais se não utilizar um
VID aprovado
 Produto ID (PID) número de 16 bits
− Programa sub-licenciado da Microchip
 É obrigatório toda linha de produção ter uma
única combinação de VID e PID
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 57
Flexibilidade USB
 Testando flexibilidade
− Deve-se passar a usar o logo USB
− USD ~$1,500
 Ferramentas e aplicativos USB

 www.usb.org/developers/tools/

 Qualidade do sinal elétrico


 Gerenciamento de energia
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 58
Teste de flexibilidade
 Para a flexibilidade USB: Testes independentes de laboratório (ou
testes Labs independentes)
 Para o device ‘Controle de eqüilíbrio’: USB “Plugfest”

 Para o teste de flexibilidade USB:


− Deve-se submeter uma lista de flexibilidade
− www.usb.org/developers/compliance/peripheral_low/
− Download “Peripheral Checklist”

− TID: Teste ID
− Use um receptáculo USB certificado e um cabo
− Saiba o TID de seus componentes
− Todos os microcontroladores PIC® USB têm um número TID. Obtenha-o em
www.microchip.com/usb

 Uma boa idéia é dar uma olhada na lista antes mesmo de iniciar o
seu projeto!

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 59
Agenda
 Breve história da USB e USB-IF
 Fundamentos da USB – Material sério e importante
− Fundamentos/Velocidades
− Arquitetura/Modelo de programação
− Conexão Física
− Transações USB
− Transferências USB
− Departamentos do dispositivo
− Enumeração
− Descritores
− Planejamento de energia
− VID/PID & USB Compliance
 Microcontroladores PIC USB
 Soluções Microchip e LabTools: Demo/Ferramentas
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 60
PIC18 USB Flash Family
NEW NEW
PIC18F67J50
PIC18F67J50 PIC18F87J50
PIC18F87J50
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed
NEW NEW
PIC18F66J55
PIC18F66J55 PIC18F86J55
PIC18F86J55
96 KB 2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed
NEW NEW
PIC18F26J50
PIC18F26J50 PIC18F46J50
PIC18F46J50 PIC18F66J50
PIC18F66J50 PIC18F86J50
PIC18F86J50
64 KB 2.0
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed 2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed
NEW NEW
PIC18F25J50
PIC18F25J50 PIC18F45J50
PIC18F45J50 PIC18F65J50
PIC18F65J50 PIC18F85J50
PIC18F85J50
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed
32 KB
PIC18F2550/3*
PIC18F2550/3* PIC18F4550/3*
PIC18F4550/3*
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed

PIC18F2455/8*
PIC18F2455/8* PIC18F4455/8*
PIC18F4455/8* * Denotes 12-bit ADC NEW
24 KB
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed

16 KB PIC18F14K50
PIC18F14K50 PIC18F2450
PIC18F2450 PIC18F4450
PIC18F4450
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed

8 KB PIC18F13K50
PIC18F13K50
2.0
2.0 Full-Speed
Full-Speed

20-Pin 28-Pin 40/44-Pin 64-Pin 80-Pin


© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 61
PIC24 / PIC32 USB Flash Family
512 KB PIC32MX440F512H
PIC32MX440F512H PIC32MX460F512L
PIC32MX460F512L
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed

PIC32MX440F256H
PIC32MX440F256H PIC32MX460F256L
PIC32MX460F256L
2.0
2.0 Full-Speed
Full-Speed PIC24FJ256GB108 2.0
2.0 Full-Speed
Full-Speed
256 KB PIC24FJ256GB108
2.0
2.0 Full-Speed
Full-Speed
PIC24FJ256GB106
PIC24FJ256GB106 PIC24FJ256B110
PIC24FJ256B110
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed

PIC24FJ192GB106
PIC24FJ192GB106 PIC24FJ192GB108
PIC24FJ192GB108 PIC24FJ192GB110
PIC24FJ192GB110
192 KB 2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed

PIC32MX440F128H
PIC32MX440F128H PIC32MX440F128L
PIC32MX440F128L
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed
PIC24FJ128GB108
PIC24FJ128GB108
128 KB PIC24FJ128GB106
PIC24FJ128GB106 2.0
2.0 Full-Speed
Full-Speed PIC24FJ128GB110
PIC24FJ128GB110
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed

64 KB PIC24FJ64GB106
PIC24FJ64GB106 PIC24FJ64GB108
PIC24FJ64GB108 PIC24FJ64GB110
PIC24FJ64GB110
2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed 2.0
2.0 Full-Speed
Full-Speed

32 KB PIC32MX420F032H
PIC32MX420F032H
2.0
2.0 Full-Speed
Full-Speed

64-Pin 80-Pin 100-Pin


© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 62
Módulo USB
Placa do dispositivo periférico

PIC18F4550
Regulador 3.3 V

Bus Pull-Up
Resistors
D+/D- Transceiver
Data RAM
Memória
USB RAM do
Programa
SIE Control
Registers

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 63
Serial Interface Engine

SIE ...
PIC18 USB MCU
 “Serializa” e “Deserealiza”

dados USB
 Codifica e decodifica dados

NRZI
D+/D- Transceiver
 Gerencia bit stuffing Data RAM
 Checa CRC para validar o
Memória
pacote de dados do
USB RAM
 Detecta sinalização de Programa
barramento e notifica a CPU SIE Control
para interrupçãos Registers
 Gerencia transações USB

 Gerencia handshaking

protocol
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 64
Obrigatório
para USB
SIE
FS: 48 MHz
LS: 6 MHz
Clocks do
sistema

CPU

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 65
Exemplo de Configuração
do Clock
Placa do dispositivo periférico

PIC18F4550

20 MHz EC Divide por 5 96 MHz PLL Divide por 3

Somente 4 MHz de Divide por 2


entrada
32 MHz :
8 MIPs
PIC®
SIE MCU
Core

SIE Clock = 48 MHz : Modo full-speed

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 66
Agenda
 Breve história da USB e USB-IF
 Fundamentos da USB – Material sério e importante
− Fundamentos/Velocidades
− Arquitetura/Modelo de programação
− Conexão Física
− Transações USB
− Transferências USB
− Departamentos do dispositivo
− Enumeração
− Descritores
− Planejamento de energia
− VID/PID & USB Compliance
 Microcontroladores PIC USB
 Soluções Microchip e LabTools: Demo/Ferramentas
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 67
USB de alta velocidade
McLab2 c/ USB
 PIC18F4550, 20MHz xtal
 Porta USB
 Porta serial
Placa USB no conector de expansão

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 68
Explorer16BR com plugin
PIC24FJ256GB110
 PIC24FJ256GB110, 8MHz xtal
 PictailProto com USB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 69
Características do Firmware da
USB Microchip
 Compatível com o C18, C30 e C32
 Projeto central MPLAB® IDE
 Polling Scheme
 Multi-Tasking cooperativo (sem rotinas de
bloqueio)
 Uso da memória do programa
− Enumeração USB (capítulo 9) - 3 KB
− HID - 1 KB
− CDC (Emulação RS-232) - 1 KB
− USB Mass Storage - 4 KB

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 70
Sumário – Parte 1
 Fundamentos/Arquitetura
− Até 126 dispositivos compartilhando largura de
banda
− Host é o mestre
 Comunicação do Host/Device
− Transações
− Transferências
 Enumeração/Capítulo 9
− Descritores
 A Microchip e LabTools oferecem:
microcontroladores, placas demo,
Firmware, Driver adaptado
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 71
Parte 2:
Introdução às soluções do firmware
MCHPFSUSB da Microchip e
Hand’s-on com CDC Class e
substituições APIs RS-232

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 72
Objetivos
 Introdução ao sistema de firmware
MCHPFSUSB USB da Microchip
 Introdução à classe do dispositivo
CDC
 Adquir experiência prática
utilizando o firmware do dipositivo
USB da Microchip
− Classe CDC: Emulação RS-232 API
(AN956)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 73
Agenda
 Verificação do conhecimento USB:
 Classes dos dispositivos e soluções da classe
do dispositivo USB da Microchip
− Exercício 2.1
 “Brincar” com o driver de uso geral (demo)
 Introdução à especificação da classe CDC do
dispositivo USB
 Usando o Firmware da classe CDC Microchip:
API Emulação do RS-232
− Exercícios 2.2.1 – 2.2.5
 APIs de emulação do RS-232

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 74
Verificação do conhecimento
USB
 Máximo de números que os
dispositivos USB podem suportar?
 Número de pinos no conector USB?
 Qual é o máximo baud rate USB FS?
 Qual é a direção da entrada de
dados?
 Quais são os tipos de transferência
de dados USB?
 O que é enumeração USB?
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 75
Device Classes &
solução de firmware
Microchip USB Device Class

V1.10 Feb 28, 2008


© 2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0
v2.0 Slide 76
MCHPFSUSB Device Side
Class Frameworks Disponível
Floppy
Luva de Drive
dado
Ethernet
Adapter
Mouse
External
Hard Drive

PICkit 2
Mass Storage Device Modem

Joystick Class (MSD)

Communication Device
Class (CDC)
Keyboard ICD2

Custom Class
(Vendor Class)
Human Interface Device Class
(HID)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 77
Criando e usando classe
de dispositivo
PIC18F4550

Control Transfer
Ch 9
(SETUP, EP0
OUT, IN)

EP1
Device Aplicação
Interrupt, Bulk, ... Class do usuário
Isocrono
(OUT, IN)
EP15

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 78
Human Interface Device
(HID)
Microcontrolador PIC® Computador PC

HID\Mouse Drivers do Windows padrão HID App

Cabo USB

Considerações do projeto:
• Máximo de 64 KB/s
• Transferência de dados tipo interrupção
• Driver padrão do Windows
• Aplicação do PC adaptado pode acessar dados
HID através de APIs win32

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 79
CDC – Emulação RS-232

Microcontrolador PIC® Computador PC

CDC Drivers do Windows padrão Hyper Terminal

Cabo USB INF File Required


(C:\Microchip Solutions\USB Tools\
USB CDC Serial Demo\inf)

Considerações do projeto:
• Máximo de ~80 KB/s
• Transferência Bulk
• Aplicações PC podem acessar o dispositivo como
se ele estivesse conectado à porta serial COM
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 80
Custom Class Driver
Computador PC
Código
Microcontrolador PIC® fonte e
binário
Somente binário
Boot
MCHPUSB.sys MPUSBAPI.dll PDFSUSB.exe
Demo
Outros
Cabo USB Binary
exemplosOnly
C++
INF File Required
(C:\Microchip Solutions\ Código
USB Tools\MCHPUSB Custom Driver\ fonte e
MCHPUSB Driver\Release) binário

Considerações do projeto:
• Máximo de ~1,088 KB/s
• Muito flexível (possibilidade de usar transferência
Control, Bulk ou Isocrono)
• Não é um driver padrão Windows
• Programação do PC é requerida
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 81
Mass Storage Device (MSD)
Veja AN1003: USB Mass Storage
Microcontrolador PIC® Computador PC
Windows
MSD Drivers do Windows padrão
Explorer

Cabo USB

Considerações do projeto:
• Atua como um drive externo
• Rápida transferência de dados na USB
• Velocidade é limitado, depende apenas da mídia
física utilizada
• Para maior proveito, um Sistema de Arquivo
também pode ser implementado no firmware
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 82
Download do Microchip USB
Framework

390_USB
incorpora v2.4
do Microchip
USB
Framework

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 83
Exercício 2.1
- Objetivos -
 Acompanhar o instrutor
 Familiar-se com o ambiente de
desenvolvimento
 Nós não escreveremos nenhum código
 Apenas complie, programe a memória
Flash e treine com a demonstração
padrão

 Exercício 2.1: Driver de uso geral (demo)


© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 84
Visão geral da
especificação
USB CDC Device Class

V1.10 Feb 28, 2008


© 2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0
v2.0 Slide 85
Aplicação da porta COM
“Virtual”
HyperTerminal

HyperTerminal
Driver UART

Driver UART
Driver CDC

Hardware UART
Hardware UART

RS-232 RS-232 USB


USB

Hardware UART
Hardware UART

APIs UART RS-232 CDC


da Microchip APIs UART USB PIC18, PIC24
API de ou PIC32
Aplicação do Emulação
Firmware Aplicação do
Firmware

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 86
A “Communications Device
Class” (CDC)
 Encompasses a variety of devices
 “POTs (Plain Old Telephone Service)”
 Telefone e modems analógicos, adaptadores de
terminal ISDN, celulares, portas COM “Virtuais”
 “Medium Speed” networking devices
 Modems ADSL, Modems de cabo, Adaptadores
Ethernet
 A interface USB nesses devices transmite
dados como dados emcapsulados,
específico para cada aplicação, como
V25ter para modens (comandos AT)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 87
Abstract Control Model (ACM)
Serial Emulation
 Implementação de coberturas ACM de portas
COM virtuais
 São obrigatórias 2 interfaces USB
− Communications Class Interface
 1 - Int IN Ep
 Usado para notificar o host do status da conexão da
corrente do RS-232 a partir do dispositico USB RS232
emulado
− Data Class Interface
 1 – Bulk IN Ep & 1 – Bulk OUT Ep
 Usado para transferir bytes de dados que poderiam
normalemente ser transferidos para RS-232
 Também usado para enviar comandos de controle
encapsulado (Comandos AT)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 88
O dispositivo USB CDC-ACM
“Lógico”
Device
(Manufacturer: Microchip Technology)
(Product: CDC RS-
RS-232 Emulation Demo)
(VID_PID: 04d8_000a)

Configuration#1
(Active)

Interface#0 Interface#1
(Communications (Data Class Interface)
Class Interface)
Analógico/Digital I/O
Endpoint 2
(Interrupt - IN)
usbser.sys Endpoint 3 MCHPFSUSB
(Bulk - OUT)
Pipes CDC TX/RX
Endpoint 3 Functions
(Bulk - IN)

OS USB
Endpoint 0
(Control - OUT)
Control
Pipes Endpoint 0
(Control - IN)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 89
Projeto CDC
-Solicitação da Classe específica ACM -
 Sumário da solicitação da classe específica e
notificações implementadas (veja 6.2 e 6.3 na
especificação para descrição do CDC):
− O firmware CDC implementa handlers para
 SEND_ENCAPSULATED_COMMAND
 GET_ENCAPSULATED_RESPONSE
 SET_LINE_CODING
 GET_LINE_CODING
 SET_CONTROL_LINE_STATE
− De qualquer forma, o firmware do CDC retorna um
NAK para dizer ao host nenhuma resposta está
disponível
 Você não precisa preocupar-se com o comportamento
dessas respostas
 Apenas envia/recebe seus dados através das função API
RS-232 CDC
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 90
Projeto CDC
- Configuration Bits -
 FS USB Clock Source: Fonte de clock de 96 MHz PLL/2
 CPU Sys Clk Postscaler: [OSC1/OSC2 Src: /1][96MHz PLL Src: /2]
 96MHz PLL Prescaler: Div by 5 {20 MHz input}
 Oscillator: HS, HS+PLL, USB-HS
 USB Voltage Regulator: habilitado
 Watchdog Timer: Desabilitado
 PortB A/D Enable: configurado como I/O digital no RESET
 Low Voltage Program: desabilitado

 O único arquivo que você precisará modificar é o main.c

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 91
Projeto CDC
- Configuração do Clock -
Placa do dispositivo periférico

PIC18F4550

20 MHz EC Divide por 5 96 MHz PLL Divide por 3

Somente 4 MHz de Divide por 2


entrada
32 MHz :
8 MIPs
PIC®
SIE MCU
Core

SIE Clock = 48 MHz : Modo full-speed

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 92
Usando a API Microchip
CDC Class RS-232
Emulation (Exercício 2.2)

V1.10 Feb 28, 2008


© 2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0
v2.0 Slide 93
Rodando o código CDC padrão
 Ligue o cabo RJ12 à McLab2 e no ICD2BR
 Selecione “File > Open Workspace…”
 Abra o projeto C:\Microchip
Solutions\USB Device - CDC -
Basic Demo\CDC - Basic Demo –
Firmware\USB Device - CDC - Basic
Demo - C18 - McLab2_18F4550.mcw
 Não faça mais nada ainda

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 94
Rodando o código CDC padrão
 Pressione F10 para compilar o projeto
 Selecione “Programmer > Select Programmer >
MPLAB ICD2”
 Selecione “Programmer > Program” para
transferir o código ao microcontrolador
 Selecione “Programmer > None” para
desabilitar o ICD2BR
 Desconecte o cabo RJ12 da McLab2
 Desconecte o cabo USB do ICD2BR
 Não conecte ainda o cabo USB na McLab2

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 95
Gerenciador de dispositivo
 Abra o Gerenciador de dispositivo (Iniciar > Painel de
controle > Sistema > Orelha Harware e clique no botão
Gerenciador de dispositivo)
 Dê uma olhada na categoria “Portas (COM & LPT)”
 Observe quantas portas COM há em seu computador

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 96
Gerenciador de dispositivo
 Agora conecte o cabo USB na McLab2 e instale
o arquivo CDC .inf quando avisado pela janela
“Novo Hardware encontrado”
 O dispositivo deve ser detectado pelo Windows

Você verá uma


nova COM “virtual”.
Guarde o número
da nova porta COM

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 97
Usando o HyperTerminal
 Execute o HyperTerminal usando o arquivo fornecido:
C:\RTC\390_USB\390_USB Hyperterminal Connection.ht
 Ignore a mensagem de erro da COMx

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 98
HyperTerminal: Configuração

 Selecione a nova porta


COM que foi adicionada
durante a instalação do
drive USB e clique “OK”
 (Arquivo > Propriedades
> Orelha Conectar-se,
Campo Conectar-se
usando:)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 99
HyperTerminal: Conectar
 Conecte à placa

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 100
HyperTerminal: Primeiro uso
 Agora, pressione o botão S2 na placa demo,
você deverá ver a mensagem abaixo…

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 101
HyperTerminal: Nota importante

 Antes de desconectar fisicamente um


dispositivo USB, você deve desligar a conexão
primeiro, pois de outra maneira o programa
deverá ser fechado e aberto novamente na
próxima vez que um dispositivo USB estiver
conectado.

 Vamos dar uma olhada nas aplicações


© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 102
Aplicações CDC
void putrsUSBUSART(const rom char *data);

void putsUSBUSART(char *data);

void mUSBUSARTTxRom(rom byte *pData, byte len);

void mUSBUSARTTxRam(byte *pData, byte len);

byte getsUSBUSART(char *buffer, byte len);

byte mCDCGetRxLength(void);

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 103
Determinantes da API
 Você vai enviar strings ASCII ou
bytes com a aplicação host?

 O dado é armazenado na ROM ou


RAM?

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 104
Aplicação para dados ROM
e Literal não-terminados
void putrsUSBUSART(const rom char *data);

void putsUSBUSART(char *data);

void mUSBUSARTTxRom(rom byte *pData, byte len);


Use ‘putrs’ para strings armazenados em
ROM
void mUSBUSARTTxRam(byte *pData, byte len);
Exemplo de uso:
putrsUSBUSART(“RTC USB”)
byte getsUSBUSART(char ou *buffer, byte len);
putrsUSBUSART(teste)
Onde:
rom char teste = {“Hello world!!!”};
byte mCDCGetRxLength(void);
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 105
Importância do Checking State
 cdc_trf_state
− CDC_TX_READY
− CDC_TX_BUSY
− CDC_TX_BUSY_ZLP
− CDC_TX_COMPLETING
 Quando chamamos uma API que envia dados ao host,
deve verificar-se que:
cdc_trf_state == CDC_TX_READY
 Ou use macro:
− BOOL mUSBUSARTIsTxTrfReady(void);
Retorna ‘1’ quando o estado é CDC_TX_READY

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 106
Fluxo do programa

Reset main InitializeSystem

MainLoop
main.c
Multitasking USBDriverService();
Cooperativo!!! CDCTxService();
USBTasks() …
Sem funções
de bloqueio.
ProcessIO() main.c ou
Use máquina outro arquivo
de estado. Exercise_01();
Exercise_02();

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 107
Multitasking cooperativas
Main Loop
Máquina de
estado

Task A.1 - 200 us

Task A Task A.2 - 400 us

900 us Task A.3 - 300 us

Max Loop Time


1000 us V.S. 500 us
Task B - 100 us

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 108
Exercício 2.2.1
- Enviando strings -
 Encontre a função Exercise_01() em main_user.c
 Escreva o código nesta função que envia uma string (“Hello
World!\r\n”) ao PC quando a tecla 2 é pressionada
 Dê uma olhada nos exemplos em Exercise_Example();
 Funções úteis:
− BOOL Switch2IsPressed(void);
 Retorna 1 se tecla 2 pressionada
 Retorna 0 se tecla 2 liberada
− BOOL mUSBUSARTIsTxTrfReady(void)
− Use: putrsUSBUSART(…)
Fim do exercício 2.2.1
 Código solução:
C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -
Firmware\user\solutions\Exercise1.txt

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 109
Exercise 2.2.2
- Sending ROM Data -
 Encontre a função Exercise_02() em main_user.c
 Escreva o código nesta função que envia uma string
apontada em um vetor na memória de programa
“ex02_string” ao PC quando a tecla 3 é pressionada.

 Funções úteis:
− BOOL Switch3IsPressed(void);
− BOOL mUSBUSARTIsTxTrfReady(void)
− Use: putrsUSBUSART(…)
Fim do exercício 2.2.2

 Código solução:
C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -
Firmware\user\solutions\Exercise2.txt

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 110
API para receber dados
void putrsUSBUSART(const rom char *data);
len = número de bytes esperados
buffer = buffer em RAM, onde a string
void putsUSBUSART(char *data);
será armazenada

getsUSBUSART retorna o número de


void mUSBUSARTTxRom(rom byte
bytes copiado para *pData,
o buffer byte len);

void mUSBUSARTTxRam(byte *pData, byte len);

byte getsUSBUSART(char *buffer, byte len);

byte mCDCGetRxLength(void);

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 111
Exercício 2.2.3
- Recebendo dados -
 Encontre a função Exercise_03() em main_user.c
 Escreva o código nesta função que lê dados do barramento
USB e trocar o estado do LED4 quando o dado recebido for
o caractere ‘1’ (0x31)

 Funções e variáveis úteis:


− input_buffer[];
− mLED_4_Toggle();
− Use: getsUSBUSART(…)
Fim do exercício 2.2.3

 Código solução:
 C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -
Firmware\user\solutions\Exercise3.txt

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 112
APIs para uma string com
tamanho definido
void putrsUSBUSART(const rom char *data);
Use mUSBUSARTTxRom para dados
armazenados na memória do Máximo de 255
programa (ROM) bytes
void putsUSBUSART(char *data);

void mUSBUSARTTxRom(rom byte *pData, byte len);

void mUSBUSARTTxRam(byte *pData, byte len);

byte getsUSBUSART(char *buffer, byte len);


Use mUSBUSARTTxRam para dados
armazenados na memória de dados
byte mCDCGetRxLength(void); (RAM)

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 113
Exercício 2.2.4
- Enviando dados não-terminados -
 Antes de começar, comente primeiro a chamada de Exercise_01() em
ProcessIO()
 Encontre a função Exercise_04() em main_user.c
 Escreva o código nesta função para enviar 4 bytes de dados
consecutivos: 0x30,0x31,0x32,0x33 quando a tecla 2 é pressionada
 Funções e variáveis úteis:
− Switch2IsPressed();
− BOOL mUSBUSARTIsTxTrfReady(void)
− output_buffer[];
− Use: mUSBUSARTTxRam(…)
Fim do exercício 2.2.4
 Código solução:
C:\Microchip Solutions\USB Device - CDC - Basic Demo\CDC -
Basic Demo - Firmware\user\solutions\Exercise4.txt

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 114
API para dados RAM não-
terminados
void putrsUSBUSART(const rom char *data);

void putsUSBUSART(char *data);

void mUSBUSARTTxRom(rom byte *pData, byte len);

Use ‘puts’ para dados armazenados


void mUSBUSARTTxRam(byte *pData, byte len);
na RAM

Exemplo de uso:
byte getsUSBUSART(char *buffer, byte len);
putsUSBUSART(output_buffer);
onde
char output_buffer[ ]={“Microchip”};
byte mCDCGetRxLength(void);

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 115
Exercício 2.2.5
- Dados da temperatura -
 Encontre a função Exercise_05() em user.c
 O programa atual envia a temperatura ambiente para a
USART. Mude o programa para o envio do dado pela porta
USB.

 Siga as instruções em Exercise_05()

 Use mUSBUSARTIsTxTrfReady()
 Use putsUSBUSART(...)

Fim do exercício 2.2.5


 Código solução:
C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -
Firmware\user\solutions\Exercise5.txt

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 116
O que há de errado com esse
código?
void Exercise_XX(void)
{
putrsUSBUSART(“Hello World!”);
}

Não foi verificado se o TX está pronto:


if(mUSBUSARTIsTxTrfReady())

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 117
O que há de errado com esse
código?
void Exercise_XX(void) Rsposta:
Função de bloqueio!
{
Não é bom para
while(!mUSBUSARTIsTxTrfReady()) multitasking
; cooperativo.

CDCTxService() em
putrsUSBUSART(“Hello World!”);
USBTasks() nunca
} será chamado, e
cdc_trf_state nunca
será atualizado.

O programa só estará
preso em um loop.

Lembre-se: use uma


máquina de estado!

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 118
Analise do execício
 Velocidade
− 640 Kbits/s = 80 Kbytes/s
− Mais rápido que o RS-232 (UART)
− Esta solução não é possível com um dispositivo
USB de baixa velocidade porque ele não tem
endpoint bulk
 Sem handshakes do hardware
 Memória do programa usada:~ 4 KB
 Nota de aplicação
− AN956: Migrating Applications to USB from RS-232 UART with
Minimal Impact on PC Software
 O que fazer se eu precisar de uma velocidade
transferência de memória mais rápida?
− Considere-se usando nosso drivers do windows classe adaptada e
sistemas de dispositivos…

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 119
Parte 3:
Custom Class PC Host Drivers and
Device Framework

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 120
Objetivos
 Revisão do Windows e os drivers da
classe adaptada disponíveis

 Revisão MPUSBAPI.DLL &


mchpusb.sys

 Revisão do MCHPFSUSB custom class


device framework

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 121
Agenda
 Fundamentos do Windows®
− Arquitetura do Windows
− .NET
− Desenvolvimento da aplicação Windows com visual
C++ 2005 Express
− Escolhas do driver da USB para transferências
genéricas
 Microchip Custom Class USB Driver
− MPUSBAPI.DLL e mchpusb.sys
− Arquivos .inf
 Microchip Custom Class Device
Framework
 Sumário
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 122
Fundamentos
Windows ®

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 123
Sistema operacional Windows XP

 Baseado no Windows NT/OS2


− Projetado por David Cutler (Programador de DECs VMS OS)
 Função
− Para administrar o hardware e fornecer um ambiente no qual um
usuário pode executar programas de uma maneira conveniente e
eficiente
 Características essenciais
− Memória: grande, flat, espaço do endereço da memória virtual
− Sistemas de arquivos, terminal, e outros I/O
− Multitasking: processos e threads
− Comunicação e sincronização
 Usuário único e possibidade de trabalhar em rede
− Segurança
Arquitetura Windows
s
ow
o s d
d
s ow in
e
õ ind I W
ç U
lica l W G
Ap ina do
s
erm õe
t a ç
l ic
Ap
MPUSBRead( ) MPUSBWrite( )

DLLs do usuário, sub-sistema do ambiente Win32,


Bibliotecas do sistema (NTDLL.DLL)
NTReadFile( ), NTWriteFile( ) USUÁRIO
KERNEL

Gerenciador de I/O e gráficos, dispositivo e drivers do sistema de arquivo (.SYS)

I/O Request Packet(s) (IRP)

Hardware
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 125
Sistema .NET
do UI ws
es T G o
õ .NE es nd
ç i
lica inal a çõ W
Ap rm l ic rio
á
te Ap ul
orm
f
Código
gerenciado

Montagens da biblioteca da classe do sistema .NET (DLLs)

Código não MPUSBRead( ) MPUSBWrite( )


gerenciado

DLLs do usuário, sub-sistema do ambiente Win32,


Bibliotecas do sistema (NTDLL.DLL)
NTReadFile( ), NTWriteFile( ) USUÁRIO
KERNEL
Kernel

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 126
Desenvolvimento das aplicações do
Windows com visual C++ 2005 Express
 Com a edição do visual C++ 2005 Express você
tem duas maneiras básicas de criar uma
aplicação interativa, gráfica:
− Usando o Windows API (Win32 USER Functions)
 A programação mais intensiva
− Usando o Windows Forms (Sistema .NET)
 A programação menos intensiva

 Visual C++ 2005 Express Edition também lhe


permite criar dois tipos de terminais de
aplicação (ou aplicações do terminal) (Win32 e
CLR (.NET))
− Nós estaremos desenvolvendo uma aplicação “terminal
Win32” ANSI-C

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 127
Transferência dos dados
genéricos
Escolha do driver USB

V1.10 Feb 28, 2008


© 2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0
v2.0 Slide 128
mchpusb.sys vs. HID vs. CDC
Característica mchpusb.sys HID CDC
(v1.0.0.6)
Driver support built No Yes Yes (need .inf)
into Windows
64-bit PC Support Yes Yes Yes

XP Ready Yes Yes Yes

Vista Ready Yes Yes Yes

Transfer Types
(not incl. Ep0)
Control Yes Yes No

Iso Yes No No

Interrupt Yes Yes Yes

Bulk Yes No Yes

Max Speed ~1.0 MB/s 64KB/s ~80kByte/s

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 129
Outros drivers Custom Class…
 LibUSB
− Open Source
− Suporta Windows e Linux
− Suporta transferências de interrupção, de bulk
e de isócrono
− http://libusb-win32.sourceforge.net/
 WinUSB
− Suportado apenas pelo Windows XP e Vista
− Suporta interrupção e Bulk
− http://msdn2.microsoft.com/en-
us/library/aa476426.aspx

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 130
Microchip Custom Class
Windows®
USB Device Driver

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 131
MPUSBAPI
- Introdução -
 Código do invólucro (ou envelope) para
sistema de API Win32 chama funções (que no
final das contas se comunica com
mchpusb.sys)
 Trabalha com todos os dispositivos USB da
Microchip
 Trabalha com o Visual C++ . NET, C++ Builder ,
Visual Básic .NET e mais…
 Transferência de dados fácil e flexível
 Suporta transferências de Bulk, interrupção,
control e isócrono
 Interface funcional simplifica o
desenvolvimento da aplicação
 Gratuito
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 132
Microchip General Purpose
USB Device Driver
 mchpusb.inf – Esse arquivo
contém a informação sobre o driver
do dispositivo
 mchpusb.sys – Driver do dispositivo
USB da Microchip
 Esses arquivos pode ser encontrados no
seguimento path
− C:\Microchip Solutions\USB
Tools\MCHPUSB Custom
Driver\MCHPUSB Driver\Release
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 133
mchpusb.inf
 .inf arquivo fala para o windows como
configurar e usar um dispositivo
 Gerenciador de dispositivo lê o VID e PID
do dispositivo alvo
 Windows usas o arquivo.inf para:
− Associa driver para usá-lo com VIP e PID
− Especifica strings da identificação do
dispositivo
− Especifica código de origem e destino de
arquivos dos dispositivos
− Seta chaves de registro

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 134
Modificações do arquivo .inf
 Seções modificáveis em mchpusb.inf
− [DeviceList]
 %DESCRIPTION%=DriverInstall,
USB\VID_04D8&PID_000B,
USB\VID_04D8&PID_000C
− [Strings]
 ONEYSOFT="Walter Oney Software"
MFGNAME="Microchip Technology, Inc."
INSTDISK="Microchip Technology, Inc.
Installation Disc"
DESCRIPTION="PIC18F4550 Family Device"

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 135
As funções
MPUSBAPI.DLL

V1.10 Feb 28, 2008


© 2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0
v2.0 Slide 136
Funções em MPUSBAPI.DLL

Funções MPUSBAPI

MPUSBGetDeviceCount(..)

MPUSBOpen(..) VID & PID


MPUSBClose(..)
MPUSBReadInt( .. )
VID & PID MPUSBRead( .. )
MPUSBWrite( .. )
MPUSBGetDLLVersion( .. )

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 137
Sumário - Função DLL e uso
do tipo de transferência
Transferência/ Funções Time-Out
Tipo de Aplicável?
Endpoint
Interrupt-IN MPUSBRead, Sim
MPUSBReadInt
Interrupt-OUT MPUSBWrite Sim

Bulk-IN MPUSBRead Sim

Bulk-OUT MPUSBWrite Sim

Isochronous-IN MPUSBRead Não

Isochronous-OUT MPUSBWrite Não

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 138
Custom Class Device
Framework

V1.10 Feb 28, 2008


© 2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0
v2.0 Slide 139
Custom Class Firmware API
- Veja usbgen.c e usbgen.h -
 void USBGenInitEP(void);
− Chamado depois de um pedido SET CONFIGURATION
− Inicializa endpoints, máquina de estado e váriaveis
 void USBGenWrite(byte *buffer, byte len);
− Copia dados do buffer de usuário para o buffer Ep
 byte USBGenRead(byte *buffer, byte len);
− Copia dados do buffer Ep para o buffer do usuário
 (bit) mUSBGenRxIsBusy(void);
− Macro verifica se o Ep OUT está ocupado (pertencente ao SIE ou
não)
 (bit) mUSBGenTxIsBusy(void);
− Macro verifica se Ep IN está ocupado (pertencente ao SIE ou não)
 byte mUSBGenGetRxLength(void);
− Devolve o número de bytes copiado no registro do theuser depois da
mais nova chamada para USBGenRead()
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 140
Estrutura do Firmware
Custom Class (“Demo”)
Modelo simultâneo Inicializa

 Aceita comandos do
host USB Tasks()

 Retorna resultados Processo IO()


 Espera pelo próximo
comando
ServiceRequests()

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 141
Inicializando os periféricos PIC
 Em main.c, a função foi definida por você para o
código de inicialização periférica da aplicação
específica:

void UserInit(void)
{
mInitAllLEDs(); //macros defined in “io_cfg.h”

mInitPOT();

}//end UserInit

 UserInit() é chamado em main()durante a


inicialização do sistema.

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 142
Descriptor Table Settings
File usbdsc.c
/* Device Descriptor */
rom USB_DEV_DSC device_dsc=
{
sizeof(USB_DEV_DSC), // tamanho desse descritor em bytes
DSC_DEV, // tipo do DISPOSITIVO descritor
0x0200, // número de liberação do Spec USB no formato BCD
0x00, // código da classe
0x00, // código da sub-classe
0x00, // código do protocolo
EP0_BUFF_SIZE, // tamanho do pacote máximo para EP0, veja usbcfg.h
0x04D8, // fornecedor ID (ou ID do fornecedor)
0x000C, // ID do produto:PICDEM FS USB (modo DEMO)
0x0000, // número de revisão do device no formato BCD
0x01, // indicador da string do fabricante
0x02, // indicador da string do produto
0x00, // indicador da string do número serial do disp.
0x01 // número de configurações possíveis
};

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 143
Endpoint Descriptors
Arquivo usbdsc.c
/* Descritor do endpoint */

sizeof(USB_EP_DSC),DSC_EP,_EP01_OUT,_BULK,USBGEN_EP_SIZE,1,
sizeof(USB_EP_DSC),DSC_EP,_EP01_IN,_BULK,USBGEN_EP_SIZE,1

_BULK or _INT (Interrupt)

USB_EP_SIZE definido em USBCFG.H


#define USBGEN_EP_SIZE 64

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 144
String Descriptors
rom struct{byte bLength;byte bDscType;word
string[1];}sd000={
sizeof(sd000),DSC_STR,0x0409};

rom struct{byte bLength;byte bDscType;word


string[25];}sd001={
sizeof(sd001),DSC_STR,
'M','i','c','r','o','c','h','i','p',' ',
'T','e','c','h','n','o','l','o','g','y','
','I','n','c','.'};

rom struct{byte bLength;byte bDscType;word


string[33];}sd002={
sizeof(sd002),DSC_STR,
'P','I','C','D','E','M',' ','F','S',' ','U','S','B',' ',
'D','e','m','o',' ','B','o','a','r','d',' ','(','C',')',
' ','2','0','0',‘7'};

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 145
Sumário – Parte 3
 Drivers embutidos no Windows para mais
dispositivos USB
 Um Custom Class Device precisa de um
driver do dispositivo de um fornecedor
específico
 O arquivo mchpusb.sys é um driver do
dispositivo de um fornecedor específico
 /MCHPFSUSB/fw/demo contém o custom
class device framework
 Arquivos .inf
 MPUSBAPI.DLL simplifica suas atividades
de desenvolvimento
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 146
Sumário do RTC

V1.10 Feb 28, 2008


© 2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0
v2.0 Slide 147
Sumário
 Hoje, nós…
− Vimos os fundamentos da USB e como
isso poderia ser usado um uma
apliacação embarcada
− Nos familiarizamos com os
microcontroladores da Microchip, placas
de desenvolvimento e sistemas do
software USB.
− Revimos drivers USB do host do PC da
classe adaptada e sistema do dispositivo
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 148
Referências
 Código fonte MPUSBAPI.DLL
(arquivo _mpusbapi.cpp)
 MCHPFSUSB Firmware User’s Guide
(DS51679A)
 “Windows System Programming, 3/E” –
Johnson Hart
 “Microsoft Windows Internals, 4/E” –
Mark Russinovich
 “Operating System Concepts, 7/E” –
Silbershatz”
 “Modern Operating Systems, 3/E” –
Andrew Tanenbaum
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 149
Outras fontes
 Microchip USB Design Center: Firmware,
Custom Driver, App. Notes, other USB specific
resources
− http://www.microchip.com/usb
 Especificações USB 2.0 e Device Class
− http://www.usb.org
 Fórum de discussão dos desenvolvedores
− http://www.usb.org/phpbb/
− http://forum.microchip.com/tt.aspx?forumid=102
 “USB Complete, 3/E”
& “Serial Port Complete, 2/E” by Jan Axelson
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 150
Ferramentas de
desenvolvimento usadas neste
RTC

 McLab2 com PIC18F4550


 Outras ferramentas
− Placa adaptadora USB para McLab2
− ICD2BR

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 151
Obrigado!

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 152
Trademarks
O nome e logotipo Microchip, Accuron, dsPIC, KeeLoq, KeeLoq logo, microID,
MPLAB, PIC, PICmicro, PICSTART, PRO MATE, rfPIC and SmartShunt são
marca registrada da Tecnologia Microchip incorporada nos E.U.A. e em outros
países.
AmpLab, FilterLab, termistor linear ativo, memória migratória, MXDEV, MXLAB,
SEEVAL, sensor inteligente e soluções de controle embarcadas são marca
registrada da Tecnologia Microchip incorporada nos E.U.A.
Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM,
dsPICDEM.net, dsPICworks, ECAN, ECONOMONITOR, FanSense, FlexROM,
fuzzyLAB, In-Circuit Serial Programming, ICSP, ICEPIC, Mindi, MiWi, MPASM,
MPLAB Certified logo, MPLIB, MPLINK, PICkit, PICDEM, PICDEM.net, PICLAB,
PICtail, PowerCal, PowerInfo, PowerMate, PowerTool, REAL ICE, rfLAB, Select
Mode, Smart Serial, SmartTel, Total Endurance, UNI/O, WiperLock and ZENA
são marca registrada da Tecnologia Microchip incorporada nos E.U.A. e em
outros países.
SQTPé um serviço da marca da Tecnologia Microchip incorporada nos E.U.A.
todas as outras marcas registradas mencionadas são propriedade de suas
respectivas Companhias.

© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 153