© 2008 microchip technology incorporated. all rights

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

Upload: jceletronic

Post on 18-Nov-2014

706 views

Category:

Documents


18 download

TRANSCRIPT

Page 1: © 2008 Microchip Technology Incorporated. All Rights

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

390_USBUSB device

Page 2: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 3: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 4: © 2008 Microchip Technology Incorporated. All Rights

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

Parte 1:Introdução ao

Full-Speed USB

Page 5: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 6: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 7: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 8: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 9: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 10: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 11: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 12: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 13: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 14: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 15: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 16: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 17: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 18: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 19: © 2008 Microchip Technology Incorporated. All Rights

© 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!

Page 20: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 21: © 2008 Microchip Technology Incorporated. All Rights

© 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”

Page 22: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 23: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 24: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 25: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 26: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 27: © 2008 Microchip Technology Incorporated. All Rights

© 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.

Page 28: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 29: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 30: © 2008 Microchip Technology Incorporated. All Rights

© 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( )

Page 31: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 32: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 33: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 34: © 2008 Microchip Technology Incorporated. All Rights

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

Lembrete: Tipos de Sinal

SETUP

OUT

IN

Page 35: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 36: © 2008 Microchip Technology Incorporated. All Rights

© 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.

Page 37: © 2008 Microchip Technology Incorporated. All Rights

© 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.

Page 38: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 39: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 40: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 41: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 42: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 43: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 44: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 45: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 46: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 47: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 48: © 2008 Microchip Technology Incorporated. All Rights

© 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%

Page 49: © 2008 Microchip Technology Incorporated. All Rights

© 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%

Page 50: © 2008 Microchip Technology Incorporated. All Rights

© 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>

Page 51: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 52: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 53: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 54: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 55: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 56: © 2008 Microchip Technology Incorporated. All Rights

© 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.

Page 57: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 58: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 59: © 2008 Microchip Technology Incorporated. All Rights

© 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!

Page 60: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 61: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 62: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 63: © 2008 Microchip Technology Incorporated. All Rights

© 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-

Page 64: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 65: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 66: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 67: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 68: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 69: © 2008 Microchip Technology Incorporated. All Rights

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

Explorer16BR com pluginPIC24FJ256GB110

PIC24FJ256GB110, 8MHz xtal PictailProto com USB

Page 70: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 71: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 72: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 73: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 74: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 75: © 2008 Microchip Technology Incorporated. All Rights

© 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?

Page 76: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 77: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 78: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 79: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 80: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 81: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 82: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 83: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 84: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 85: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 86: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 87: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 88: © 2008 Microchip Technology Incorporated. All Rights

© 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)

Page 89: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 90: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 91: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 92: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 93: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 94: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 95: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 96: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 97: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 98: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 99: © 2008 Microchip Technology Incorporated. All Rights

© 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:)

Page 100: © 2008 Microchip Technology Incorporated. All Rights

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

HyperTerminal: Conectar

Conecte à placa

Page 101: © 2008 Microchip Technology Incorporated. All Rights

© 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…

Page 102: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 103: © 2008 Microchip Technology Incorporated. All Rights

© 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);

Page 104: © 2008 Microchip Technology Incorporated. All Rights

© 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?

Page 105: © 2008 Microchip Technology Incorporated. All Rights

© 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!!!”;

Page 106: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 107: © 2008 Microchip Technology Incorporated. All Rights

© 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.

Page 108: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 109: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 110: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 111: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 112: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 113: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 114: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 115: © 2008 Microchip Technology Incorporated. All Rights

© 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”;

Page 116: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 117: © 2008 Microchip Technology Incorporated. All Rights

© 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!”);

Page 118: © 2008 Microchip Technology Incorporated. All Rights

© 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!”);

Page 119: © 2008 Microchip Technology Incorporated. All Rights

© 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…

Page 120: © 2008 Microchip Technology Incorporated. All Rights

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

Parte 3:Custom Class PC Host Drivers and

Device Framework

Page 121: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 122: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 123: © 2008 Microchip Technology Incorporated. All Rights

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

FundamentosWindows®

Page 124: © 2008 Microchip Technology Incorporated. All Rights

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

Page 125: © 2008 Microchip Technology Incorporated. All Rights

© 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( )

Page 126: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 127: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 128: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 129: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 130: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 131: © 2008 Microchip Technology Incorporated. All Rights

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

Microchip Custom Class Windows®

USB Device Driver

Page 132: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 133: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 134: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 135: © 2008 Microchip Technology Incorporated. All Rights

© 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"

Page 136: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 137: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 138: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 139: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 140: © 2008 Microchip Technology Incorporated. All Rights

© 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()

Page 141: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 142: © 2008 Microchip Technology Incorporated. All Rights

© 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.

Page 143: © 2008 Microchip Technology Incorporated. All Rights

© 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

;

Page 144: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 145: © 2008 Microchip Technology Incorporated. All Rights

© 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';

Page 146: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 147: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 148: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 149: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 150: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 151: © 2008 Microchip Technology Incorporated. All Rights

© 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

Page 152: © 2008 Microchip Technology Incorporated. All Rights

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

Obrigado!

Page 153: © 2008 Microchip Technology Incorporated. All Rights

© 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.