Post on 18-Nov-2014
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 1
390_USBUSB device
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 2
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 eLabTools 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 3
Agenda
Parte 1:− Introdução ao Full-Speed USB
Parte 2:− Introdução à solução Microchip
MCHPFSUSB Firmware e Hand’s-oncom 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 4
Parte 1:Introdução ao
Full-Speed USB
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 5
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 6
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 7
Informações geraisUm pouco de história…
Por que USB? Dificuldades de interfacear um periférico Adição de placas nos PCs
− Configuração de Interrupções (IRQ)− Configuração de Jumpers− Processo necessário sempre que um hardware era inserido ou removido
Propósito: Interface de comunicação entre dispositivos embarcados e o PC
USB-IF (Fórum de implementadores) Especificações USB
− co-desenvolvidas por um grupo de 4 empresas: Compaq, Intel, Microsoft, NEC
1998− versão 1.1 da especificação denominada USB 1.1.
2000− mais 3 empresas se juntam para formar a especificação USB 2.0.
Hewlett-Packard, Lucent, Philips
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 8
USB (Universal Serial Bus)
Estenda a funcionacilidade do seu PC!
Análise de dados,Data Logging,Atualização de Firmware,Diagnósticos,Aplicações Embarcadas!
• Auto detecção e configuração (Plug&Play)• Fácil expansão usando hubs• Bus power• Proteção de dados via CRC• Três velocidades:
Low- 1,5Mbps, Full 12Mbps e High- 480 Mbps
SerialParalela
PS/2
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 9
Informações geraisProdutos & 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
Barramento de 4 fios− Barramento de alimentação− Barramento diferencial com CRC através de SIE
Topologia “Tiered Star”− Até 127 dispositivos no barramento, análogo ao Ethernet T-10
SerialParalela
PS/2
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 10
Conceito de USB USB é um “Single Master + Multiple Slaves”
Mouse Caixa acústicaImpressora
USB Host Controller (Mestre) e Root Hub
SOF
1 ms 1 ms 1 ms
SOF SOFInt
EP1IsoEP1
BulkEP2
IntEP1
IntEP1
BulkEP2
Início do Frame
IsoEP1
IsoEP1
IsoEP1
IsoEP1
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 11
Barramentos e comparaçãode velocidades
1394-Fire Wire
11 GbGb480 Mb/s480 Mb/s100 Mb/s100 Mb/s12 Mb/s12 Mb/s1.5 Mb/s1.5 Mb/s1 Mb/s1 Mb/s500 Kb/s500 Kb/s
Ethernet
Porta Serial
LS-USB1.5 Mb/s
FS-USB12 Mb/s
HS-USB480 Mb/s
USB 1.1
USB 2.0
Porta Paralela
WiFi (b/g)
CAN
Não precisa serHigh-Speed para ser USB 2.0
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 12
Maiores Mitos
Mito: Um periférico USB Low-Speed pode transferir dadosaté 187,5 kbps (1,5 Mbps)
Fato: Impossível, devido a restrições na especificação USB:
− Transferência de 8 bytes de dados a cada 10ms
− (800 bytes/segundo)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 13
Maiores Mitos
Mito: Um periférico USB Full-Speed pode transferir dadosaté 12 Mbps
Fato: É impossível transferir dados nessa velocidade pois12 Mbps é a largura total de banda completa dobarramento. A taxa de transferência real para um único periférico é de aproximadamente 8 Mbps. Em alguns casos,apenas 0,5 Mbps;− A largura de banda deve ser compartilhada entre
todos os periféricos USB− As características do protocolo o sujeitam a
“overhead”− Restrições de protocolo− Existem restrições no protocolo
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 14
Informações geraisItens Microchip disponíveis
PIC16C7X5 - Low Speed USB 1.1 (device) - NÃO RECOMENDADO PARA NOVAS APLICAÇÕES!!!
PIC18FXX5X, PIC18FXXK5X e PIC18FXXJ5X - Full e Low Speed USB 2.0 (device)
PIC24FJXXXGBXXX - Full e Low Speed USB 2.0 (device, embedded host e OTG)
PIC32MX4XXFXXX - Full Speed USB 2.0 e Low Speed USB 2.0 (device,embedded host e OTG)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 15
• Até 127 dispositivos na rede
• Os Hubs e o Hosttambém contam
• Host tem ID 0
• Até 16 “endpoints” por dispositivo
Os componentes PIC18 USB foram desenhados para serem periféricos!
Maior Cadeia dehubs possível: 5
Topologia do Barramento Físico
Controlador USB host
HubHub
HubHub
HubHub
HubHub
HubHub
HubHub
Altofalante
Data Logger
Analisador Lógico
Teclado
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 16
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
DispositivoLógico
DispositivoLógico
DispositivoLógico
DispositivoLógico Dispositivo
Lógico
DispositivoLógico
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 17
Acessando os periféricosdo PC
Modo antigo Periféricos do PC:
Memória mapeada nobarramento deendereço do x86
Determinada a linha específica IRQ
Determinado o canalespecífico DMA
Acessado diretamente em um barramento(ISA, PCI, PCMCIA, serial, paralela …)
Modo USB Periféricos do PC:
Mapeado em umbarramento virtual com 127 endereçosde espaço
Não utiliza nenhum recurso do PC (I/O, IRQ e DMA)
Acessado indiretamenteutilizando a interface deprogramação fornecida por um driver
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 18
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 19
Enviando/Recebendo nodispositivo
Apenas acesso de alto nível Exemplo: CDC Class RS-232
void putrsUSBUSART(const rom char *data);
void putsUSBUSART(char *data);
void mUSBUSARTTxRom(rom byte *pData, BYTE len);
void mUSBUSARTTxRam(BYTE *pData, BYTE len);
byte getsUSBUSART(char *buffer, BYTE len);
byte mCDCGetRxLength(void);
Você não precisa mais ler/escrever diretamente nos SFRs do periférico!
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 20
Host System
USB Adapter/Controller
User Code
Non USB Format
USB Device Driver
Non USB Format
USB System Software
USB Data Frames
Bus Interface
Layer
Peripheral Device
Bus Interface
Device Specific Comm
Logical Device
USB Data Frames
Bus Interface
Layer
2-DefaultControl Pipes (Ep0_OUT/IN)
N - Driver Specific
Pipes (Ep1..)
Caminho de comunicação físicaCaminho de comunicação lógica (“Pipe”)
USB Device Framework- Software visto pelo Hardware -
Cable
Physical Device
USB Device
Layer
Function Layer
USB Device
Layer
Function Layer
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 21
O dispositivo “lógico” USBDevice((((FabricanteFabricanteFabricanteFabricante: Microchip Technology): Microchip Technology): Microchip Technology): Microchip Technology)((((ProdutoProdutoProdutoProduto: Mouse): Mouse): Mouse): Mouse)(VID_PID: 04d8_0000)(VID_PID: 04d8_0000)(VID_PID: 04d8_0000)(VID_PID: 04d8_0000)
Configuração((((AtivaAtivaAtivaAtiva))))
Interface(Mouse)(Mouse)(Mouse)(Mouse)
Endpoint 0(Control (Control (Control (Control ---- OUT)OUT)OUT)OUT)USB System Software
(controle padrão de pipes)
USB Device-Specific Pipe(s) (HID)
MCHPFSUSB
Funções HID TX/RX
Analogico/Digital I/O
Endpoint 0(Control (Control (Control (Control ---- IN)IN)IN)IN)
Endpoint 1(Interrupt (Interrupt (Interrupt (Interrupt ---- IN)IN)IN)IN)
Endpoint 1(Interrupt (Interrupt (Interrupt (Interrupt ---- OUT)OUT)OUT)OUT)
Ambientes lógicos são representados pelo Device Descriptor Table,armazenado em“usbdsc.c”
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 22
Interface física
Half Duplex with codificação de dados NRZI Excelente para rejeição de ruidos de modo comum Transmissão de dados em apenas uma direção por vez
Barramento de energia para cada dispositivo: 4,40 – 5,25 V Garantia de pelo menos 100 mA Máximo 500 mA mediante a negociação Se mais corrente é necessária, deverá ser utilizada alimentação
externa
~ 5.0 V
~ 3.3 V
VBUS
D+
D-
GND
VBUS
D+
D-
GND
~ 5.0 V
~ 3.3 V
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 23
Pinagem USB
Plug “mini-B”Utilizado em
periférico FS e HS
Plug “B”Utilizado em
periférico FS e HS
Conectores USB (ver!!!)Plugs “A” utilizadosno Host USB
PeriféricosLS, FS, HSCom fio ou
customizadodestacável
Plug “micro-B”Utilizado em periféricos
••
••
Número do pino Função1 VCC2 D-3 D+4 GND
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 24
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 25
Como fazer o host e o device se comunicarem?
Transações USB
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 26
Um Endpoint é um Buffer
RAMEndpoint 1 OUT
RAMEndpoint 1 IN
Data Bucket
LED
“Caps-Lock”
O número máximo de endpoints por deviceespecificado pela especificação USB:− 16 OUT endpoints + 16 IN endpoints = 32 endpoints− PIC18F87J50, PIC18F4550 suporta até 32 endpoints
EP0 = Pipe padrão de comunicação
Transação IN
Transação OUT
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 27
Transação USB
Sinal do pacote
USB Transaction
Especifica:• Endereço do dispositivo alvo• Número do Endpoint• Direção da transferência de
dados
SETUP e OUT: tipos de sinal informa ao dispositivo alvo queo host quer enviar dados.IN: tipos de sinal informa ao dispositivo alvo que o host quer ler dados.
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 28
Transação USB - IN
Pacote do sinal IN
USB Transaction
Pacote de dados
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 29
Transação USB - IN
Pacote do sinal IN
USB Transaction
Pacote de dados
Dados de Handshake
Resposta - ACK
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 30
IN Transação ACK
Dados de sinal IN(para EP1 IN)
USB Transaction
Pacote de dados
Pacote de Handshake
RAMEndpoint 1 OUT
RAMEndpoint 1 IN
SFR EP1 OUT BD(UOWN, Length,
Pointer)
SFR EP1 IN BD(UOWN, Length,
Pointer)
Atu
alizaB
D
Serial
Interface
Engine
Tráfego USB USB PIC® MCU
Caractere d
igitad
o
If UOWN = 1
Sets UOWN = 0
SIE Envia dados
putsUSBUSART( )
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 31
IN Transação NAK
Dados de sinal IN(para EP1 IN)
USB Transaction
RAMEndpoint 1 OUT
RAMEndpoint 1 IN
SFR EP1 OUT BD(UOWN, Length,
Pointer)
SFR EP1 IN BD(UOWN, Length,
Pointer)
Serial
Interface
Engine
Tráfego USB USB PIC® MCU
If UOWN = 0
SIE Sends NAKPacote de Handshake
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 32
OUT/SETUP Transação ACK
Dados de sinalOUT/SETUP
(para EP1 OUT)
USB Transaction
RAMEndpoint 1 OUT
RAMEndpoint 1 IN
SFR EP1 OUT BD(UOWN, Length,
Pointer)
SFR EP1 IN BD(UOWN, Length,
Pointer)
Serial
Interface
Engine
Tráfego USB USB PIC® MCU
If UOWN = 1
Sets Length, UOWN = 0Pacote de dados
Pacote de Handshake
SIE Envia ACK
SIE Deposita dados
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 33
OUT/SETUP Transação NAK
Dados de sinalOUT/SETUP
(para EP1 OUT)
USB Transaction
RAMEndpoint 1 OUT
RAMEndpoint 1 IN
SFR EP1 OUT BD(UOWN, Length,
Pointer)
SFR EP1 IN BD(UOWN, Length,
Pointer)
Serial
Interface
Engine
Tráfego USB USB PIC® MCU
If UOWN = 0
Pacote de dados
Pacote deHandshake
SIE envia NAK
SIE Descarta dados
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 34
Lembrete: Tipos de Sinal
SETUP
OUT
IN
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 35
Como fazer o host e o device se comunicarem?
Transferências USB
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 36
Transferências Vs.Transações
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)
TransferênciaTransação 1
64 Byte Payload Pacote de sinal OUT
Pacote de dados
Pacote Handshake ACK
Legenda:
Transação 2
64 Byte Payload
Transação 3
1 Byte PayloadTransfere: Grupo detransações relatadas.
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 37
Tipos de transferência de dados- USB de alta velocidade (full-speed) -
Transferência/tipo de Endpoint
Intervalo de Polling
% ReservadaBW/Frame para
todas astranferências
deste tipo
Max. # Data Bytes/Frame/Endpoint (Max# transações porframe @ Max Ep Size)*
Integridadedos dados
Interrupt Fixo, Periódico 90 64 (1 x 64) Sim
Isocrono Fixo, Periódico 90 1023 (1 x 1023) Não
Bulk Variável, usa largura de banda
livre
0 1216 (19 x 64) Sim
Control Variável 10 832 (13 x 64) Sim
* Tamanho máximo do pacote assumido de acordo com o tipo do Ep.
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 38
Exemplo de tranferência deinterrupção
1
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)
64 64
Frame = 1ms
Tráfego de outrosEndpoints ou aguarda Transações
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 39
Exemplo de transferênciaBulk
164 64
Frame = 1 ms
As transações ocorrem somente se
não ocorrer alta prioridade de tráfego
Int. Int.Isoc. Int.
MPUSBWrite(EP7, Pointer, Size = 129, Timeout)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 40
Máxima transferência teórica por Endpoint
24
832
0.864
1216
1023
0
200
400
600
800
1000
1200
1400
KByte/s
Control Interrupt Bulk Iso
Tipo de transferência
BaixaAlta
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 41
Tipos de transferências - Exemplos
Mouse Caixa acústicaImpressora
Control+
Interrupt
Control+
Bulk
Control+
Isocrono
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 42
Chave: Tipos detransferência
Todos os dispositivos PIC18, PIC24 e PIC32
Control, Interrupt, Bulk, Isocrono
PIC16C7X5
Apenas control e Interrupt
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 43
USB Device Classes
Controle
MouseDiscorígido
Externo
ICD2
Modem
DiscoFlexívelLuva
de Dados
Teclado
AdaptadorEthernet
Human Inteface Device Class(HID)
Mass Storage Class(MSD)
Communication DeviceClass (CDC)
Custom Class(Vendor Class)
Muitos outras classes…
PICkit™ 2 Starter Kit
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 44
Considerações quando utilizarStandard Classes
CDC (Virtual Com Port) Protocolo de
comunicação devicedefinida
O PIC “parece” com um modem, ou terminalconectado à porta serial
A aplicação/PIC PC Hosttroca a strings ASCII (padrão)
Pacotes de gerenciamento são chamadas junto dom os pacotes de dados.
Menor velocidade de dadosque a classe adaptada(80kByte/s vs 1MByte/s)
Custom Protocolo de
comunicação indefinida
Aplicação do PC fala diretamente ao endpoint no PIC
A aplicação/PIC do PC troca(exchange) raw bytes
Mais sobre o CDC Device Class na Parte 2
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 45
Example – Usando CDC
Aplicação
Driver UART
Hardware UART
Hardware UART
APIs UART
AplicaçãoFirmware
RS-232
Aplicação
Driver UART
Hardware USB
Hardware USB
USB UART APIs
AplicaçãoFirmware
USB
Driver CDC
PIC18, PIC24ou PIC32
Microchip CDC RS-232EmulaçãoAPI
USBRS-232
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 46
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 47
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 48
MicrocontroladorMicrocontroladorMicrocontroladorMicrocontrolador USB USB USB USB PIC18, PIC24PIC18, PIC24PIC18, PIC24PIC18, PIC24 ouououou PIC32PIC32PIC32PIC32
Auto-Detecção: Full-Speed
+5V
D+
D-
GND
TransceiverTransceiverTransceiverTransceiver
ConectorUSB
Dispositivo PerifDispositivo PerifDispositivo PerifDispositivo Perifééééricoricoricorico
VVVVUSBUSBUSBUSB 3.3 V3.3 V3.3 V3.3 VIdentificação Full Speed
(pull-up na linha D+)
1.5 kΩ±5%
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 49
MicrocontroladorMicrocontroladorMicrocontroladorMicrocontrolador USB USB USB USB PIC18, PIC24PIC18, PIC24PIC18, PIC24PIC18, PIC24 ouououou PIC32PIC32PIC32PIC32
Auto-Detecção: Low-Speed
+5V
D+
D-
GND
TransceiverTransceiverTransceiverTransceiver
ConectorUSB
Dispositivo PerifDispositivo PerifDispositivo PerifDispositivo Perifééééricoricoricorico
VVVVUSBUSBUSBUSB 3.3 V3.3 V3.3 V3.3 VIdentificação Low Speed
(pull-up na linha D-)
1.5 kΩ±5%
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 50
MicrocontroladorMicrocontroladorMicrocontroladorMicrocontrolador USB USB USB USB PIC18PIC18PIC18PIC18
Resistores Pull-up On-chip
+5V
D+
D-
GND
Transceiver
ConectorUSB
Dispositivo PerifDispositivo PerifDispositivo PerifDispositivo Perifééééricoricoricorico
VUSB 3.3 V
Resistores pull-up On-chip!
Controlado porUCFG<UPUEN> &
UCFG<FSEN>
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 51
Endpoint 0 e Enumeração
Veja o capítulo 9 em USB 2.0 Spec para maiores informações.
OutrosEndpoints
Endpoint 0 IN(Dados de controle)
Endpoint 0 OUT(Dados de controle)
Dual Port/Access RAMMicrocontroladorMicrocontroladorMicrocontroladorMicrocontrolador USB USB USB USB PIC18PIC18PIC18PIC18
Descritores
Transferências e controle
BarramentoReset
Ajuste endereço
Obter os Descritores
Ajuste e Configuração
DispositivoPronto
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 52
Descritores
Device
Configuração 1
Interface 0
Endpoint
Interface 1
Endpoint Endpoint Endpoint
Para outras configurações, se houver possibilidade
Para outrasinterfaces, sehouver possibilidade
String 0
String 1
String N
Descritores são tipicamente armazenados em memórias não voláteis/Flash
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 53
PICDEM USB
Microchip
Descritores - Exemplo
Dispositivo
Configuração 1
Interface 0
Endpoint
Manu. String
Prod. String
USB 2.0, VID = 0x04D8,PID = 0x0007, Num. Configurações,
Strings?
Configuração #1: Barramento energizado, Wakeup remoto, 500mA,
Num. Interfaces
Interface #0: HID Class, Num. Endpoints
Endpoint 1 IN, Tipo de transf. Interrupt, buffer de 64 bytes, polling a cada 3 ms
CaracteresUnicode
Vá USB!
Outra String
© 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
Não faça:
Power fromUSB Cable
VDD
22µF
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 55
Planejamento de energia
Corrente máxima de suspensão USB é0.5/2.5mA
Faça: Power fromUSB Cable VDD
≤10µF
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 56
Microcontrolador PIC®: Detectando uma conexão USB
Power fromUSB Cable VDD
I/O
Self-Powered
Se o dispositivo for auto-energizado,você DEVE usar um pino I/O para
detectar a conexão do cabo.
Não deve-se pull up D+ or D- (e nunca originar a corrente em VBUS) até os
drives do host VBUS estiverem prontos.
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 57
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
VID & PID
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 58
Flexibilidade USB
Testando flexibilidade
− Deve-se passar a usar o logo USB
− USD ~$1,500
Ferramentas e aplicativos USB
www.usb.org/developers/tools/
Qualidade do sinal elétrico Gerenciamento de energia
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 59
Teste de flexibilidade Para a flexibilidade USB: Testes independentes de laboratório (ou
testes Labs independentes) Para o device ‘Controle de eqüilíbrio’: USB “Plugfest”
Para o teste de flexibilidade USB:− Deve-se submeter uma lista de flexibilidade− www.usb.org/developers/compliance/peripheral_low/− Download “Peripheral Checklist”
− TID: Teste ID− Use um receptáculo USB certificado e um cabo− Saiba o TID de seus componentes− Todos os microcontroladores PIC® USB têm um número TID. Obtenha-o em
www.microchip.com/usb
Uma boa idéia é dar uma olhada na lista antes mesmo de iniciar oseu projeto!
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 60
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 61
PIC18 USB Flash Family
PIC18F2550/3*2.0 Full-Speed
PIC18F2550/3*2.0 Full-Speed
PIC18F2455/8*2.0 Full-Speed
PIC18F2455/8*2.0 Full-Speed
PIC18F4550/3*2.0 Full-Speed
PIC18F4550/3*2.0 Full-Speed
PIC18F4455/8*2.0 Full-Speed
PIC18F4455/8*2.0 Full-Speed
PIC18F24502.0 Full-SpeedPIC18F2450
2.0 Full-SpeedPIC18F4450
2.0 Full-SpeedPIC18F4450
2.0 Full-Speed
8 KB
32 KB
28-Pin 40/44-Pin 64-Pin 80-Pin
64 KB
16 KB
24 KB
PIC18F66J502.0 Full-SpeedPIC18F66J502.0 Full-Speed
PIC18F86J502.0 Full-SpeedPIC18F86J502.0 Full-Speed
PIC18F67J502.0 Full-SpeedPIC18F67J502.0 Full-Speed
PIC18F87J502.0 Full-SpeedPIC18F87J502.0 Full-Speed
96 KB PIC18F66J552.0 Full-SpeedPIC18F66J552.0 Full-Speed
PIC18F86J552.0 Full-SpeedPIC18F86J552.0 Full-Speed
PIC18F65J502.0 Full-SpeedPIC18F65J502.0 Full-Speed
PIC18F85J502.0 Full-SpeedPIC18F85J502.0 Full-Speed
20-Pin
NEW NEW
* Denotes 12-bit ADC NEW
NEW
NEW
NEW
NEW
NEW
NEW
PIC18F13K502.0 Full-SpeedPIC18F13K502.0 Full-Speed
PIC18F14K502.0 Full-SpeedPIC18F14K502.0 Full-Speed
PIC18F26J502.0 Full-SpeedPIC18F26J502.0 Full-Speed
PIC18F46J502.0 Full-SpeedPIC18F46J502.0 Full-Speed
PIC18F25J502.0 Full-SpeedPIC18F25J502.0 Full-Speed
PIC18F45J502.0 Full-SpeedPIC18F45J502.0 Full-Speed
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 62
PIC24 / PIC32 USB Flash Family
PIC24FJ64GB1062.0 Full-Speed
PIC24FJ64GB1062.0 Full-Speed
PIC32MX420F032H2.0 Full-Speed
PIC32MX420F032H2.0 Full-Speed
32 KB
192 KB
80-Pin 100-Pin
256 KB
64 KB
128 KB
512 KB
64-Pin
PIC24FJ64GB1082.0 Full-Speed
PIC24FJ64GB1082.0 Full-Speed
PIC24FJ64GB1102.0 Full-Speed
PIC24FJ64GB1102.0 Full-Speed
PIC24FJ128GB1062.0 Full-Speed
PIC24FJ128GB1062.0 Full-Speed
PIC24FJ128GB1082.0 Full-Speed
PIC24FJ128GB1082.0 Full-Speed PIC24FJ128GB110
2.0 Full-SpeedPIC24FJ128GB110
2.0 Full-Speed
PIC24FJ192GB1062.0 Full-Speed
PIC24FJ192GB1062.0 Full-Speed
PIC24FJ192GB1082.0 Full-Speed
PIC24FJ192GB1082.0 Full-Speed
PIC24FJ192GB1102.0 Full-Speed
PIC24FJ192GB1102.0 Full-Speed
PIC24FJ256GB1062.0 Full-Speed
PIC24FJ256GB1062.0 Full-Speed
PIC24FJ256GB1082.0 Full-Speed
PIC24FJ256GB1082.0 Full-Speed
PIC24FJ256B1102.0 Full-Speed
PIC24FJ256B1102.0 Full-Speed
PIC32MX440F128H2.0 Full-Speed
PIC32MX440F128H2.0 Full-Speed
PIC32MX440F128L2.0 Full-Speed
PIC32MX440F128L2.0 Full-Speed
PIC32MX440F256H2.0 Full-Speed
PIC32MX440F256H2.0 Full-Speed
PIC32MX460F256L2.0 Full-Speed
PIC32MX460F256L2.0 Full-Speed
PIC32MX440F512H2.0 Full-Speed
PIC32MX440F512H2.0 Full-Speed
PIC32MX460F512L2.0 Full-Speed
PIC32MX460F512L2.0 Full-Speed
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 63
PIC18F4550
Módulo USB
Placa do dispositivo periférico
SIE
Memóriado
ProgramaUSB RAM
Control Registers
Data RAMTransceiver
Regulador 3.3 V
Bus Pull-Up Resistors
D+/D-
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 64
PIC18 USB MCU
D+/D-
Serial Interface Engine
SIE
Transceiver
SIE ...
“Serializa” e “Deserealiza”dados USB
Codifica e decodifica dados NRZI
Gerencia bit stuffing
Checa CRC para validar opacote de dados
Detecta sinalização debarramento e notifica a CPUpara interrupçãos
Gerencia transações USB Gerencia handshaking
protocol
Memóriado
ProgramaUSB RAM
Control Registers
Data RAM
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 65
Clo
cks
do
sist
ema
Obrigatório para USB
SIEFS: 48 MHzLS: 6 MHz
CPU
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 66
PIC18F4550
Exemplo de Configuraçãodo Clock
Placa do dispositivo periférico
SIE
20 MHz EC Divide por 5 96 MHz PLL
Divide por 2
Divide por 3
PIC®
MCUCore
Somente 4 MHz deentrada
SIE Clock = 48 MHz : Modo full-speed
32 MHz : 8 MIPs
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 67
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 68
USB de alta velocidadeMcLab2 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 69
Explorer16BR com pluginPIC24FJ256GB110
PIC24FJ256GB110, 8MHz xtal PictailProto com USB
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 70
Características do Firmware daUSB Microchip
Compatível com o C18, C30 e C32
Projeto central MPLAB® IDE Polling Scheme
Multi-Tasking cooperativo (sem rotinas debloqueio)
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 71
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 72
Parte 2:Introdução às soluções do firmware
MCHPFSUSB da Microchip e Hand’s-on com CDC Class esubstituições APIs RS-232
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 73
Objetivos
Introdução ao sistema de firmware MCHPFSUSB USB da Microchip
Introdução à classe do dispositivoCDC
Adquir experiência prática utilizando o firmware do dipositivoUSB da Microchip− Classe CDC: Emulação RS-232 API
(AN956)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 74
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 75
Verificação do conhecimentoUSB
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 76
Device Classes &solução de firmware
Microchip USB Device Class
© 2007 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0 Slide 76
V1.10 Feb 28, 2008
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 77
MCHPFSUSB Device Side Class Frameworks Disponível
Joystick
Mouse
External Hard Drive
ICD2
Modem
Floppy DriveLuva de
dado
Keyboard
Ethernet Adapter
Human Interface Device Class(HID)
Mass Storage DeviceClass (MSD)
Communication DeviceClass (CDC)
Custom Class(Vendor Class)
PICkit 2
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 78
Criando e usando classede dispositivo
EP15
PIC18F4550
Control Transfer(SETUP,OUT, IN)
...
EP1
EP0
Interrupt, Bulk,Isocrono(OUT, IN)
Ch 9
Device Class
Aplicaçãodo usuário
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 79
Human Interface Device(HID)
Computador PCMicrocontrolador PIC®
Cabo USB
HID AppHID\Mouse Drivers do Windows padrão
ConsideraConsideraçõçõeses dodo projetoprojeto::•• MMááximoximo de 64 KB/sde 64 KB/s•• TransferTransferêênciancia de dadosde dados tipo interruptipo interrupçãçãoo•• DriverDriver padrpadrããoo do Windowsdo Windows•• AplicaAplicaçãçãoo do PCdo PC adaptado pode acessaradaptado pode acessar dados dados HIDHID atravatravééss de APIs win32de APIs win32
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 80
CDC – Emulação RS-232
Computador PCMicrocontrolador PIC®
Cabo USB
Hyper TerminalCDC
INF File Required(C:\Microchip Solutions\USB Tools\
USB CDC Serial Demo\inf)
Drivers do Windows padrão
ConsideraConsideraçõçõeses dodo projetoprojeto::•• MMááximoximo de ~80 KB/sde ~80 KB/s•• TransferTransferêênciancia BulkBulk•• AplicaAplicaçõçõeses PCPC podem acessarpodem acessar oo dispositivo comodispositivo comosese ele estivesse conectadoele estivesse conectado àà portaporta serial COMserial COM
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 81
Custom Class DriverComputador PC
Microcontrolador PIC®
Cabo USB
MCHPUSB.sys
Somente binário
MPUSBAPI.dll
Código fonte ebinário
Boot
DemoPDFSUSB.exe
Binary OnlyOutros
exemplos C++
Código fonte ebinário
ConsideraConsideraçõçõeses dodo projetoprojeto::•• MMááximoximo de ~1,088 KB/sde ~1,088 KB/s•• Muito flexMuito flexíívelvel ((possibilidadepossibilidade dede usar transferusar transferêêncianciaControl, BulkControl, Bulk ou Isocronoou Isocrono))•• NNããoo éé um driverum driver padrpadrããoo WindowsWindows•• ProgramaProgramaçãçãoo do PC do PC éé requeridarequerida
INF File Required(C:\Microchip Solutions\
USB Tools\MCHPUSB Custom Driver\
MCHPUSB Driver\Release)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 82
Mass Storage Device (MSD)
Computador PCMicrocontrolador PIC®
Cabo USB
Windows Explorer
MSD Drivers do Windows padrão
ConsideraConsideraçõçõeses dodo projetoprojeto::•• Atua comoAtua como um driveum drive externoexterno•• RRáápida transferpida transferêênciancia de dadosde dados nana USBUSB•• VelocidadeVelocidade éé limitadolimitado,, depende apenas da mdepende apenas da míídia dia ffíísica utilizadasica utilizada•• ParaPara maior proveitomaior proveito, um, um SistemaSistema dede Arquivo Arquivo tambtambéém podem pode serser implementadoimplementado no firmwareno firmware
Veja AN1003: USB Mass Storage
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 83
Download do Microchip USB Framework
390_USBincorpora v2.4 do Microchip USB Framework
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 84
Exercício 2.1 - Objetivos -
Acompanhar o instrutor Familiar-se com o ambiente de
desenvolvimento Nós não escreveremos nenhum código Apenas complie, programe a memória
Flash e treine com a demonstração padrão
Exercício 2.1: Driver de uso geral (demo)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 85
Visão geral da especificação
USB CDC Device Class
© 2007 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0 Slide 85
V1.10 Feb 28, 2008
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 86
Aplicação da porta COM “Virtual”
HyperTerminal
Driver UART
Hardware UART
Hardware UART
APIs UART
Aplicação do Firmware
RS-232
HyperTerminal
Driver UART
Hardware UART
Hardware UART
APIs UART USB
Aplicação do Firmware
USB
Driver CDC
PIC18, PIC24ou PIC32
RS-232 CDCda Microchip API deEmulação
USBRS-232
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 87
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 transmitedados como dados emcapsulados,específico para cada aplicação, comoV25ter para modens (comandos AT)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 88
Abstract Control Model (ACM) Serial Emulation
Implementação de coberturas ACM de portasCOM 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 RS232emulado
− 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 89
O dispositivo USB CDC-ACM “Lógico”
Device(Manufacturer: Microchip Technology)(Manufacturer: Microchip Technology)(Manufacturer: Microchip Technology)(Manufacturer: Microchip Technology)(Product: CDC RS(Product: CDC RS(Product: CDC RS(Product: CDC RS----232 Emulation Demo)232 Emulation Demo)232 Emulation Demo)232 Emulation Demo)(VID_PID: 04d8_000a)(VID_PID: 04d8_000a)(VID_PID: 04d8_000a)(VID_PID: 04d8_000a)
Configuration#1(Active)(Active)(Active)(Active)
Interface#1(Data Class Interface)(Data Class Interface)(Data Class Interface)(Data Class Interface)
Endpoint 0(Control (Control (Control (Control ---- OUT)OUT)OUT)OUT)
MCHPFSUSB
CDC TX/RX Functions
Analógico/Digital I/O
Endpoint 0(Control (Control (Control (Control ---- IN)IN)IN)IN)
Endpoint 3(Bulk (Bulk (Bulk (Bulk ---- OUT)OUT)OUT)OUT)
Endpoint 3(Bulk (Bulk (Bulk (Bulk ---- IN)IN)IN)IN)
Interface#0(Communications (Communications (Communications (Communications Class Interface)Class Interface)Class Interface)Class Interface)
Endpoint 2(Interrupt (Interrupt (Interrupt (Interrupt ---- IN)IN)IN)IN)
usbser.sys
Pipes
OS USB Control Pipes
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 90
Projeto CDC -Solicitação da Classe específica ACM -
Sumário da solicitação da classe específica enotificaçõ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 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. 390_USB v2.0 Slide 92
PIC18F4550
Projeto CDC- Configuração do Clock -
Placa do dispositivo periférico
SIE
20 MHz EC Divide por 5 96 MHz PLL
Divide por 2
Divide por 3
PIC®
MCUCore
Somente 4 MHz deentrada
SIE Clock = 48 MHz : Modo full-speed
32 MHz : 8 MIPs
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 93
Usando a API Microchip CDC Class RS-232
Emulation (Exercício 2.2)
© 2007 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0 Slide 93
V1.10 Feb 28, 2008
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 94
Rodando o código CDC padrão
Ligue o cabo RJ12 à McLab2 e no ICD2BR Selecione “File > Open Workspace…” Abra o projeto C:\Microchip Solutions\USB Device - CDC -Basic Demo\CDC - Basic Demo –Firmware\USB Device - CDC - Basic Demo - C18 - McLab2_18F4550.mcw
Não faça mais nada ainda
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 95
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 96
Gerenciador de dispositivo
Abra o Gerenciador de dispositivo (Iniciar > Painel decontrole > 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 97
Gerenciador de dispositivo
Agora conecte o cabo USB na McLab2 e instaleo arquivo CDC .inf quando avisado pela janela“Novo Hardware encontrado”
O dispositivo deve ser detectado pelo Windows
Você verá umanova COM “virtual”.
Guarde o número da nova porta COM
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.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. 390_USB v2.0 Slide 99
HyperTerminal: Configuração
Selecione a nova portaCOM que foi adicionada durante a instalação do drive USB e clique “OK”
(Arquivo > Propriedades> Orelha Conectar-se, Campo Conectar-seusando:)
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 100
HyperTerminal: Conectar
Conecte à placa
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 101
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 102
HyperTerminal: Nota importante
Antes de desconectar fisicamente umdispositivo USB, você deve desligar a conexão primeiro, pois de outra maneira o programa deverá ser fechado e aberto novamente na próxima vez que um dispositivo USB estiver conectado.
Vamos dar uma olhada nas aplicações
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 103
Aplicações CDC
void putrsUSBUSART(const rom char *data);
void putsUSBUSART(char *data);
void mUSBUSARTTxRom(rom byte *pData, byte len);
void mUSBUSARTTxRam(byte *pData, byte len);
byte getsUSBUSART(char *buffer, byte len);
byte mCDCGetRxLength(void);
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 104
Determinantes da API
Você vai enviar strings ASCII oubytes com a aplicação host?
O dado é armazenado na ROM ouRAM?
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 105
Aplicação para dados ROM e Literal não-terminados
void putrsUSBUSART(const rom char *data);
void putsUSBUSART(char *data);
void mUSBUSARTTxRom(rom byte *pData, byte len);
void mUSBUSARTTxRam(byte *pData, byte len);
byte getsUSBUSART(char *buffer, byte len);
byte mCDCGetRxLength(void);
Use ‘putrs’ para strings armazenados emROM
Exemplo de uso:putrsUSBUSART(“RTC USB”)
ouputrsUSBUSART(teste)
Onde:rom char teste = “Hello world!!!”;
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 106
Importância do Checking State
cdc_trf_state− CDC_TX_READY− CDC_TX_BUSY− CDC_TX_BUSY_ZLP− CDC_TX_COMPLETING
Quando chamamos uma API que envia dados ao host,deve verificar-se que:cdc_trf_state == CDC_TX_READY
Ou use macro:− BOOL mUSBUSARTIsTxTrfReady(void);
Retorna ‘1’ quando o estado é CDC_TX_READY
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 107
Fluxo do programa
Reset main InitializeSystem
MainLoop
main.c ou outro arquivoExercise_01();Exercise_02();
…
USBTasks()
ProcessIO()
main.cUSBDriverService();
CDCTxService();…
MultitaskingCooperativo!!!
Sem funçõesde bloqueio.
Use máquinade estado.
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 108
Multitasking cooperativas
Main Loop
Task A
900 us Task A.3 - 300 us
Task B - 100 us
Task A.2 - 400 us
Task A.1 - 200 us
Max Loop Time1000 us V.S. 500 us
Máquina deestado
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 109
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 110
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 111
API para receber dados
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);
len = número de bytes esperadosbuffer = buffer em RAM, onde a string
será armazenada
getsUSBUSART retorna o número de bytes copiado para o buffer
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 112
Exercício 2.2.3- Recebendo dados -
Encontre a função Exercise_03() em main_user.c Escreva o código nesta função que lê dados do barramento
USB e trocar o estado do LED4 quando o dado recebido for o caractere ‘1’ (0x31)
Funções e variáveis úteis:− input_buffer[];
− mLED_4_Toggle();
− Use: getsUSBUSART(…)Fim do exercício 2.2.3
Código solução: C:\Microchip Solutions\USB Device - CDC - Basic
Demo\CDC - Basic Demo -Firmware\user\solutions\Exercise3.txt
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 113
APIs para uma string comtamanho definido
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);
Use mUSBUSARTTxRom para dadosarmazenados na memória do
programa (ROM)
Use mUSBUSARTTxRam para dadosarmazenados na memória de dados
(RAM)
Máximo de 255 bytes
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 114
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 115
API para dados RAM não-terminados
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);
Use ‘puts’ para dados armazenados na RAM
Exemplo de uso:putsUSBUSART(output_buffer);
ondechar output_buffer[ ]=“Microchip”;
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 116
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 portaUSB.
Siga as instruções em Exercise_05()
Use mUSBUSARTIsTxTrfReady()
Use putsUSBUSART(...)
Fim do exercício 2.2.5 Código solução:
C:\Microchip Solutions\USB Device - CDC - Basic Demo\CDC - Basic Demo -Firmware\user\solutions\Exercise5.txt
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 117
O que há de errado com esse código?
Não foi verificado se o TX está pronto:if(mUSBUSARTIsTxTrfReady())
void Exercise_XX(void)
putrsUSBUSART(“Hello World!”);
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 118
O que há de errado com esse código?
Rsposta:Função de bloqueio!
Não é bom paramultitaskingcooperativo.
CDCTxService() em USBTasks() nunca será chamado, e
cdc_trf_state nunca será atualizado.
O programa só estarápreso em um loop.
Lembre-se: use uma máquina de estado!
void Exercise_XX(void)
while(!mUSBUSARTIsTxTrfReady())
;
putrsUSBUSART(“Hello World!”);
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 119
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 120
Parte 3:Custom Class PC Host Drivers and
Device Framework
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 121
Objetivos
Revisão do Windows e os drivers da classe adaptada disponíveis
Revisão MPUSBAPI.DLL &mchpusb.sys
Revisão do MCHPFSUSB custom class device framework
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 122
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 123
FundamentosWindows®
Sistema operacional Windows XP
Baseado no Windows NT/OS2− Projetado por David Cutler (Programador de DECs VMS OS)
Função− Para administrar o hardware e fornecer um ambiente no qual um
usuário pode executar programas de uma maneira conveniente eeficiente
Características essenciais− Memória: grande, flat, espaço do endereço da memória virtual− Sistemas de arquivos, terminal, e outros I/O− Multitasking: processos e threads− Comunicação e sincronização
Usuário único e possibidade de trabalhar em rede− Segurança
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 125
Arquitetura Windows
Aplica
Aplicaçõçõeses do
do
terminal W
indows
terminal W
indows
Aplica
Aplicaçõçõ
esesdo G
UI Win
dows
do GUI W
indows
DLLs DLLs dodo usuusuááriorio, , subsub--sistemasistema dodo ambienteambiente Win32,Win32,BibliotecasBibliotecas dodo sistemasistema (NTDLL.DLL)(NTDLL.DLL)
GerenciadorGerenciador de I/O ede I/O e grgrááficosficos,, dispositivodispositivo e drivers doe drivers do sistemasistema dede arquivoarquivo (.SYS)(.SYS)
HardwareHardware
USUÁRIOKERNEL
MPUSBRead( )
NTReadFile( ), NTWriteFile( )
I/O Request Packet(s) (IRP)
MPUSBWrite( )
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 126
Sistema .NET
Aplica
Aplicaçõçõeses dodo
terminal .N
ET
terminal .N
ET
Aplica
Aplicaçõçõ
esesGUIGUI
form
ul
form
ulááriorioW
indows
Win
dows
DLLs doDLLs do usuusuááriorio, sub, sub--sistemasistema dodo ambienteambiente Win32,Win32,BibliotecasBibliotecas dodo sistemasistema (NTDLL.DLL)(NTDLL.DLL)
KernelKernel
USUÁRIO
KERNEL
MPUSBRead( )
NTReadFile( ), NTWriteFile( )
MPUSBWrite( )
Montagens da biblioteca da classeMontagens da biblioteca da classe dodo sistemasistema .NET (DLLs).NET (DLLs)
Código gerenciado
Código não gerenciado
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 127
Desenvolvimento das aplicações do Windows com visual C++ 2005 Express
Com a edição do visual C++ 2005 Express vocêtem duas maneiras básicas de criar uma aplicação interativa, gráfica:− Usando o Windows API (Win32 USER Functions)
A programação mais intensiva− Usando o Windows Forms (Sistema .NET)
A programação menos intensiva
Visual C++ 2005 Express Edition também lhe permite criar dois tipos de terminais deaplicação (ou aplicações do terminal) (Win32 e CLR (.NET))− Nós estaremos desenvolvendo uma aplicação “terminal
Win32” ANSI-C
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 128
Transferência dos dadosgenéricos
Escolha do driver USB
© 2007 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0 Slide 128
V1.10 Feb 28, 2008
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 129
mchpusb.sys vs. HID vs. CDCCaracterística mchpusb.sys
(v1.0.0.6)
HID CDC
Driver support built into Windows
No Yes Yes (need .inf)
64-bit PC Support Yes Yes Yes
XP Ready Yes Yes Yes
Vista Ready Yes Yes Yes
Transfer Types (not incl. Ep0)
Control Yes Yes No
Iso Yes No No
Interrupt Yes Yes Yes
Bulk Yes No Yes
Max Speed ~1.0 MB/s 64KB/s ~80kByte/s
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 130
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 131
Microchip Custom Class Windows®
USB Device Driver
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 132
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 commchpusb.sys)
Trabalha com todos os dispositivos USB daMicrochip
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 133
Microchip General Purpose USB Device Driver
mchpusb.inf – Esse arquivo contém a informação sobre o driver do dispositivo
mchpusb.sys – Driver do dispositivoUSB da Microchip
Esses arquivos pode ser encontrados noseguimento path− C:\Microchip Solutions\USB Tools\MCHPUSB Custom Driver\MCHPUSB Driver\Release
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.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 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 135
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 136
As funçõesMPUSBAPI.DLL
© 2007 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0 Slide 136
V1.10 Feb 28, 2008
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 137
Funções em MPUSBAPI.DLL
Funções MPUSBAPI
MPUSBOpen(..)
MPUSBClose(..)
MPUSBReadInt( .. )
MPUSBRead( .. )
MPUSBWrite( .. )
VID & PID
MPUSBGetDeviceCount(..)
MPUSBGetDLLVersion( .. )
VID & PID
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 138
Sumário - Função DLL e usodo tipo de transferência
Transferência/Tipo de Endpoint
Funções Time-OutAplicável?
Interrupt-IN MPUSBRead,MPUSBReadInt
Sim
Interrupt-OUT MPUSBWrite Sim
Bulk-IN MPUSBRead Sim
Bulk-OUT MPUSBWrite Sim
Isochronous-IN MPUSBRead Não
Isochronous-OUT MPUSBWrite Não
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 139
Custom Class Device Framework
© 2007 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0 Slide 139
V1.10 Feb 28, 2008
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.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, máquina de estado e váriaveis
void USBGenWrite(byte *buffer, byte len);
− Copia dados do buffer de usuário para o buffer Ep
byte USBGenRead(byte *buffer, byte len);
− Copia dados do buffer Ep para o buffer do usuário
(bit) mUSBGenRxIsBusy(void);
− Macro verifica se o Ep OUT está ocupado (pertencente ao SIE ou não)
(bit) mUSBGenTxIsBusy(void);
− Macro verifica se Ep IN está ocupado (pertencente ao SIE ou não)
byte mUSBGenGetRxLength(void);
− Devolve o número de bytes copiado no registro do theuser depois da mais nova chamada para USBGenRead()
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 141
Estrutura do Firmware Custom Class (“Demo”)
Modelo simultâneo Aceita comandos do
host Retorna resultados Espera pelo próximo
comandoServiceRequests()
Processo IO()
USB Tasks()
Inicializa
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 142
Inicializando os periféricos PIC
Em main.c, a função foi definida por você para ocódigo de inicialização periférica da aplicação específica:
void UserInit(void)
mInitAllLEDs(); //macros defined in “io_cfg.h”
mInitPOT();
//end UserInit
UserInit() é chamado em main()durante ainicialização do sistema.
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 143
Descriptor Table SettingsFile 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 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. 390_USB v2.0 Slide 145
String Descriptorsrom structbyte bLength;byte bDscType;word
string[1];sd000=
sizeof(sd000),DSC_STR,0x0409;
rom structbyte 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 structbyte bLength;byte bDscType;word string[33];sd002=
sizeof(sd002),DSC_STR,
'P','I','C','D','E','M',' ','F','S',' ','U','S','B',' ',
'D','e','m','o',' ','B','o','a','r','d',' ','(','C',')',
' ','2','0','0',‘7';
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 146
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 dodispositivo de um fornecedor específico
/MCHPFSUSB/fw/demo contém o custom class device framework
Arquivos .inf
MPUSBAPI.DLL simplifica suas atividadesde desenvolvimento
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 147
Sumário do RTC
© 2007 Microchip Technology Incorporated. All Rights Reserved. 390_USB v1.0 Slide 147
V1.10 Feb 28, 2008
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 148
Sumário
Hoje, nós…− Vimos os fundamentos da USB e como
isso poderia ser usado um uma apliacação embarcada
− Nos familiarizamos com os microcontroladores da Microchip, placasde desenvolvimento e sistemas do software USB.
− Revimos drivers USB do host do PC da classe adaptada e sistema do dispositivo
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 149
Referências
Código fonte MPUSBAPI.DLL(arquivo _mpusbapi.cpp)
MCHPFSUSB Firmware User’s Guide (DS51679A)
“Windows System Programming, 3/E” –Johnson Hart
“Microsoft Windows Internals, 4/E” –Mark Russinovich
“Operating System Concepts, 7/E” –Silbershatz”
“Modern Operating Systems, 3/E” –Andrew Tanenbaum
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 150
Outras fontes
Microchip USB Design Center: Firmware, Custom Driver, App. Notes, other USB specific resources− http://www.microchip.com/usb
Especificações USB 2.0 e Device Class − http://www.usb.org
Fórum de discussão dos desenvolvedores− http://www.usb.org/phpbb/− http://forum.microchip.com/tt.aspx?forumid=102
“USB Complete, 3/E”& “Serial Port Complete, 2/E” by Jan Axelson
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 151
Ferramentas de desenvolvimento usadas neste
RTC
McLab2 com PIC18F4550 Outras ferramentas
− Placa adaptadora USB para McLab2− ICD2BR
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 152
Obrigado!
© 2008 Microchip Technology Incorporated. All Rights Reserved. 390_USB v2.0 Slide 153
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 ZENAsã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.