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
Análise de dados,
Data Logging,
Atualização de Firmware,
Diagnósticos,
Aplicações Embarcadas!
© 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
© 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
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
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)
© 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
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 14
Topologia do Barramento Físico
Controlador
USB host
© 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
© 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
Layer
USB Device Bus Interface
2-Default
Layer
Layer
USB Adapter/Controller Cable Bus Interface
© 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
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
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 IN RAM
Endpoint 1 IN “Caps-Lock”
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 26
Transação USB
USB Transaction
Sinal do pacote
© 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
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
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
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 41
Chave: Tipos de
transferência
PIC16C7X5
© 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
© 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
Hardware UART
Hardware USB
© 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
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
© 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
© 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
© 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/
− 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
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
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
© 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
PICkit 2
Mass Storage Device Modem
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
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
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
HyperTerminal
Driver UART
Driver UART
Driver CDC
Hardware UART
Hardware UART
Hardware UART
Hardware UART
© 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
© 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
© 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)
© 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
© 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
© 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
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?
© 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);
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 106
Fluxo do programa
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
© 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
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)
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);
© 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);
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.
Use mUSBUSARTIsTxTrfReady()
Use putsUSBUSART(...)
© 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!”);
}
© 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.
© 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
© 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
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
© 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
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 127
Transferência dos dados
genéricos
Escolha do driver USB
Transfer Types
(not incl. Ep0)
Control Yes Yes No
Iso Yes No No
© 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
Funções MPUSBAPI
MPUSBGetDeviceCount(..)
© 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
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 138
Custom Class Device
Framework
Aceita comandos do
host USB Tasks()
© 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
© 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
© 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};
© 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
© 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