You are on page 1of 150

COM3101

USB device

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 1
Objetivos
Depois deste treinamento voc ir:
Entender o que USB e como utilizar em
aplicaes embarcadas;
Familializar-se com os
microcontroladores, solues 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. COM3101 USB2.0 Slide 2
Agenda
Parte 1:
Introduo ao Full-Speed USB
Parte 2:
Introduo soluo Microchip
MCHPFSUSB Firmware e Hands-on
com CDC Class RS-232
Parte 3:
Introduo ao PC Host Custom Class
USB Driver e MCHPFSUSB custom
class device framework da Microchip

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 3
Parte 1:
Introduo ao
Full-Speed USB

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 4
Objetivos
Entender o funcionamento padro USB
Perceber o potencial para utilizao em
sistemas embarcados
Aprender sobre arquitetura USB,
protocolo e modelo de programao
Estar ciente dos fatores importantes em
desenvolver uma aplicao USB
Identificar as capacidades chaves dos
microcontroladores PIC com USB

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 5
Agenda
Breve histria da USB e USB-IF
Fundamentos da USB Material srio e importante
Fundamentos/Velocidades
Arquitetura/Modelo de programao
Conexo Fsica
Transaes USB
Transferncias USB
Departamentos do dispositivo
Enumerao
Descritores
Planejamento de energia
VID/PID & USB Compliance
Microcontroladores PIC USB
Solues Microchip e LabTools: Demo/Ferramentas
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 6
Informaes gerais
Um pouco de histria
Por que USB?
Dificuldades de interfacear um perifrico
Adio de placas nos PCs
Configurao de Interrupes (IRQ)
Configurao de Jumpers
Processo necessrio sempre que um hardware era inserido ou removido
Propsito: Interface de comunicao entre dispositivos embarcados e o PC

USB-IF (Frum de implementadores)


Especificaes USB
co-desenvolvidas por um grupo de 4 empresas:
Compaq, Intel, Microsoft, NEC
1998
verso 1.1 da especificao denominada USB 1.1.
2000
mais 3 empresas se juntam para formar a especificao USB 2.0.
Hewlett-Packard, Lucent, Philips
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 7
USB (Universal Serial Bus)
Estenda a funcionacilidade do seu PC!

Anlise de dados,
Data Logging,
Atualizao de Firmware,
Diagnsticos,
Aplicaes Embarcadas!

Auto deteco e configurao (Plug&Play)


Fcil expanso usando hubs Serial
Paralela
Bus power
PS/2
Proteo de dados via CRC
Trs velocidades:
Low- 1,5Mbps, Full 12Mbps e High- 480 Mbps

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 8
Informaes gerais
Produtos & detalhes
Controle total do barramento pelo Host
Os perifricos podem ser plugados com o Host ligado
Deteco de velocidade do barramento do perifrico
Low: 1.5 Mbps, Full: 12 Mbps, High:480Mbps
Deteco e configurao automticas (Plug & Play)
Combinao VID e PID geram um cdigo nico para diferenciar os
dispositivos no mesmo barramento
Associao de drivers apropriados
Fcil expanso atravs de hubs
Serial
Barramento de 4 fios Paralela
PS/2
Barramento de alimentao
Barramento diferencial com CRC atravs de SIE

Topologia Tiered Star


At 127 dispositivos no barramento, anlogo ao Ethernet T-10

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 9
Conceito de USB
USB um Single Master + Multiple Slaves
USB Host Controller (Mestre)
e Root Hub

Mouse Impressora Caixa acstica


Incio 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. COM3101 USB2.0 Slide 10
Barramentos e comparao
de velocidades
1394-Fire Wire
No precisa ser
High-Speed Ethernet
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. COM3101 USB2.0 Slide 11
Maiores Mitos
Mito: Um perifrico USB Low-Speed pode transferir dados
at 187,5 kbps (1,5 Mbps)

Fato: Impossvel, devido a restries na especificao USB:


Transferncia de 8 bytes de dados a cada 10ms
(800 bytes/segundo)

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 12
Maiores Mitos
Mito: Um perifrico USB Full-Speed pode transferir dados
at 12 Mbps

Fato: impossvel transferir dados nessa velocidade pois


12 Mbps a largura total de banda completa do
barramento. A taxa de transferncia real para um nico
perifrico de aproximadamente 8 Mbps. Em alguns casos,
apenas 0,5 Mbps;
A largura de banda deve ser compartilhada entre
todos os perifricos USB
As caractersticas do protocolo o sujeitam a
overhead
Restries de protocolo
Existem restries no protocolo
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 13
Informaes gerais
Itens Microchip disponveis
PIC16C7X5 - Low Speed USB 1.1 (device) - NO RECOMENDADO
PARA NOVAS APLICAES!!!
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. COM3101 USB2.0 Slide 14
Topologia do Barramento Fsico
Controlador
USB host

Alto At 127 dispositivos


Teclado Hub na rede
falante
Os Hubs e o Host
Hub tambm contam
Analisador Host tem ID 0
Lgico
At 16 endpoints
Hub por dispositivo

Maior Cadeia de
Hub
hubs possvel: 5
Os componentes
Hub PIC18 USB foram
desenhados para
Data Logger
serem perifricos!
Hub

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 15
Topologia de Barramento
Lgico
No um tiered-star!
O software do host se comunica a cada
dispositivo lgico como se estivesse
conectado diretamente ao root hub

Host
Dispositivo
Lgico Dispositivo
Lgico

Dispositivo Dispositivo
Lgico Lgico Dispositivo
Lgico
Dispositivo
Lgico
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 16
Acessando os perifricos
do PC
Modo antigo Modo USB
Perifricos do PC: Perifricos do PC:
Memria mapeada no Mapeado em um
barramento de barramento virtual
endereo do x86 com 127 endereos
Determinada a linha de espao
especfica IRQ No utiliza nenhum
Determinado o canal recurso do PC (I/O,
especfico DMA IRQ e DMA)
Acessado diretamente Acessado indiretamente
em um barramento utilizando a interface de
(ISA, PCI, PCMCIA, programao fornecida
serial, paralela ) por um driver
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 17
Enviando/Recebendo no PC
Apenas acesso de alto nvel
Quatro funes bsicas:
MPUSBOpen(VID, PID, Endpoint, Direction)
MPUSBRead(Pointer, Size, Timeout)
MPUSBWrite(Pointer, Size, Timeout)
MPUSBClose(Handle)

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 18
Enviando/Recebendo no
dispositivo
Apenas acesso de alto nvel
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 no precisa mais ler/escrever


diretamente nos SFRs do perifrico!

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.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 comunicao fsica


Caminho de comunicao lgica (Pipe)

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 20
O dispositivo lgico USB
Device
(Fabricante: Microchip Technology)
(Produto: Mouse)
(VID_PID: 04d8_0000)
Configurao
(Ativa)

Interface Analogico/Digital
(Mouse) I/O

USB Device-Specific Pipe(s) Endpoint 1 MCHPFSUSB


(HID) (Interrupt - IN) Funes HID TX/RX
Endpoint 1
(Interrupt - OUT)

Ambientes lgicos
so representados
Endpoint 0 pelo Device
USB System Software (Control - OUT) Descriptor Table,
(controle padro de pipes) Endpoint 0 armazenado em
(Control - IN) usbdsc.c
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 21
Interface fsica
VBUS VBUS ~ 5.0 V
D+ D+
~ 3.3 V
D- D-
GND GND

Half Duplex with codificao de dados NRZI


Excelente para rejeio de ruidos de modo comum
Transmisso de dados em apenas uma direo por vez
Barramento de energia para cada dispositivo:
4,40 5,25 V
Garantia de pelo menos 100 mA
Mximo 500 mA mediante a negociao
Se mais corrente necessria, dever ser utilizada alimentao
externa
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.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 perifricos
perifrico FS e HS perifrico FS e HS

Pinagem USB
Perifricos
Nmero do pino Funo
1 VCC LS, FS, HS
2
3
D-
D+
Com fio ou
4 GND customizado
destacvel

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 23
Agenda
Breve histria da USB e USB-IF
Fundamentos da USB Material srio e importante
Fundamentos/Velocidades
Arquitetura/Modelo de programao
Conexo Fsica
Transaes USB
Transferncias USB
Departamentos do dispositivo
Enumerao
Descritores
Planejamento de energia
VID/PID & USB Compliance
Microcontroladores PIC USB
Solues Microchip e LabTools: Demo/Ferramentas
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 24
Como fazer o host e o
device se comunicarem?
Transaes USB

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 25
Um Endpoint um Buffer

Data Bucket

Transao OUT RAM


Endpoint 1 OUT LED

Transao IN RAM
Endpoint 1 IN Caps-Lock

O nmero mximo de endpoints por device


especificado pela especificao USB:
16 OUT endpoints + 16 IN endpoints = 32 endpoints
PIC18F87J50, PIC18F4550 suporta at 32 endpoints
EP0 = Pipe padro de comunicao

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 26
Transao USB

USB Transaction

Sinal do pacote

SETUP e OUT: tipos de sinal


informa ao dispositivo alvo que Especifica:
o host quer enviar dados. Endereo do dispositivo alvo
Nmero do Endpoint
IN: tipos de sinal informa ao
Direo da transferncia de
dispositivo alvo que o host quer dados
ler dados.

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 27
Transao USB - IN

USB Transaction

Pacote do sinal IN

Pacote de dados

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 28
Transao USB - IN

USB Transaction

Pacote do sinal IN

Pacote de dados

Dados de Handshake

Resposta - ACK

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 29
IN Transao ACK
Trfego USB USB PIC MCU
USB Transaction

Dados de sinal IN
(para EP1 IN)
Serial RAM
SFR EP1 OUT BD
(UOWN, Length,
Endpoint 1 OUT
Pointer)
Interface SFR EP1 IN BD
Pacote de dados SIE Envia dados RAM
(UOWN, Length,
Engine Endpoint 1 IN
Pointer)

Pacote de

Atualiza BD
Caractere
digitado
Handshake putsUSBUSART( )

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 30
IN Transao NAK
Trfego USB USB PIC MCU
USB Transaction

Dados de sinal IN
(para EP1 IN)
Serial RAM
SFR EP1 OUT BD
(UOWN, Length,
Endpoint 1 OUT
Pointer)
Interface 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. COM3101 USB2.0 Slide 31
OUT/SETUP Transao ACK
Trfego USB USB PIC MCU
USB Transaction
Dados de sinal
OUT/SETUP
(para EP1 OUT) Serial
Interface RAM
SFR EP1 OUT BD
Pacote de dados SIE Deposita dados
Endpoint 1 OUT
(UOWN, Length,
Pointer)
Engine
SFR EP1 IN BD
RAM
Pacote de Endpoint 1 IN
(UOWN, Length,
Pointer)
SIE Envia ACK
Handshake

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 32
OUT/SETUP Transao NAK
Trfego USB USB PIC MCU
USB Transaction
Dados de sinal
OUT/SETUP
(para EP1 OUT) Serial
Interface RAM
SFR EP1 OUT BD
Pacote de dados Endpoint 1 OUT
(UOWN, Length,
Pointer)
Engine
SFR EP1 IN BD
RAM
Pacote de Endpoint 1 IN
(UOWN, Length,
Pointer)
SIE envia NAK
Handshake

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 33
Lembrete: Tipos de Sinal

SETUP

OUT

IN

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 34
Como fazer o host e o
device se comunicarem?
Transferncias USB

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 35
Transferncias Vs.
Transaes
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)
Transferncia
Legenda:
Transao 1
64 Byte Payload Pacote de sinal OUT

Pacote de
Transao 2 dados
64 Byte Payload Pacote Handshake ACK

Transao 3
Transfere: Grupo de
1 Byte Payload transaes relatadas.

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 36
Tipos de transferncia de dados
- USB de alta velocidade (full-speed) -
Transfernci Intervalo de % Reservada Max. # Data Integridade
a/tipo de Polling BW/Frame para Bytes/Frame/Endpoint dos dados
Endpoint todas as (Max# transaes por
tranferncias frame @ Max Ep Size)*
deste tipo
Interrupt Fixo, Peridico 90 64 (1 x 64) Sim

Isocrono Fixo, Peridico 90 1023 (1 x 1023) No

Bulk Varivel, usa 0 1216 (19 x 64) Sim


largura de banda
livre

Control Varivel 10 832 (13 x 64) Sim

* Tamanho mximo do pacote assumido de acordo com o tipo do Ep.


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 37
Exemplo de tranferncia de
interrupo
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)

Trfego de outros
Endpoints ou aguarda Transaes

64 64 1

Frame = 1ms

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 38
Exemplo de transferncia
Bulk
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)
As transaes
ocorrem somente se
no ocorrer alta
prioridade de trfego

Int. Isoc. Int. 64 64 Int. 1

Frame = 1 ms

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 39
Mxima transferncia terica
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 transferncia

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 40
Tipos de transferncias - Exemplos

Mouse Impressora Caixa acstica

Control Control Control


+ + +
Interrupt Bulk Isocrono

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 41
Chave: Tipos de
transferncia

Todos os dispositivos PIC18, PIC24


e PIC32
Control, Interrupt, Bulk, Isocrono

PIC16C7X5

Apenas control e Interrupt

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 42
USB Device Classes

Disco
Luva Flexvel
de Dados
Adaptador
Ethernet
Mouse
Disco
rgido
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. COM3101 USB2.0 Slide 43
Consideraes quando utilizar
Standard Classes
CDC (Virtual Com Port) Custom
Protocolo de Protocolo de
comunicao device comunicao
definida indefinida

O PIC parece com um Aplicao do PC fala


modem, ou terminal diretamente ao endpoint no
conectado porta serial PIC
A aplicao/PIC PC Host A aplicao/PIC do PC troca
troca a strings ASCII (exchange) raw bytes
(padro)
Pacotes de gerenciamento
so 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. COM3101 USB2.0 Slide 44
Example Usando CDC
Aplicao

Aplicao
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
Emulao ou PIC32
Aplicao API
Firmware Aplicao
Firmware

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 45
Agenda
Breve histria da USB e USB-IF
Fundamentos da USB Material srio e importante
Fundamentos/Velocidades
Arquitetura/Modelo de programao
Conexo Fsica
Transaes USB
Transferncias USB
Departamentos do dispositivo
Enumerao
Descritores
Planejamento de energia
VID/PID & USB Compliance
Microcontroladores PIC USB
Solues Microchip e LabTools: Demo/Ferramentas
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 46
Enumerao e a magia por trs do
Plug&Play (no Plug&Pray)
Auto-deteco e Auto-configurao

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 47
Auto-Deteco: Full-Speed
Dispositivo Perifrico

Microcontrolador USB
PIC18, PIC24 ou PIC32
VUSB 3.3 V
Identificao Full Speed
(pull-up na linha D+)
1.5 k5%

+5V

D+
Transceiver
D-

GND

Conector
USB

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 48
Auto-Deteco: Low-Speed
Dispositivo Perifrico

Microcontrolador USB
PIC18, PIC24 ou PIC32
VUSB 3.3 V
Identificao Low Speed
(pull-up na linha D-)
1.5 k5%

+5V

D+
Transceiver
D-

GND

Conector
USB

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 49
Resistores Pull-up On-chip
Dispositivo Perifrico

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. COM3101 USB2.0 Slide 50
Endpoint 0 e Enumerao
Veja o captulo 9 em USB 2.0 Spec para maiores
informaes.
Microcontrolador USB PIC18
Dual Port/Access RAM

Endpoint 0 OUT
(Dados de controle)
Transferncias e controle
Endpoint 0 IN
(Dados de controle) Descritores

Outros
Endpoints

Barramento Ajuste Obter os Ajuste e Dispositivo


Reset endereo Descritores Configurao Pronto

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 51
Descritores

String 0 Device
String 1
Para outras configuraes,
se houver possibilidade
String N Configurao 1
Para outras
interfaces, se
Interface 0 Interface 1 houver
possibilidade

Endpoint Endpoint Endpoint Endpoint

Descritores so tipicamente armazenados em memrias no


volteis/Flash
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 52
Descritores - Exemplo
USB 2.0, VID = 0x04D8,
Manu. String Dispositivo PID = 0x0007, Num. Configuraes,
Strings?
Microchip
Configurao #1: Barramento
Configurao 1 energizado, Wakeup remoto, 500mA,
Prod. String Num. Interfaces
PICDEM USB

Interface 0 Interface #0: HID Class, Num. Endpoints


Outra String

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. COM3101 USB2.0 Slide 53
Planejamento de energia
Corrente mxima de suspenso USB
0.5/2.5mA
No faa:
VDD
Power from
USB Cable 22F

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 54
Planejamento de energia
Corrente mxima de suspenso USB
0.5/2.5mA
Faa: Power from V
USB Cable DD

10F

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 55
Microcontrolador PIC: Detectando
uma conexo 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 conexo do cabo.

No 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. COM3101 USB2.0 Slide 56
VID & PID
Vendor ID (VID) nmero de 16 bits
Exigido para introduzir seu produto no mercado
http://www.usb.org/developers/vendor/
USD $2,000
Problemas tcnicos e legais se no utilizar um
VID aprovado
Produto ID (PID) nmero de 16 bits
Programa sub-licenciado da Microchip
obrigatrio toda linha de produo ter uma
nica combinao de VID e PID
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.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 eltrico


Gerenciamento de energia
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 58
Teste de flexibilidade
Para a flexibilidade USB: Testes independentes de laboratrio (ou
testes Labs independentes)
Para o device Controle de eqilbrio: 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 receptculo USB certificado e um cabo
Saiba o TID de seus componentes
Todos os microcontroladores PIC USB tm um nmero TID. Obtenha-o em
www.microchip.com/usb

Uma boa idia dar uma olhada na lista antes mesmo de iniciar o
seu projeto!

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 59
Agenda
Breve histria da USB e USB-IF
Fundamentos da USB Material srio e importante
Fundamentos/Velocidades
Arquitetura/Modelo de programao
Conexo Fsica
Transaes USB
Transferncias USB
Departamentos do dispositivo
Enumerao
Descritores
Planejamento de energia
VID/PID & USB Compliance
Microcontroladores PIC USB
Solues Microchip e LabTools: Demo/Ferramentas
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 60
PIC18 USB Flash Family
NEW NEW
PIC18F67J50 PIC18F87J50
2.0 Full-Speed 2.0 Full-Speed
NEW NEW
PIC18F66J55 PIC18F86J55
96 KB 2.0 Full-Speed 2.0 Full-Speed
NEW NEW
PIC18F26J50 PIC18F46J50 PIC18F66J50 PIC18F86J50
64 KB
2.0 Full-Speed 2.0 Full-Speed 2.0 Full-Speed 2.0 Full-Speed
NEW NEW
PIC18F25J50 PIC18F45J50 PIC18F65J50 PIC18F85J50
2.0 Full-Speed 2.0 Full-Speed 2.0 Full-Speed 2.0 Full-Speed
32 KB
PIC18F2550/3* PIC18F4550/3*
2.0 Full-Speed 2.0 Full-Speed

PIC18F2455/8* PIC18F4455/8* * Denotes 12-bit ADC NEW


24 KB
2.0 Full-Speed 2.0 Full-Speed

16 KB PIC18F14K50 PIC18F2450 PIC18F4450


2.0 Full-Speed 2.0 Full-Speed 2.0 Full-Speed

8 KB PIC18F13K50
2.0 Full-Speed

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


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 61
PIC24 / PIC32 USB Flash Family

512 KB PIC32MX440F512H PIC32MX460F512L


2.0 Full-Speed 2.0 Full-Speed

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

PIC24FJ192GB106 PIC24FJ192GB108 PIC24FJ192GB110


192 KB 2.0 Full-Speed 2.0 Full-Speed 2.0 Full-Speed

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

64 KB PIC24FJ64GB106 PIC24FJ64GB108 PIC24FJ64GB110


2.0 Full-Speed 2.0 Full-Speed 2.0 Full-Speed

32 KB PIC32MX420F032H
2.0 Full-Speed

64-Pin 80-Pin 100-Pin


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 62
Mdulo USB
Placa do dispositivo perifrico

PIC USB
Regulador 3.3 V

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

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 63
Serial Interface Engine

SIE ...
PIC 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
Memria
pacote de dados do
USB RAM
Detecta sinalizao de Programa
barramento e notifica a CPU SIE Control
para interrupos Registers
Gerencia transaes USB

Gerencia handshaking

protocol
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 64
Agenda
Breve histria da USB e USB-IF
Fundamentos da USB Material srio e importante
Fundamentos/Velocidades
Arquitetura/Modelo de programao
Conexo Fsica
Transaes USB
Transferncias USB
Departamentos do dispositivo
Enumerao
Descritores
Planejamento de energia
VID/PID & USB Compliance
Microcontroladores PIC USB
Solues Microchip e LabTools: Demo/Ferramentas
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 68
USB de alta velocidade
McLab2 c/ USB
PIC18F4550, 20MHz xtal
Porta USB
Porta serial
Placa USB no conector de expanso

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 69
Explorer16BR com plugin
PIC24FJ256GB110
PIC24FJ256GB110, 8MHz xtal
PictailProto com USB

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 70
Caractersticas do Firmware da
USB Microchip
Compatvel com o C18, C30 e C32
Projeto central MPLAB IDE
Polling Scheme
Multi-Tasking cooperativo (sem rotinas de
bloqueio)
Uso da memria do programa
Enumerao USB (captulo 9) - 3 KB
HID - 1 KB
CDC (Emulao RS-232) - 1 KB
USB Mass Storage - 4 KB

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 71
Sumrio Parte 1
Fundamentos/Arquitetura
At 126 dispositivos compartilhando largura de
banda
Host o mestre
Comunicao do Host/Device
Transaes
Transferncias
Enumerao/Captulo 9
Descritores
A Microchip e LabTools oferecem:
microcontroladores, placas demo,
Firmware, Driver adaptado
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 72
Parte 2:
Introduo s solues do firmware
MCHPFSUSB da Microchip e
Hands-on com CDC Class e
substituies APIs RS-232

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 73
Objetivos
Introduo ao sistema de firmware
MCHPFSUSB USB da Microchip
Introduo classe do dispositivo
CDC
Adquir experincia prtica
utilizando o firmware do dipositivo
USB da Microchip
Classe CDC: Emulao RS-232 API
(AN956)
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 74
Agenda
Verificao do conhecimento USB:
Classes dos dispositivos e solues da classe
do dispositivo USB da Microchip
Exerccio 2.1
Brincar com o driver de uso geral (demo)
Introduo especificao da classe CDC do
dispositivo USB
Usando o Firmware da classe CDC Microchip:
API Emulao do RS-232
Exerccios 2.2.1 2.2.5
APIs de emulao do RS-232

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 75
Verificao do conhecimento
USB
Mximo de nmeros que os
dispositivos USB podem suportar?
Nmero de pinos no conector USB?
Qual o mximo baud rate USB FS?
Qual a direo da entrada de
dados?
Quais so os tipos de transferncia
de dados USB?
O que enumerao USB?
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 76
Device Classes &
soluo de firmware
Microchip USB Device Class

V1.10 Feb 28, 2008


2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB
COM3101v1.0
USB2.0 Slide 77
MCHPFSUSB Device Side
Class Frameworks Disponvel
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. COM3101 USB2.0 Slide 78
Criando e usando classe
de dispositivo
PIC18F4550

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

EP1
Device Aplicao
Interrupt, Bulk, ... Class do usurio
Isocrono
(OUT, IN)
EP15

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 79
Human Interface Device
(HID)
Microcontrolador PIC Computador PC

HID\Mouse Drivers do Windows padro HID App

Cabo USB

Consideraes do projeto:
Mximo de 64 KB/s
Transferncia de dados tipo interrupo
Driver padro do Windows
Aplicao do PC adaptado pode acessar dados
HID atravs de APIs win32

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 80
CDC Emulao RS-232

Microcontrolador PIC Computador PC

CDC Drivers do Windows padro Hyper Terminal

Cabo USB INF File Required


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

Consideraes do projeto:
Mximo de ~80 KB/s
Transferncia Bulk
Aplicaes PC podem acessar o dispositivo como
se ele estivesse conectado porta serial COM
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 81
Custom Class Driver
Computador PC
Cdigo
Microcontrolador PIC fonte e
binrio
Somente binrio
Boot
MCHPUSB.sys MPUSBAPI.dll PDFSUSB.exe
Demo
Outros
Cabo USB Binary
exemplosOnly
C++
INF File Required Cdigo
(C:\Microchip Solutions\
USB Tools\MCHPUSB Custom Driver\ fonte e
MCHPUSB Driver\Release) binrio

Consideraes do projeto:
Mximo de ~1,088 KB/s
Muito flexvel (possibilidade de usar transferncia
Control, Bulk ou Isocrono)
No um driver padro Windows
Programao do PC requerida
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 82
Mass Storage Device (MSD)
Veja AN1003: USB Mass Storage
Microcontrolador PIC Computador PC
Windows
MSD Drivers do Windows padro
Explorer

Cabo USB

Consideraes do projeto:
Atua como um drive externo
Rpida transferncia de dados na USB
Velocidade limitado, depende apenas da mdia
fsica utilizada
Para maior proveito, um Sistema de Arquivo
tambm pode ser implementado no firmware
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 83
Download do Microchip USB
Framework

390_USB
incorpora v2.4
do Microchip
USB
Framework

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 84
Exerccio 2.1
- Objetivos -
Acompanhar o instrutor
Familiar-se com o ambiente de
desenvolvimento
Ns no escreveremos nenhum cdigo
Apenas complie, programe a memria
Flash e treine com a demonstrao
padro

Exerccio 2.1: Driver de uso geral (demo)


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 85
Viso geral da
especificao
USB CDC Device Class

V1.10 Feb 28, 2008


2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB
COM3101v1.0
USB2.0 Slide 86
Aplicao 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
Aplicao do Emulao
Firmware Aplicao do
Firmware

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 87
A Communications Device
Class (CDC)
Encompasses a variety of devices
POTs (Plain Old Telephone Service)
Telefone e modems analgicos, 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,
especfico para cada aplicao, como
V25ter para modens (comandos AT)
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 88
Abstract Control Model (ACM)
Serial Emulation
Implementao de coberturas ACM de portas
COM virtuais
So obrigatrias 2 interfaces USB
Communications Class Interface
1 - Int IN Ep
Usado para notificar o host do status da conexo 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
Tambm usado para enviar comandos de controle
encapsulado (Comandos AT)

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 89
O dispositivo USB CDC-ACM
Lgico
Device
(Manufacturer: Microchip Technology)
(Product: CDC RS-232 Emulation Demo)
(VID_PID: 04d8_000a)

Configuration#1
(Active)

Interface#0 Interface#1
(Communications (Data Class Interface)
Class Interface)
Analgico/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. COM3101 USB2.0 Slide 90
Projeto CDC
-Solicitao da Classe especfica ACM -
Sumrio da solicitao da classe especfica e
notificaes implementadas (veja 6.2 e 6.3 na
especificao para descrio 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
disponvel
Voc no precisa preocupar-se com o comportamento
dessas respostas
Apenas envia/recebe seus dados atravs das funo API
RS-232 CDC
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 91
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. COM3101 USB2.0 Slide 92
Projeto CDC
- Configurao do Clock -
Placa do dispositivo perifrico

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. COM3101 USB2.0 Slide 93
Usando a API Microchip
CDC Class RS-232
Emulation (Exerccio 2.2)

V1.10 Feb 28, 2008


2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB
COM3101v1.0
USB2.0 Slide 94
Rodando o cdigo CDC padro
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
No faa mais nada ainda

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 95
Rodando o cdigo CDC padro
Pressione F10 para compilar o projeto
Selecione Programmer > Select Programmer >
MPLAB ICD2
Selecione Programmer > Program para
transferir o cdigo ao microcontrolador
Selecione Programmer > None para
desabilitar o ICD2BR
Desconecte o cabo RJ12 da Explorer 16BR
Desconecte o cabo USB do ICD2BR
No conecte ainda o cabo USB na Explorer
16BR

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 96
Gerenciador de dispositivo
Abra o Gerenciador de dispositivo (Iniciar > Painel de
controle > Sistema > Orelha Harware e clique no boto
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. COM3101 USB2.0 Slide 97
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 nmero
da nova porta COM

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 98
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. COM3101 USB2.0 Slide 99
HyperTerminal: Configurao

Selecione a nova porta


COM que foi adicionada
durante a instalao do
drive USB e clique OK
(Arquivo > Propriedades
> Orelha Conectar-se,
Campo Conectar-se
usando:)

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 100
HyperTerminal: Conectar
Conecte placa

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 101
HyperTerminal: Primeiro uso
Agora, pressione o boto S2 na placa demo,
voc dever ver a mensagem abaixo

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 102
HyperTerminal: Nota importante

Antes de desconectar fisicamente um


dispositivo USB, voc deve desligar a conexo
primeiro, pois de outra maneira o programa
dever ser fechado e aberto novamente na
prxima vez que um dispositivo USB estiver
conectado.

Vamos dar uma olhada nas aplicaes


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 103
Aplicaes 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. COM3101 USB2.0 Slide 104
Determinantes da API
Voc vai enviar strings ASCII ou
bytes com a aplicao host?

O dado armazenado na ROM ou


RAM?

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 105
Aplicao para dados ROM
e Literal no-terminados
void putrsUSBUSART(const rom char *data);

void putsUSBUSART(char *data);

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


Use putrs para strings armazenados em
void mUSBUSARTTxRam(byte
ROM *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. COM3101 USB2.0 Slide 106
Importncia 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. COM3101 USB2.0 Slide 107
Fluxo do programa

Reset main InitializeSystem

MainLoop
main.c
Multitasking USBDriverService();
Cooperativo!!! CDCTxService();
USBTasks()
Sem funes
de bloqueio.
ProcessIO() main.c ou
Use mquina outro arquivo
de estado. Exercise_01();
Exercise_02();

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 108
Multitasking cooperativas
Main Loop
Mquina 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. COM3101 USB2.0 Slide 109
Exerccio 2.2.1
- Enviando strings -
Encontre a funo Exercise_01() em main_user.c
Escreva o cdigo nesta funo que envia uma string (Hello
World!\r\n) ao PC quando a tecla 2 pressionada
D uma olhada nos exemplos em Exercise_Example();
Funes teis:
BOOL Switch2IsPressed(void);
Retorna 1 se tecla 2 pressionada
Retorna 0 se tecla 2 liberada
BOOL mUSBUSARTIsTxTrfReady(void)
Use: putrsUSBUSART()
Fim do exerccio 2.2.1
Cdigo soluo:
C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -
Firmware\user\solutions\Exercise1.txt

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 110
Exercise 2.2.2
- Sending ROM Data -
Encontre a funo Exercise_02() em main_user.c
Escreva o cdigo nesta funo que envia uma string
apontada em um vetor na memria de programa
ex02_string ao PC quando a tecla 3 pressionada.

Funes teis:
BOOL Switch3IsPressed(void);
BOOL mUSBUSARTIsTxTrfReady(void)
Use: putrsUSBUSART()
Fim do exerccio 2.2.2

Cdigo soluo:
C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -
Firmware\user\solutions\Exercise2.txt

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 111
API para receber dados
void putrsUSBUSART(const rom char *data);
len = nmero de bytes esperados
buffer = buffer em RAM, onde a string
void putsUSBUSART(char *data);
ser armazenada

getsUSBUSART retorna o nmero 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. COM3101 USB2.0 Slide 112
Exerccio 2.2.3
- Recebendo dados -
Encontre a funo Exercise_03() em main_user.c
Escreva o cdigo nesta funo que l dados do barramento
USB e trocar o estado do LED4 quando o dado recebido for
o caractere 1 (0x31)

Funes e variveis teis:


input_buffer[];
mLED_4_Toggle();
Use: getsUSBUSART()
Fim do exerccio 2.2.3

Cdigo soluo:
C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -
Firmware\user\solutions\Exercise3.txt

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 113
APIs para uma string com
tamanho definido
void putrsUSBUSART(const rom char *data);
Use mUSBUSARTTxRom para dados
armazenados na memria do Mximo 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 memria de dados
byte mCDCGetRxLength(void); (RAM)

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 114
Exerccio 2.2.4
- Enviando dados no-terminados -
Antes de comear, comente primeiro a chamada de Exercise_01() em
ProcessIO()
Encontre a funo Exercise_04() em main_user.c
Escreva o cdigo nesta funo para enviar 4 bytes de dados
consecutivos: 0x30,0x31,0x32,0x33 quando a tecla 2 pressionada
Funes e variveis teis:
Switch2IsPressed();
BOOL mUSBUSARTIsTxTrfReady(void)
output_buffer[];
Use: mUSBUSARTTxRam()
Fim do exerccio 2.2.4
Cdigo soluo:
C:\Microchip Solutions\USB Device - CDC - Basic Demo\CDC -
Basic Demo - Firmware\user\solutions\Exercise4.txt

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 115
API para dados RAM no-
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. COM3101 USB2.0 Slide 116
Exerccio 2.2.5
- Dados da temperatura -
Encontre a funo 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 instrues em Exercise_05()

Use mUSBUSARTIsTxTrfReady()
Use putsUSBUSART(...)

Fim do exerccio 2.2.5


Cdigo soluo:
C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -
Firmware\user\solutions\Exercise5.txt

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 117
O que h de errado com esse
cdigo?
void Exercise_XX(void)
{
putrsUSBUSART(Hello World!);
}

No foi verificado se o TX est pronto:


if(mUSBUSARTIsTxTrfReady())

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 118
O que h de errado com esse
cdigo?
void Exercise_XX(void) Rsposta:
Funo de bloqueio!
{
No 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


mquina de estado!

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 119
Analise do execcio
Velocidade
640 Kbits/s = 80 Kbytes/s
Mais rpido que o RS-232 (UART)
Esta soluo no possvel com um dispositivo
USB de baixa velocidade porque ele no tem
endpoint bulk
Sem handshakes do hardware
Memria do programa usada:~ 4 KB
Nota de aplicao
AN956: Migrating Applications to USB from RS-232 UART with
Minimal Impact on PC Software
O que fazer se eu precisar de uma velocidade
transferncia de memria mais rpida?
Considere-se usando nosso drivers do windows classe adaptada e
sistemas de dispositivos

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 120
Parte 3:
Custom Class PC Host Drivers and
Device Framework

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 121
Objetivos
Reviso do Windows e os drivers da
classe adaptada disponveis

Reviso MPUSBAPI.DLL &


mchpusb.sys

Reviso do MCHPFSUSB custom class


device framework

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 122
Agenda
Fundamentos do Windows
Arquitetura do Windows
.NET
Desenvolvimento da aplicao Windows com visual
C++ 2005 Express
Escolhas do driver da USB para transferncias
genricas
Microchip Custom Class USB Driver
MPUSBAPI.DLL e mchpusb.sys
Arquivos .inf
Microchip Custom Class Device
Framework
Sumrio
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 123
Fundamentos
Windows

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 124
Sistema operacional Windows XP

Baseado no Windows NT/OS2


Projetado por David Cutler (Programador de DECs VMS OS)
Funo
Para administrar o hardware e fornecer um ambiente no qual um
usurio pode executar programas de uma maneira conveniente e
eficiente
Caractersticas essenciais
Memria: grande, flat, espao do endereo da memria virtual
Sistemas de arquivos, terminal, e outros I/O
Multitasking: processos e threads
Comunicao e sincronizao
Usurio nico e possibidade de trabalhar em rede
Segurana
Arquitetura Windows

MPUSBRead( ) MPUSBWrite( )

DLLs do usurio, sub-sistema do ambiente Win32,


Bibliotecas do sistema (NTDLL.DLL)
NTReadFile( ), NTWriteFile( ) USURIO
KERNEL

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

I/O Request Packet(s) (IRP)

Hardware
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 126
Sistema .NET

Cdigo
gerenciado

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

Cdigo no MPUSBRead( ) MPUSBWrite( )


gerenciado

DLLs do usurio, sub-sistema do ambiente Win32,


Bibliotecas do sistema (NTDLL.DLL)
NTReadFile( ), NTWriteFile( ) USURIO
KERNEL
Kernel

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 127
Desenvolvimento das aplicaes do
Windows com visual C++ 2005 Express
Com a edio do visual C++ 2005 Express voc
tem duas maneiras bsicas de criar uma
aplicao interativa, grfica:
Usando o Windows API (Win32 USER Functions)
A programao mais intensiva
Usando o Windows Forms (Sistema .NET)
A programao menos intensiva

Visual C++ 2005 Express Edition tambm lhe


permite criar dois tipos de terminais de
aplicao (ou aplicaes do terminal) (Win32 e
CLR (.NET))
Ns estaremos desenvolvendo uma aplicao terminal
Win32 ANSI-C

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 128
Transferncia dos dados
genricos
Escolha do driver USB

V1.10 Feb 28, 2008


2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB
COM3101v1.0
USB2.0 Slide 129
mchpusb.sys vs. HID vs. CDC
Caracterstica 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. COM3101 USB2.0 Slide 130
Outros drivers Custom Class
LibUSB
Open Source
Suporta Windows e Linux
Suporta transferncias de interrupo, de bulk
e de iscrono
http://libusb-win32.sourceforge.net/
WinUSB
Suportado apenas pelo Windows XP e Vista
Suporta interrupo e Bulk
http://msdn2.microsoft.com/en-
us/library/aa476426.aspx

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 131
Microchip Custom Class
Windows
USB Device Driver

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 132
MPUSBAPI
- Introduo -
Cdigo do invlucro (ou envelope) para
sistema de API Win32 chama funes (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 Bsic .NET e mais
Transferncia de dados fcil e flexvel
Suporta transferncias de Bulk, interrupo,
control e iscrono
Interface funcional simplifica o
desenvolvimento da aplicao
Gratuito
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 133
Microchip General Purpose
USB Device Driver
mchpusb.inf Esse arquivo
contm a informao 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. COM3101 USB2.0 Slide 134
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 VID e PID
Especifica strings da identificao do
dispositivo
Especifica cdigo de origem e destino de
arquivos dos dispositivos
Seta chaves de registro

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 135
Modificaes do arquivo .inf
Sees modificveis 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. COM3101 USB2.0 Slide 136
As funes
MPUSBAPI.DLL

V1.10 Feb 28, 2008


2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB
COM3101v1.0
USB2.0 Slide 137
Funes em MPUSBAPI.DLL

Funes MPUSBAPI

MPUSBGetDeviceCount(..)

MPUSBOpen(..) VID & PID


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

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 138
Sumrio - Funo DLL e uso
do tipo de transferncia
Transferncia/ Funes Time-Out
Tipo de Aplicvel?
Endpoint
Interrupt-IN MPUSBRead, Sim
MPUSBReadInt
Interrupt-OUT MPUSBWrite Sim

Bulk-IN MPUSBRead Sim

Bulk-OUT MPUSBWrite Sim

Isochronous-IN MPUSBRead No

Isochronous-OUT MPUSBWrite No

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 139
Custom Class Device
Framework

V1.10 Feb 28, 2008


2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB
COM3101v1.0
USB2.0 Slide 140
Custom Class Firmware API
- Veja usbgen.c e usbgen.h -
void USBGenInitEP(void);
Chamado depois de um pedido SET CONFIGURATION
Inicializa endpoints, mquina de estado e vriaveis
void USBGenWrite(byte *buffer, byte len);
Copia dados do buffer de usurio para o buffer Ep
byte USBGenRead(byte *buffer, byte len);
Copia dados do buffer Ep para o buffer do usurio
(bit) mUSBGenRxIsBusy(void);
Macro verifica se o Ep OUT est ocupado (pertencente ao SIE ou
no)
(bit) mUSBGenTxIsBusy(void);
Macro verifica se Ep IN est ocupado (pertencente ao SIE ou no)
byte mUSBGenGetRxLength(void);
Devolve o nmero de bytes copiado no registro do theuser depois da
mais nova chamada para USBGenRead()
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 141
Estrutura do Firmware
Custom Class (Demo)
Modelo simultneo Inicializa

Aceita comandos do
host USB Tasks()

Retorna resultados
Processo IO()
Espera pelo prximo
comando
ServiceRequests()

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 142
Inicializando os perifricos PIC
Em main.c, a funo foi definida por voc para o
cdigo de inicializao perifrica da aplicao
especfica:

void UserInit(void)
{
mInitAllLEDs(); //macros defined in hardwareporfile.h

mInitPOT();

}//end UserInit

UserInit() chamado em main()durante a


inicializao do sistema.

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 143
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, // nmero de liberao do Spec USB no formato BCD
0x00, // cdigo da classe
0x00, // cdigo da sub-classe
0x00, // cdigo do protocolo
EP0_BUFF_SIZE, // tamanho do pacote mximo para EP0, veja usbcfg.h
0x04D8, // fornecedor ID (ou ID do fornecedor)
0x000C, // ID do produto:PICDEM FS USB (modo DEMO)
0x0000, // nmero de reviso do device no formato BCD
0x01, // indicador da string do fabricante
0x02, // indicador da string do produto
0x00, // indicador da string do nmero serial do disp.
0x01 // nmero de configuraes possveis
};

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 144
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. COM3101 USB2.0 Slide 145
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. COM3101 USB2.0 Slide 146
Sumrio Parte 3
Drivers embutidos no Windows para mais
dispositivos USB
Um Custom Class Device precisa de um
driver do dispositivo de um fornecedor
especfico
O arquivo mchpusb.sys um driver do
dispositivo de um fornecedor especfico
/MCHPFSUSB/fw/demo contm o custom
class device framework
Arquivos .inf
MPUSBAPI.DLL simplifica suas atividades
de desenvolvimento
2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 147
Sumrio do RTC

V1.10 Feb 28, 2008


2007
2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB
COM3101v1.0
USB2.0 Slide 148
Sumrio
Hoje, ns
Vimos os fundamentos da USB e como
isso poderia ser usado um uma
apliacao 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. COM3101 USB2.0 Slide 149
Referncias

Cdigo fonte MPUSBAPI.DLL


(arquivo _mpusbapi.cpp)
MCHPFSUSB Firmware Users 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. COM3101 USB2.0 Slide 150
Outras fontes
Microchip USB Design Center: Firmware,
Custom Driver, App. Notes, other USB specific
resources
http://www.microchip.com/usb
Especificaes USB 2.0 e Device Class
http://www.usb.org
Frum de discusso 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. COM3101 USB2.0 Slide 151
Obrigado!

V2.0 Mar 7, 2008


2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 153
Trademarks
O nome e logotipo Microchip, Accuron, dsPIC, KeeLoq, KeeLoq logo, microID,
MPLAB, PIC, PICmicro, PICSTART, PRO MATE, rfPIC and SmartShunt so
marca registrada da Tecnologia Microchip incorporada nos E.U.A. e em outros
pases.
AmpLab, FilterLab, termistor linear ativo, memria migratria, MXDEV, MXLAB,
SEEVAL, sensor inteligente e solues de controle embarcadas so 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
so marca registrada da Tecnologia Microchip incorporada nos E.U.A. e em
outros pases.
SQTP um servio da marca da Tecnologia Microchip incorporada nos E.U.A.
todas as outras marcas registradas mencionadas so propriedade de suas
respectivas Companhias.

2008 Microchip Technology Incorporated. All Rights Reserved. COM3101 USB2.0 Slide 154