apostila curso proramação de dispositivos

Post on 15-Oct-2014

2.274 Views

Category:

Documents

51 Downloads

Preview:

Click to see full reader

TRANSCRIPT

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 2

!

" #

$

" %&'

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 3

( %&)))

Mas o PC estava só, entao criou-se a Serial e a Paralela

E ELE viu que era bom...

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 4

Entao veioAQUELE homemcom suasjanelas…

A interface USB se tornou padrao… E um periodo de trevas se sucedeu.

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 5

E vendo o sofrimentos dos programadores, a Microchip disse:

- Que haja o PIC USB!

E tudo se clareou!

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 6

"* + ,- - , " .

& "# & / 0 1 0 $ - 2

3%&45-6778 %&2 39 -,:3+

-

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 7

#+;)))

,* & # 3 ( &

4<<5, 4)4 =888, =)8

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 8

+>>))* ?2@?2A

(B ) +>>))*>>> C4D788 % 0.:E* ;?2

%2@%2A

(

-@,-A

0 %

*) FC4D788

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 9

"* + ,- - , 0+

& "# & / 0 1 0 $ - 2

3%&45-6778 %&2 39 -,:3+

-

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 10

Computador é

ótimo:

Poder de processamento!

Análise de Dados,Log de dados,

Updates de firmware,

Diagnóstico

• Auto detecção & configuração (Plug&Play)• Fácil expansão usando hubs• Alimentação pelo barramento (100mA ou

500mA @ 5V

• Três velocidades :Low- 1.5, Full- 12, High- 480 Megabits/segundo

SerialParalela

PS/2

Aplicação embarcada

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 11

& :?

1394-Fire Wire

1Gb1Gb480Mb/s480Mb/s100Mb/s100Mb/s12Mb/s12Mb/s1.5Mb/s1.5Mb/s1Mb/s1Mb/s500Kb/s500Kb/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 suportar High Speed para ter

conformidade com USB 2.0

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 12

3 3

3

-"0 !"# $

%"&

'"&

()*

+,-.

/012

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 13

%;G3 3

30 34562

-"0 !"#),), 7

1 5,H 48

I588H>*

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 14

%&+ ?

PIC18F4550

Full-Speed & Low-Speed

PIC16C7X5

Somente Low-Speed

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 15

"* + ,- - , 0+

& "# & / 0 1 0 $ - 2

3%&45-6778 %&2 39 -,:3+

-

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 16

"+Controlador USB Host

& Hub Raiz

HubHub

HubHub

HubHub

HubHub

HubHub

Falantes

Logger de dados

AnalisadorLógico

HubHubAté 126 periféricos...

Teclado

Hub: Máximo em cadeia= 5

As MCUs PICmicro® com USB são periféricos!

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 17

& *J*%+

Joystick

Mouse Hard Drive Externo

ICD2

Drive DVD ExternoData Glove

Teclado

Modem

Adaptador Ethernet

Classe Human Interface Device (HID)

Classe Mass Storage Device (MSD)

Classe Communication Device (CDC)

Classe Custom(Vendor Class)

Muito mais classes….

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 18

%+H

& (KL@(KLA "

6)68, 7)=7? M 488" (3 G788"3 G .

* )

~ 5.0 V

~ 3.3 V

Deve usar alimentação externa

se mais for necessário.

VBUS

D+

D-

GND

VBUS

D+

D-

GND

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 19

% "

"BG .=)7"

( Cabo de

alimentaçãoda USB

VD D

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 20

%% *

"BG .=)7"

- Cabo de

alimentaçãoda USB

VD D

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 21

Conector “mini-B”FS, HS Peripheral

Conector “B”FS, HS Peripheral

&Conector “A”

USB Host

Periférico LS

Direto no caboou

conector “custom”

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 22

"* + ,- - , 0+

& "# & / 0 1 0 $ - 2

3%&45-6778 %&2 39 -,:3+

-

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 23

%)*%)*

8 &8 &9)*:9)*:

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 24

""# 6B 1

& 2 & * G

00 1 2

Latencies Garantida Integridade dos Dados Garantida

InterruptInterruptInterrupt

BulkBulkBulk

IsochronousIsochronousIsochronous

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 25

G0 1

Mouse FalantesImpressora

Control+

Interrupt

Control+

Bulk

Control+

Isochronous

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 26

0 G 0 1 0; 3BG 0; %

24

832

0.864

1216

1023

0

200

400

600

800

1000

1200

1400

KByte/s

Control Interrupt Bulk Iso

Tipo de transferencia

LowFull

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 27

%&+ 00 1

PIC18F4550 e familia

Control, Interrupt, Bulk, Isochronous

PIC16C7X5

Somente Control e Interrupt

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 28

8;%":

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 29

.

RAMEndpoint 1 OUT

RAMEndpoint 1 IN

3BG!/ 3BG!/ 4N0O4N(IP=4N0O4N(IP= %&45-6778 .P=%&45-6778 .P=

%8I& & % %8I& & %

“Reservatório” deDados

TransaçãoLED

Teclas

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 30

0

Específica:• O endereço do dispositivo

alvo• O número Endpoint• A direção da transferência

!" #

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 31

0 , (

!"

$

O dispositivo alvo retorna dados iguais ou menores que o tamanho do endpoint especificado no descriptor

Um signal especial indica o fim do pacote (EOP)

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 32

0 , (

!"

$

%

Acknowledge - ACK

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 33

G )))

1. Eu quero RECEBER dados. [IN]

2. Aqui estão os DADOS.[0x30,0x43,0x48,0x35]

3. Pequei! [ACK]

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 34

0 , 0: 0%

$

%

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 35

0 ,0 1 +

$

%

A transferência isocrona não garante a integridade dos dados. Então não há o pacote de handshake.

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 36

%&+ 00Q

SETUP

OUT

IN

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 37

- 4

<=7>$

<7 &? 7 @.A

87 .A#

B7 '9

SOF

1 ms 1 ms 1 ms

SOF SOFIntEP1

BulkEP2

BulkEP2

IntEP1

IntEP1

BulkEP2

Start Of Frame

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 38

"* + ,- - , 0+

& "# & / 0 1 0 $ - 2

3%&45-6778 %&2 39 -,:3+

-

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 39

%$$CD<$?<EF

G%),?

G8$),

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 40

!& ' ( ) * + + ,!& ' ( ) * + + ,!& ' ( ) * + + ,!& ' ( ) * + + ,

",2-,

- + .

$-

$/

0 " $

&

$ 1 $ 1 $ 1 $ 1

.... 2 32 .2 32 .2 32 .2 32 .Identificação Full Speed:

pull-up na linha D+' 3+ Ω4+ 5

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 41

!& ' ( ) * + + ,!& ' ( ) * + + ,!& ' ( ) * + + ,!& ' ( ) * + + ,

",2E,

- + .

$-

$/

0 " $

Identificação Low Speed:pull-up na linha D-

' 3+ Ω4+ 5

$ 1 $ 1 $ 1 $ 1

.... 2 32 .2 32 .2 32 .2 32 .

&

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 42

!& ' ( ) * + + ,!& ' ( ) * + + ,!& ' ( ) * + + ,!& ' ( ) * + + ,

(RK%,R

- + .

$-

$/

0 " $

Transceiver

VUSB 3.3 V

Resistores de Pull-up internos!

Controle pelo UCFG<UPUEN> & UCFG<FSEN>

$ 1 $ 1 $ 1 $ 1

&

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 43

%&' 3&2* " +

Cabo deAlimentação

USB

VD D

I/O

Alimentaçãoseparada

Se o dispositivo tiver alimentação separada, DEVE-SE usar um pino de I/O para detectar a conexão do cabo.

Isso é necessário para habilitar/desabilitar o modulo USB e

não permitir que os resistores de pull-up de D+/D- fiquem ativos antes da

conexão do cabo, conforme requerido na especificação USB 2.0 - 7.1.5

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 44

8

HI8@ .

OutrosEndpoints

Endpoint 0 IN(Control Data)

Endpoint 0 OUT(Control Data)

Dual-Port RamPIC18F4550

Descriptors

Control Transfer

Bus Reset Set Address Get Descriptor

Set Configuration

Device Ready

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 45

2

Device

Configuration 1

Interface 0

Endpoint

Interface 1

Endpoint Endpoint Endpoint

P/ outras Configurations se houverem

P/ outras interface se houverem

String 0

String 1

String N

2 J ; B)(%&45-6778D J ; +)

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 46

Vamos USB!

MCHP

G 2

Device

Configuration 1

Interface 0

Endpoint

String 0

String 1

USB 2.0, VID = 0x04D8,PID = 0x0007, 1 Configuration, String 0

Configuration #1, Bus-Powered,100mA, 1 Interface

Interface #0, String 1

Endpoint 1 IN, Interrupt Transfer Type, 64-byte buffer, Poll every 10 ms

Characteres Unicode

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 47

"* + ,- - , 0+

& "# & / 0 1 0 $ - 2

3%&45-6778 %&2 39 -,:3+

-

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 48

- / %&45-6778

K"3 =SH ( # .4SH

%K3 =7NH

653J, 4=3% % &2=2

@66A

28-Pin 40/44-Pin

32 KB PIC18F2550 PIC18F4550 24 KB PIC18F2455 PIC18F4455

16 KB PIC18F2450 PIC18F4450

=)8-, 0* T + - + =&9>%9D "K0 "2&48, 4G &&%O4G&&% - G 0

=)8, 7)7? UIP)P?#

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 49

PIC18F4550

D+/D-

3;Placa do dispositivo tipo periférico

SIE

Program MemoryUSB RAM

Control Registers

Data RAMTransceiver

Regulador de3.3 V

Interface p/ Transceiver Externo

Streaming Parallel Port (DMA)

Bus Pull-Up Resistors

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 50

PIC18F4550

D+/D-

*

SIE

Transceiver

SIE ... Serializa e deserializa os

dados USB Codifica e decodifica dados

em NRZI Controla o bit stuffing Verifica o CRC p/ validar os

pacotes de dados Detecta eventos o

barramento e notifica a CPU atraves de interrupções

Controla as transações USB Controla o protocolo de

handshaking

Program MemoryUSB RAM

Control Registers

Data RAM

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 51

* J 3; 2

48=6H K"32 ,%

000h

Dados da USB ouDados do Usuário

Não usado

SFRs

3FFh

400h

7FFh

F60h

FFFh

Dados do Usuário

2048 bytes de RAM Total

Mecanismo de semáforo de 1-bit SIE v.s. CPU

48=6H K"3*

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 52

&Q

Necessário p/ USB

SIEFS: 48 MHzLS: 6 MHz

CPU

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 53

PIC18F4550

G &* &Q

SIE

20 MHz EC Divide p/ 5 96 MHz PLL

Divide by 2

Divide p/ 2

PIC®

MCU Core

Aceita SOMENTE 4 MHz de Entrada!

SIE Clock = 48 MHz : Full-Speed Mode

48 MHz : 12 MIPs

Placa do dispositivo tipo periférico

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 54

%&45-6778K

&=)8

,@4)73>A,@4=3>A

1 DDQD+

.P=

4SK"32 ,%>

0 **

K,> + 2O 2,

G

*% %@%%A> 1 *@6866A

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 55

"* + ,- - , 0+

& "# & / 0 1 0 $ - 2

3%&45-6778 %&2 39 -,:3+

-

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 56

Hardware - Dual Port Ram, USB SFRs

3+- Q

Mass Storage HIDCommunication

(RS-232 Emulation)

User Application

SD Disk (SPI)

File System (FAT)

USB Driver & Chapter 9 Firmware

Secure Digital Card

2( T3+ 2( T3+

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 57

& / 3+-

& /&45 2%3%E"' 2 # * 3,0 Q* @

# A 3; %*

2:& <, =S 2 4S &2&@ K,=P=A 4S 3 * 6S

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 58

M -

_output autofiles

hid msd cdc

class usb9

usb

FAT

filesys

SD CF

disks

system user

Project Root Directory

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 59

"

USB Firmware

Auto Generated

Fixed Firmware

Microchip USB Wizard Program

User Firmware

HEX

Compile & Link

PIC18F4550

Program

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 60

3 Q*& Loop Principal

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 vs. 500 us

Máquina de estados

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 61

8I

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 62

)& 2&

EP15

PIC18F4550

Control Transfer(SETUP,OUT, IN)

...

EP1

EP0

InterruptBulk

Isochronous(OUT, IN)

Chapter9

Device Class

UserApplication

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 63

# V

2 &2& K,=P= M % 32

))V

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 64

2@2A

PC ComputerPIC®

Cabo USB

HID AppHID\Mouse Drivers Padrão do Windows

Considerações de projeto:Considerações de projeto: 64 KB/s max64 KB/s max Transferências Tipo Interrupt Transferências Tipo Interrupt Driver Padrão do WindowsDriver Padrão do Windows So aplicações PC “custom” podem acessar os So aplicações PC “custom” podem acessar os dados do HID através das APIs Win32dados do HID através das APIs Win32

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 65

&2&, K,=P=

PC ComputerPIC®

Cabo USB

Hyper TerminalCDC

Precisa do Arquivo INF

Drivers Padrão do Windows

Considerações de projeto:Considerações de projeto: ~80 KB/s max~80 KB/s max Funciona bem no XP, desempenho limitado no Funciona bem no XP, desempenho limitado no 2000 e sem suporte para o 98 (no USB.org tem 2000 e sem suporte para o 98 (no USB.org tem algums drives)algums drives) Aplicativos PC podem acessar o dispositivo como Aplicativos PC podem acessar o dispositivo como se estivesse conectado a uma porta serial.se estivesse conectado a uma porta serial.

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 66

& +*

HyperTerminal

Driver da UART

Hardware UART

Hardware UART

APIs da UART

Aplicação em Firmware

RS-232

HyperTerminal

Driver da UART

Hardware USB

Hardware USB

APIs USB UART

Aplicação em Firmware

USB

Driver CDC

PIC18F4550

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 67

2 T=888T'W%

&2& #) ) D J T)

.B #) G)

G #);X&2&K,=P= K%Y J ;Z U[[&2&[

"B,D#, ?2%2 D # # $ )# )

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 68

"% &2&

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

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 69

2 $ "%

?1 + # V

J K3K"3V

"* . @ 8G88AV

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 70

G-G%*

Reset main InitializeSystem

MainLoop

user.cExercise_01();Exercise_02();

USBTasks()

ProcessIO()

main.cUSBDriverService();

CDCTxService();…

Multitasking Cooperativo!!

SEM funções bloqueadoras.

Use máquinas de estado.

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 71

"%> :K3

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’ p/ literal e dados em ROM

Examplo de Uso :putrsUSBUSART(“Hello”);

ouputrsUSBUSART(welcome);

onderom char welcome[]=(“Bye”);

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 72

G4 void Exercise_01(void)

if(Switch2IsPressed())

if(mUSBUSARTIsTxTrfReady())

putrsUSBUSART(“Hello World!\r\n”);

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 73

G/=)= K3

/),Exercise_02()

/"=$),9"$+=$DJ.K$F<89&"L

)*M7

– BOOL Switch3IsPressed(void);

– BOOL mUSBUSARTIsTxTrfReady(void) 7putrsUSBUSART(…)

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 74

G= K3rom const ex02_string “USB e Microchip”;...void Exercise_02(void)

if(Switch3IsPressed())

if(mUSBUSARTIsTxTrfReady())

putrsUSBUSART(ex02_string);

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 75

"%>

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 dados esperados

buffer = ponteiro para o buffer de tamanho >= a len

getsUSBUSART retorna o número de bytes copiados para o buffer

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 76

G/=)PK

/),Exercise_03()

/"=$),9N 3/%%19$G8 OP.JL

)*M?"C"7

– input_buffer[];

– mLED_4_Toggle();

7getsUSBUSART(…)

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 77

GP void Exercise_03(void)

if(getsUSBUSART(input_buffer, 1))

if(input_buffer[0] == ‘1’)

mLED_4_Toggle();

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 78

"% +

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 p/ dados armazendado na memória de

programa

Use mUSBUSARTTxRam p/ dados armazendado na memória de dados

255-bytes no máximo

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 79

G=)6*,

G#&Exercise_01() ProcessIO()

/),Exercise_04() /"=$),9"$1E7.JL.#.JL#.JL#.JLL9&"

)*M?"C"7– Switch2IsPressed();– BOOL mUSBUSARTIsTxTrfReady(void)– output_buffer[]; .7mUSBUSARTTxRam(…)

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 80

G6 @8G88A

void Exercise_04(void)

if(Switch2IsPressed())

if(mUSBUSARTIsTxTrfReady())

output_buffer[0]=0x30;output_buffer[1]=0x31;output_buffer[2]=0x32;output_buffer[3]=0x33;mUSBUSARTTxRam((byte*)output_buffer,4);

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 81

"% K"3

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 na RAM

Exemplo de Uso : putsUSBUSART(output_buffer);

ondechar output_buffer[]=(“Microchip”);

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 82

G/=)72 0

/),Exercise_05()

'$"G(Q!9$""

$)*Exercise_05()

• Use mUSBUSARTIsTxTrfReady()

• Use putsUSBUSART(...)

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 83

#B ;*V

Ele não verifica:if(mUSBUSARTIsTxTrfReady())

void Exercise_XX(void)

putrsUSBUSART(“Hello World!”);

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 84

#B ;*V

Resposta:Função

bloqueadora! Não é boa para

multitasking cooperativo.

CDCTxService() em USBTasks() nunca será chamada, e

cdc_trf_state nunca será atualizado.

O Programa irá travar em um loop.

Lembre-se, use uma máquina de

estados!

void Exercise_XX(void)

while(!mUSBUSARTIsTxTrfReady());

putrsUSBUSART(“Hello World!”);

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 85

G7void Exercise_05(void)

static word ex05_count;

if(ex05_count == 0)

AcquireTemperature();

UpdateCelsiusASCII();

if(mUSBUSARTIsTxTrfReady())

putsUSBUSART(tempString);

ex05_count = 10000;

else

ex05_count--;

//end Exercise_05

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 86

\

]] &2&]0W]K "2 &2&]0W]^ &2&]0W] ]LE% &2&]0W]&3%E 0(M

_ + "%# +D, #]] II&2&]0W]K "2

– BOOL mUSBUSARTIsTxTrfReady(void);

Returna ‘1’ quando o estado é CDC_TX_READY

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 87

" G/

H

01.2R5.2E

C9(LG(Q

/),,!" 49,B

&&B&4

=<$7-L2

GS GS@07$$G (LG(Q4& <84

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 88

3 *2@32A

PC ComputerPIC®

Cabo USB

Windows ExplorerMSD Drivers Padrão do Windows

Considerações de projeto :Considerações de projeto : Funciona como um disk driveFunciona como um disk drive Rápida transferência de dados através da USBRápida transferência de dados através da USB Velocidade é limitada dependendo do tipo de Velocidade é limitada dependendo do tipo de

midia físicamidia física Para se utilizável, O sistema de arquivos deve se Para se utilizável, O sistema de arquivos deve se implementado em firmwareimplementado em firmware

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 89

0/ " 32

Seu Aplicativo

Abrir, Salvar, Ler, Escrever, Deletar

File System

Driver USB Mass Storage

Driver USB Bus

Hardware USB Host

PIC18F4550USB Physical

Interface

USB Chapter 9 Firmware

Mass Storage Driver Firmware

Physical Disk Driver Firmware (Shared)

Seu Aplicativo

Secure Digital, Compact Flash,

etc.

File System Firmware

PC USB Peripheral

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 90

2M %

PC ComputerPIC®

Cabo USB

MCHPUSB.sys

Somente Binário

MPUSBAPI.dll

Fonte e binário

Boot

DemoPDFSUSB.exe

Binary OnlyOther C++ Examples

Source and Binary

Considerações de projeto:Considerações de projeto: ~1,088 KB/s max~1,088 KB/s max Muito flexivelMuito flexivel Não é um driver padrão do WindowsNão é um driver padrão do Windows Programação no PC é necessáriaProgramação no PC é necessária

3%"%)2EE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 92

Host

Client Software

USB Host Controller/Hub

(Hardware)

Cabo USB

Dispositivousando

PIC18F4550

Host

3%"%)2EE

USB System Software

(USB Driver, Host Controller Driver)

Aplicações de usuários

Win32 Subsystem & DLLs de usuários

Software Cliente

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 93

Host

Software Cliente

USB Host Controller/Hub

(Hardware)

Cabo USB

Dispositivo usando

PIC18F4550

Host

3%"%)2EE

USB System Software

(USB Driver, Host Controller Driver)

Aplicações de usuários

Win32 Subsystem & User DLLsMPUSBAPI.DLL

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 94

, 3%"%)2EE

2EE, 2H EQE H &;* +)H

$ +)H %$ %

QD+ "$+

?&OOD&D?)( 0 )

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 95

2EE

#. V XEQ *Y B XEQ *Y2\

XEQ *YE , XEQ *YK,

2EE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 96

2EE 2EE

2EE =

XEQ *YE ,0

XEQ *YK,0

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 97

2EE 2EE

XEQ *YE ,0@ #)EA

_ 2EE. 2EE #)E.* )

_ # 2EE " - 2EE@"#)A

# " #)E #

%

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 98

2EE 2EE

XEQ *YK,0 & + GD.# 2EE

* G TP="%

(0"(& E E H@E%&00K Aa & * 2EE ;

-"K%K&M%"@32E DE%&T0K Aa K

E-E H@32E Aa K ;

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 99

3%"%)2EE

<< %H %S/),"

Q$"7

<$ TK%/H 8/8;GS>/

<+)* ' =$!

<""%M. @K DTDD&A

%!"$=7 [3&%-[%[3 [2[ ]&

8=$7 [3&%-[%[3 [2[ ]&[

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 100

3%"%)2EE

%XQ Y ,, % XQ *Y ,

:K& % XQ *Y,

33E?><G &

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 101

-$ 3%"%)2EE

Sete Funções simples

MPUSBOpen( .. )MPUSBClose( .. )

MPUSBReadInt( .. )MPUSBRead( .. )MPUSBWrite( .. )

VID & PID

MPUSBGetDeviceCount(..)

MPUSBGetDLLVersion( .. )

VID & PID

2 $ 3%"%)2EE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 103

Load-time Linking

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 104

XEQ *YE , 3%"%)2EE

XQ Y3%"%)2EE ,+ 2EE

& 3%"%)2EE XQ *Y & &+ 2EEXQ Y@3%M2&A

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 105

-$

2TK23%M2EE?@A 2EE ?

TK2@? A 3 ? ETK2@? A 3?

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 106

-$

2TK23%M2&@%&"K?2]%2Aa

%2?2 "*

?2]%2 ?2:%2* ?

( %2:?2

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 107

-$ "(2E 3%@2TK2 D>>

%&"K?2]%2D>>%&"K %D>>2TK22D>>2TK2KAa>>Z-U

+ H %K< % /< )

+ .,+ 2 ,

3%]K "2 3%]TK0

? (?"E2]"(2E ]?"E

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 108

-$

3% ?2]%2

0 * - b]GGGG:]HHHHX GGGG. ?2 W" HHHH. %2 W"

% 0 * - b[[3&%] %Jb

(0" % 3%K @AD %

b[[3&%] %J]" (&b

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 109

-$ 2TK23%K @ "(2E + D>>

%?22 D>>2TK2ED>>%2TK2E*+D>>2TK23Aa>>

E,(+ "*

,( 2 E*+ (!H E*+ (!H 3 %/ @HA

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 110

-$

2TK23%T@"(2E + D>>%?22 D>>2TK2ED>>%2TK2E*+D>>2TK23Aa>>

,0 2 "*

,0 2 E (!H E*+ (!H 3 %/ @HA

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 111

-$

2TK23%K @"(2E + D>>%?22 D>>2TK2ED>>%2TK2E*+D>>2TK23Aa>>

E,(+ " B+ 3%K @A#

"*

,( 2 @ HA E*+ (!H E*+ (!H 3 %/ @HA

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 112

-$

E3%&@"(2E + Aa -+ + "*

,

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 113

"* &

.%& % 0 2

" &+ 0 &+ 3%T

% K2 " &+ 3%K

-+ #

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 114

0

# *

?# ? B

3%]&& D3%]-"E (?"E2]"(2E ]?"E ME @A

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 115

ME "*;*

KKK](?"E2]"(2E KKK]"(2E ] - KKK]]% (2(M KKK]&& KKK]-E ](0]-(2 KKK]"&& ]2 ( 2 EQ

+>>))> H> ) VI> H>,>*> >H]])

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 116

Run-time Linking

T3]2 ?& &"(M

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 118

T

T.* (

#

M G

T3]&33"(2DT3]%"(0 T3]2 ?& &"(M

% $M

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 119

2 $ TP="%

TP="%

H%, T3

K* c % "%K*& T(2&E"

& c % "%& T

3 *E

WinMainWinMain

Chama RegisterClassChama RegisterClass(Registra a (Registra a

Main Window Class ,Main Window Class ,Event Handler)Event Handler)

Chama CreateWindowChama CreateWindow(Cria a Main Window)(Cria a Main Window)

Recebe Messagem (OS Event)Recebe Messagem (OS Event)

Invoca o Event HandlerInvoca o Event Handler

Exit ApplicationExit Application

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 120

, T%

2 * T3 * - XT%@AY. 3 T

%;EK E0&"EE"&ST%@T(2+TD**DTK2% DE(M% A

! 3 * "# /

3 *

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 121

T3]2 ?& &"(M ( * >T T * . T<;TS%&T#$$#T'(%4<#3'S>< $ T ! T3]2 ?& &"(M " #

20]2 ?& "KK?"E 20]2 ?(2 ]&"(M 2 20]&(-M&"(M &"(& E 2 20]&(-M&"(M 2)))

% & #.

& &

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 122

T3]2 ?& &"(M ( $

20]&(-M&"(M &"(& E 2 8G884< # * @Q

QA 20]&(-M&"(M 2

8G8845"* D QQ

20]&03 ? (0 8G588N J @A) T(06)8T<7 .

20]2 ?& "KK?"E 8G5888 /

/ *

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 123

T3]2 ?& &"(M ( $

20]2 ?& _ K K 3? 8G5884d#

/ a# # * #

20]2 ?& _ K K 3? -"E 2 8G588= #

/ ) 20]2 ?& K 3? &3%E 0

8G5886 / ) 20]2 ?& K 3? % (2(M

8G588P / a#*

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 124

T3]2 ?& &"(M (

20]2 ?& 0 % % &-& 8G5887

20]2 ?(2 ]&"(M 2 8G888e

T(06)8 T3><5><7 .

20]_ K &"(M &(-M

8G884eK#, * @QQA

20] K2 -( 2 8G----* *.

B

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 125

G &

;* G &T3]2 ?& &"(M &OO%*

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 126

G6, 2

WM_DEVICECHANGE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 127

3 $ #(-

$B3&%)(- f2Eg

h2 &K%0(hI2 D[?2]8625:%2]888D[?2]8625:%2]888&

f*g( -0IbT H b3-M("3 Ib3+0+*HD)b(02SIb3+0+*HD) 2b2 &K%0(Ib%&45-6778- H2b

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 128

H

T

& &2 ?22

"#3&%) ?22J

"#(- ""% 3%"%)2EE. *

3&%) " $T

3%"%)2EE "3%"%)2EE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 129

3%"%)2EE K "%

(3%T+ 0

(3%K + (

3%TQ,0

3%K Q, (

3%T 0

3%K D3%K

,(

0,. BV

-$0 1

3 *

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 131

"*

"& 3 * Q,H,0 @0A% 2* @2A& 048&& @%&,PD&,=A "0 +

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 132

"*

"& 3 * Q,H,0 @0A% 2* @2A& 048&& @%&,PD&,=A "0 +

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 133

"& 3 *

K3 * G;*

G;* & 3 *

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 134

K 3 *

320 1 "#

Q,H0 & 1 )@& 2 A

&& E )

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 135

K@&)A

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 136

&% H& @%&A &Q& @&A

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 137

&;*%

2, %

X 1 J Y

% & Q88+&+84+&+78+3&0

8=+, 6-+K74+, --+K

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 138

&

2, &

X J & 3 *Y

& & Q84+K&8=+"0"%D33&,=8P+"0"%,0"% 86+-87+--,58e8-228N+&

8e+, --+K

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 139

&;* G22

>i22i> ]2 ?]2&]I j J@]2 ?]2&AD>>0 +2

H 2&]2 ?D>>0@2A 8G8=88D>>( )

&2 8G88D>>& & 8G88D>> 8G88D>>% %8]--]L D>>0 + G

%8D *)+ 8G8625D>>?2 8G888<D>>%2 *

8G8884D>>% 8G84D>>3 *G 8G8=D>>%*G 8G88D>>2 *G 8G84>>(* ka

Device Descriptor

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 140

&;* G&* 42

>i&* 42i> &-M84Ij >i&* 2i> J@]&-M]2&AD>>0 +

2&]&-MD>>0

@&*)A J@*84AD>>(

) 4D>>(

]2 -"E0l] E-D>>"D

]])+ 78D>>%

@=W"A

Device Descriptor

Configuration 1 Descriptor

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 141

&;* G 2

>i 2i> J@](0-]2&AD>>0 +

2) 2&](0-D>>0

@ A 8D>>

=D >>(

32](0-D >>&

32](0-]&E"D>>

32]%K0&ED >>

% 8D>>G

*)

Device Descriptor

Configuration 1 Descriptor

Interface Descriptor

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 142

&;* G 2

>i 2i>J@] %]2&AD2&] %D] %84](D]ESD32](] %]L D8G88D

J@] %]2&AD2&] %D] %84]0D]ESD32]0] %]L D8G88

ka

Device Descriptor

Configuration 1 Descriptor

Interface Descriptor

Endpoint Descriptor

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 143

&;* G*2

jHE*+aH20Ha*f4gak888IjJ@888AD2&]0KD8G868<ka

jHE*+aH20Ha*f=7gak884IjJ@884AD2&]0KD

m3mDmmDmmDmmDmmDmmDm+mDmmDmmDmmDm0mDmmDmmDm+mDmmDmmDmmDmmDm*mDmHmDmmDmmDmmDmmDm)mka

jHE*+aH20Ha*f=5gak88=IjJ@88=AD2&]0KD

m3mDmmDmmDmmDmmDmmDm+mDmmDmmDmmDm3mDm mDmmDmmDmmDmmDmmDmmDmmDm mDm*mDmmDmmDm2mDmmDmmDmmDmmka

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 144

"*

"& 3 * Q,H,0 @0A% 2* @2A& 048&& @%&,PD&,=A "0 +

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 145

%QH0 @0A

K & / - %& D 0 1 , -G* %0 &;* G

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 146

%QH0 @0A

K & / - %& D 0 1 , -G* %0 &;* G

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 147

K

0* 0 1 0Q

& D %0Q@&A

D +

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 148

K @&)A

& QT @&TA/)*

& T @&TA/<8 T

2 , N";

2 , N;<"

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 149

%QH0 @0A

K & / - %& D 0 1 , -G* % %0 &;* G

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 150

& / - @& ,#A

< +),%$C9;""#J7

S....& ....&&&

2 E*+G? K#K#0H

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 151

& / - @& ,#A

M3 GE( '"SH

E...& ....&/&G&

2 E*+G? K#K#0H

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 152

& / - @& ,#A

M3 GE'"03=$#3S.3S&

';+<),

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 153

&;*G& K#

&+Q32K#@Aj

+@%Q)K#Aj

32]K 0]]]I32]32a2 %447@Aa>>)+@ %4) %0"EEII4Aj

%4) %0"EEI8a32 %@Aa

kK)0"EE-I8a

Qa M 0]3"W]E(

]]]I32]32a&02 )]Hf8gI3"W]E(a&)I4a)K I@*+ iA:&02 a] )]]I]K"3a Qa

k >>+@%Q)K#Ak

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 154

%QH0 @0A

K & / - %& D 0 1 , -G* %0 &;* G

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 155

%& D

Pronto

Transporte de comando(CBW)

Transporte de Status(CSW)

Dado para o Device

Dado ParaO Host

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 156

%& D

Command Block Wrapper (CBW)

dCBWSignature

dCBWTag

dCBWDataTransferLength

bmCBWFlags

bCBWLUN

bCBWCBLength

CBWCB

Dir.

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 157

%& D

'<8 TC),#;"""!Q BUQ&8 TJL E

'%"#$),G82&

8<8 T,IH#"$),3&

;),3& #("

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 158

%& D2

'&JE ),

'=99N&$

'"99#$),

Dir.Dir.

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 159

%& D2

Command Status Wrapper (CSW)

bCSWSignature

dCSWTag

dCSWDataResidue

bCSWStatus

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 160

& ,2 , %

Q, % #G 4PH

G& &T

&T2 K

Status

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 161

%QH0 @0A

K & / - %& D 0 1 , -G* %0 &;* G

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 162

0 1 ,

&T?B*

&T?B*

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 163

&;*G &T?

H? &T@Aj@@*&TE*+RI32]&T]L All

@*&T)&T* RI8G6P6=7P77AA

-"E a0K a

k

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 164

&;*G&T*

H3 *&T@Aj

>iP&T&E*+ 8Di6&TE( 8i &T&E*+4 4Ni&T- *H 8i>@@*&T)&TE(ZI8G8A::

@*&T)&T&E*+ZI8G48A::@*&T)&T&E*+UI8G84A::@*&T)&T- *II8G88l*&T)&T- *II8G58AA0K a

-"E a

k

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 165

%QH0 @0A

K & / - %& D 0 1 , -G* %0 &;* G

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 166

-G* %0Comando

Cópia CBW paragblCBW

CBWé Valido?

CBWSignificativo?

Prepara CSWdCSWTag,

dCSWSignature

Dir. Bit=1?

Set MSD_State = MSD_DATA_IN

Decodifica e Processa “CBWCB”

MSDCommandHandler()

USBBufferReady(MSD_BD_OUT)

USBDriverService()

Return

Set MSD_State= MSD_DATA_OUT

A

A

Não

NãoNão

Sim

SimSim

Sim

Não

A

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 167

"*

"& 3 * Q,H,0 @0A% 2* @2A& 048&& @%&,PD&,=A "0 +

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 168

(2

0+* H+ + @b bAH+2& " +2M)0+ +2 ++H+2& " +2M)0+ , + )"H + H# +2& " D2MD2,P&EE&++ )

2 0+ + H 2& 2>" H b",b+ H HQ)(H H+2MD2,P&EE&+2& " H *D H* +*++2MD2,P&EE&D+2& " H+ D++ H)(* H D+ H +*++2MD2,P&EE&D+2& " H+ H)(+*++ * H+2MD+2,P&EE&+2& " H+ DQ,++ H+ H)

" 2

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 169

& 3; 2& - V

2& % 2& & % + 23H& J

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 170

2%

2& @ AK 2"2@ A

&32

2"0

Do Device para o Cartão

Do cartão para o Host

Operação (No Response) Operação(No Data)

Inicializado pelo start bit

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 171

%%

% *2& 8&+ 832Q % %' /

DataOut

Clock

DataIn Chip Select (Logic Low)

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 172

%%

%2 >& 5

& ,K ,2

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 173

23H& &

23H& &

,,8G888G78QE*+

5& D8W- ,8G888G75TQ

,8G- 8G888G74K Q

,,8G888G64*

,,8G848G68 J &

2 0Q0G)

2 0QK)

KHH&&

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 174

% +

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 175

J 2&

& &+8 J "* Q @E A&Q@ A

0 >H K&K& & &+4 5& G

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 176

2& -"0

3KD-"04D-"0=DK2HD n

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 177

"*

"& 3 * Q,H,0 @0A% 2* @2A& 048&& @%&,PD&,=A "0 +

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 178

%&,P &,=&

& %&,P&,=K 48T48K & H?H480K H#H

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 179

&& 2

K 48 & K# )

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 180

K 48

32& @Ajo+@*&T)&T&f8gAj K "2]48

32K @Aa Qa

ok>>+

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 181

32K @A32K @Ajo

+@0 E*+)]U8Aj

0 E*+)],,a >>+ 4E" IK @E")]D@HiA:]f8gAaE")]OOa>> +GE"@ II? Aj])&T I8G88a >>])&T2 KIE&SE (]74=a>>+74=H

(G2 I@HiA:]f8ga+@])&T2 KU8A322 @Aa>>+ ])&T2 KI8G8a >>Gkj

])&T I8G84a >> 8G84K *p45>>0 >i2m H i>])&T2 KI8G8a

Qa >> Q+ok

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 182

&& 2

T48 & )

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 183

T48

32& @Ajo+@*&T)&T&f8gAj TK0 ]48

32T @Aa Qa

o k>>+

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 184

32T @A

32T @Ajo)

+@0 E*+)]U8Aj])&T2 KIE&SE (]74=a>iK 74=]i>+@])&T2 KU8A

322 @Aa@T%@AAj

*2 )SHI](0]K "2 a*2 )"&I"&]TK0 ]%K0 &0 2a*2 )"&_I"&_]TK0 ]%K0 &0 2a])&T I8G84a

kj IT@@E")]AD

@HiA:]f8gAak

ok

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 185

"*

"& 3 * Q,H,0 @0A% 2* @2A& 048&& @%&,PD&,=A "0 +

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 186

"0 +

32)&2&"K2)& * J 3; 32 32- Q

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 187

32)&

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 188

2&"K2)&

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 189

* J 3;

ACCESSBANK NAME=accessram START=0x0 END=0x5FDATABANK NAME=gpr0 START=0x60 END=0xFFDATABANK NAME=gpr1 START=0x100 END=0x1FFDATABANK NAME=gpr2 START=0x200 END=0x2FFDATABANK NAME=gpr3 START=0x300 END=0x3FF

DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTEDDATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED// Combine usb6 and usb7 banks to define a 512 byte msd bank ...............................//DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED//DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTEDDATABANK NAME=msd START=0x600 END=0x7FF PROTECTED

3 EQ

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 190

32

#if defined(USB_USE_MSD)volatile far USB_MSD_CBW msd_cbw;volatile far USB_MSD_CSW msd_csw;#pragma udata myMSD=0x600volatile far char msd_buffer[512];#endif

))[32[H[[ )

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 191

""#

InitializeSystem()while(1)

main.c

USBDriverService()

usbdrv.c

USBCtrlEPService()

usbctrltrf.c

usbdsc.c

USBCheckStdRequest()

USBStdSetCfgHandler()

usb9.c

MSDInitEP()USBCheckMSDRequest()

SDCardInit()ProcessIO()

MSDCommandHandler()

MSDReadHandler()

MSDWriteHandler()

MSDReadCapacityHandler()

msd.c

SocketInitialize()MediaInitialize()

SECTORread()

SECTORwrite()

CSDread()

sdcard.c

- / -

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 193

%&45-6778:%&4N&eW7K /

Features 18F4550 16C7X5 On-chip USB XCVR & Voltage

Regulator Yes Yes

USB Dual-Port RAM 1-Kbyte 64-byte

USB Speed Low & Full Low

On-chip Pull-up Resistors Yes No

External XCVR Interface Yes No

Streaming Parallel Port Yes No

System Clock Flexible Fixed

Endpoints 32 6

Flash Yes No

USB Transfer Types Control,

Interrupt, Bulk, Isochronous

Control, Interrupt

Pins Compatible? Yes

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 194

PIC16C765PIC16C765LS 1.1LS 1.1

%&' 3&K

PIC16C745PIC16C745LS 1.1LS 1.1

2828 40/4440/44 6464 8080

PIC18F4550PIC18F4550FS 2.0FS 2.0

PIC18F66J50PIC18F66J50FS 2.0FS 2.0

PIC18F67J50PIC18F67J50FS 2.0FS 2.0

32K32K

16K16K

128K128K

In productionIn production

In developmentIn development

PIC18F87J50PIC18F87J50FS 2.0FS 2.0

64K64K

24K24K

PIC18F2550PIC18F2550FS 2.0FS 2.0

PIC18F2455PIC18F2455FS 2.0FS 2.0

PIC18F4455PIC18F4455FS 2.0FS 2.0

PIC18F86J50PIC18F86J50FS 2.0FS 2.0

pinpin

PIC18F2450PIC18F2450FS 2.0FS 2.0

PIC18F4450PIC18F4450FS 2.0FS 2.0

ConceptConcept ConceptConcept

ConceptConcept

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 195

%&2 3032 -,

%&45-6778D=83J- % % %& 92 *+

&

%&45-6778D=83J- % % %& 92 *+

&

%E 2 % 0

%E 2 % 0

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 196

%& 92 *+ 233&

Interface para cartão Secure Digital - usa SPI AC164122 AN1003: USB Mass Storage

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 197

%

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 198

K

22- +>>))*>+> +>>)+)>) VI48=

? )+)> 2*&U&HU "(<78@A"(<7N@&2&A"(488P@32A

&P Hc "G

+>>)H*)*>+> +>>))>)+

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 199

K1

&;* 3%"%)2EE +>>)) +>>)+) +>>)+) +>>))

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 200

%* V

"#3 * R

"1"1

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 203

& (KL

Idle 0 1 1 0 1 0 1

NRZI

DFRS8&$"

D.FR8&$"

DFRS8&$"

D.FR8&$"

0 1 1 1 1 1 1 0

Bit Stuffing: Every six consecutive “1”, a “0” is inserted - This ensure adequate signal

transitions

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 204

E +

'&N"4

Q&RQ&J

Low Speed

Full Speed

Control 8Interrupt <= 8Control 8, 16, 32, 64Interrupt <= 64Bulk 8, 16, 32, 64Isochronous <= 1023

Tipo de Transfer. Max tam. Bytes

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 205

0 1 &

0 1 &! $)G. G)

Transação USB

SETUP Token Packet Data Packet Handshake Packet

Transação USB

IN Token Packet Data Packet Handshake Packet

Transação USB

OUT Token Packet Handshake PacketZero Data Packet

Setup

Data(Read)

Status

EtapasControl Transfer

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 206

&0

SETUP Token Packet Data Packet Handshake Packet

IN Token Packet Data Packet Handshake Packet

OUT Token Packet Handshake Packet

O dado nesta etapa é uma mensagem USB de formato requisitando que o device faça uma certa tarefa USB como Set Device Address, Get Descriptor, etc.

USB Transaction

USB Transaction

USB Transaction

Zero Data Packet

Setup

Data(Read)

Status

Control TransferStages

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 207

&0

SETUP Token Packet Data Packet Handshake Packet

IN Token Packet Data Packet Handshake Packet

OUT Token Packet Handshake Packet

Se for requisitado um Get Descriptor, os dados nesta etapa devem ser o descriptors do device.

USB Transaction

USB Transaction

USB Transaction

Zero Data Packet

Setup

Data(Read)

Status

Control TransferStages

"1222EE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 209

22**

&+ 22QH+T

3&0

* - K&0 K "*3qE

2

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 210

%(, % +

% +0+3%"%)2EE+ +H ++H

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 211

%( 3%"%)E

0+3%"%)E H &OO

0+?&OO Q* & 2EE3%"%)2EE

?&OO "+3%"%)2EE+

3 Q *H + )E )2EE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 212

" %3%"%)E

3%"%)2EE. ] ?N)8?)( 0

% ?N)8 XKY 2EE +

]

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 213

& 2

& .* D

"& 2 2&

G, 2D&2&D32)) &&

3+M2

2& @& 2A # # ## .+ & 2

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 214

TK*H

2 J $/ #(-K*T

$ J *

"* +K* $ S ]E&"E]3"&( [ [ S ]E&"E]3"&( [H[&&[

[&

? J .! %& !'(%&

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 215

?$

( & 2

"* J 2&

,- $ 2&

B #- & 2 Q $

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 216

3+M %22

& #. $

&E #.B3+22

& &.;*&0E "%TP=2&@A

"G 3&%-]) W # * + &[3&%-[%[3&%2[K

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 217

3&%)(-

3&%)(- & +

T #(- 23 * #(-

#(-

% $

% J $ #

"#(-G @3&%)(-A

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 218

& "

% " &@3 ,U%* ,U &OO

,U&OONA 0-,U(,U+ &TJ &#Q H &OOK &+Q Q

H% &#SD #&OO. "@XTRYA @A

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 219

& " T

% " &@3 ,U%* ,U &OO

,U&OONA 0-,U( . " D1#

"3 *G@8DYYD8D8Aa G &# #

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 220

&OO

?&OO? &. ?&OOD?

3 0P

2EE . "%TP= ? 1 2 &E"K

$2EE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 221

2H EQE

#1. E H@V XEQ *Y B XEQ *Y2\

XEQ *YE , XEQ *YK,

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 222

XEQ *Y B

#.XEQ *Y B & V

E XQ Y XQ *Y*

LinkerLinker

LibraryLibrary

LibraryLibrary

Arquivos Arquivos ObjetoObjeto

Arquivo Arquivo EXEEXE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 223

XEQ *Y B

2 * + " $# 2 2 ;* ;

_ G ! \ , .

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 224

XEQ *Y2\

XQ *YB

E XQ YG

LinkerLinker(Copies only (Copies only the reference the reference information information into the EXE)into the EXE)

EXE FileEXE File

LibraryLibrary

LibraryLibrary

Object Object FilesFiles

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 225

XEQ *Y2\

/ " J D

+J XQ *YB

" ; ;

&J +J ; /

3 J /

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 226

XEQ *Y2\ :2EE

2EE, E #XQ Y G+ 2H EQE

"G 2H EQE T.2EE

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 227

2EE

%33,""""T4 8 #H8VV

%33 /J!"E 9"%/J),!J

WI%33,H8VV# 8 9"%/,

© 2006 Microchip Masters Brasil 2006 USB – Implementação de Hardware e Software 228

0 Q

0+3+ *D +3+*D "D %&D SE#D 2D3%E"D%&D %&D%&0"K0D%K3"0 D % D %& + * Q 3+0+*H + ))") +)

"E D -E D 3* 3HD3W2 ?D3WE"D ?"ED 0+ && H * Q 3+0+*H + ))")

" *,,+,2* "*D " 3 D %&2 3D %&2 3)D %&QD &"(D &(3(0KD - D -GK3D JJHE"D,& %* *D&%D& %&DE "0+D 3D 3TD3%"3D3%ED3%E(SD3%3D %&QD%&2 3D%&2 3)D%&E"D %& D %& D%D %3 D %0DK "E& D E"D %&2 3D 3D D 0D0 D(>D TEQ L (" Q 3+0+*H + ))") +)

_0% Q3+0+*H + ))")

"+ Q+ H+ )

top related