! " # $ " %& '
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
2
(%&))) Mas o PC estava só, entao en tao criou-s criou-se e a Seria Seriall e a Paralela
E EL ELE viu viu que era bom om.. ....
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
3
Enta tao o veio AQUELE homem com suas janelas… A interface USB se torn to rnou ou pa padr drao ao… … E um um per perio iodo do de treva trevas s se suc suced edeu eu..
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
4
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
5
"* +, -, ".
& "# & / 01 0$ - 2
3%&45-6778 %&239-,:3+ -
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
6
#+;))) ,*
&# 3 (&
4<<5, 4)4 =888, =)8
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
7
-@,-A +>>))*
?2@?2A (B) +>>))*>>> C4D788 %0.:E*;?2 %2@%2A (
0 % *) F C4D788
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
8
"* +, -, 0+
& "# & / 01 0$ - 2
3%&45-6778 %&239-,:3+ -
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
9
Computador é ótimo: Poder de processamento!
Aplicação embarcada
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
Serial Paralela PS/2
• Três velocidades : Low- 1.5, Full- 12, High- 480 Megabits/segundo
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
10
& :? Não precisa suportar High Speed para ter conformidade com USB 2.0
1394-Fire Wire Ethernet WiFi (b/g)
USB 2.0 LS-USB 1.5 Mb/s CAN
HS-USB 480 Mb/s
USB 1.1
Porta Serial 500Kb/s
FS-USB 12 Mb/s
Porta Paralela 1Mb/s
© 2006 Microchip Masters Brasil 2006
1.5Mb/s
12Mb/s
100Mb/s 480Mb/s 1Gb
USB – Implementação de Hardware e Software
11
33 3
-"0
!"# $ %"& '"& ()* +,-. /012
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
12
%;G33 30 34 562
-"0 !"#), ),7
15,H 48 I588H>*
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
13
%&+? PIC18F4550 Full-Speed & Low-Speed
PIC16C7X5 Somente Low-Speed
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
14
"* +, -, 0+
& "# & / 01 0$ - 2
3%&45-6778 %&239-,:3+ -
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
15
"+ Controlador USB Host & Hub Raiz Teclado
Falantes
Hub
Analisador Lógico
Hub
Hub: Máximo em cadeia =5
Hub Hub As MCUs PICmicro® com USB são periféricos!
Hub Logger de dados
Até 126 periféricos...
© 2006 Microchip Masters Brasil 2006
Hub
USB – Implementação de Hardware e Software
16
&*J*%+ Drive DVD Externo
Data Glove
Adaptador Ethernet
Hard Drive Externo
Mouse
Modem Joystick Classe Mass Storage Device (MSD) Teclado
Classe Communication Device (CDC)
ICD2
Classe Custom (Vendor Class) Classe Human Interface Device (HID)
© 2006 Microchip Masters Brasil 2006
Muito mais classes…. USB – Implementação de Hardware e Software
17
%+H
VBUS
VBUS
D+
D+
D-
D-
GND
GND
~ 3.3 V
&(KL@(KLA "
~ 5.0 V
6)68 , 7)=7 ? M488" (3G788"3G. *)
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
Deve usar alimentação externa se mais for necessário. 18
%" "BG. =)7" ( Cabo de alimentação da USB
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
VD D
19
%%* "BG. =)7" - Cabo de alimentação da USB
© 2006 Microchip Masters Brasil 2006
VD D
USB – Implementação de Hardware e Software
20
& Conector “A” USB Host
Conector “B” FS, HS Peripheral
Conector “mini-B” FS, HS Peripheral
Periférico LS Direto no cabo ou conector “custom”
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
21
"* +, -, 0+
& "# & / 01 0$ - 2
3%&45-6778 %&239-,:3+ -
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
22
%)* 8& 9)*:
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
23
001 2 ""#6B1 & * G
2 & Latencies Garantida
Integridade dos Dados Garantida
Interrupt Bulk Isochronous
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
24
G01
Mouse
Impressora
Falantes
Control + Interrupt
Control + Bulk
Control + Isochronous
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
25
1400
0G01 0;3BG0;% 1216
1200
1023
1000
KByte/s
832
800 600
Low
400
Full
200
24
0 Control
0.8
64
Interrupt
Bulk
Iso
Tipo de transferencia
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
26
%&+0 01 PIC18F4550 e familia Control, Interrupt, Bulk, Isochronous
PIC16C7X5 Somente Control e Interrupt
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
27
8;%" :
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
28
. “Reservatório” de Dados
Transação
RAM Endpoint 1 OUT
RAM Endpoint 1 IN
LED
Teclas
3BG!/ 4N0O4N(IP= %&45-6778.P= %8I&&% © 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
29
0
!" #
© 2006 Microchip Masters Brasil 2006
Específica: • O endereço do dispositivo alvo • O número Endpoint • A direção da transferência
USB – Implementação de Hardware e Software
30
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
31
0, ( !"
$
%
Acknowledge - ACK
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
32
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
33
0 , 0: 0%
$
%
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
34
0, 01+
$
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
35
%&+0 0Q SETUP
OUT
IN
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
36
-4 Start Of Frame SOF
Int EP1
SOF
1 ms
Int EP1
SOF
1 ms
Int EP1
Bulk EP2
Bulk Bulk EP2 EP2
1 ms
<=7>$ <7 & ? 7 87 B7
© 2006 Microchip Masters Brasil 2006
@.A .A# ' 9
USB – Implementação de Hardware e Software
37
"* +, -, 0+
& "# & / 01 0$ - 2
3%&45-6778 %&239-,:3+ -
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
38
%$$C D<$?<EF G%), ? G8$),
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
39
",2-, $1 !&'()*++,
. 232.
Identificação Full Speed: pull-up na linha D+
'3+Ω4+5 -+. $-
$/ 0"$
&
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
40
",2E, $1 !&'()*++,
. 232.
Identificação Low Speed: pull-up na linha D-
'3+Ω4+5 -+. $-
$/ 0"$
&
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
41
(RK%, R $1 !&'()*++,
VUSB 3.3 V Resistores de Pull-up internos! Controle pelo UCFG -+. & UCFG $-
Transceiver
$/ 0"$
&
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
42
%&' 3&2*"+ Alimentação separada Cabo de Alimentação USB
VD D I/O
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 pullup 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
43
8 HI8@. PIC18F4550 Dual-Port Ram Endpoint 0 OUT (Control Data)
Control Transfer
Endpoint 0 IN (Control Data)
Descriptors
Outros Endpoints Bus Reset
Set Address
© 2006 Microchip Masters Brasil 2006
Get Descriptor
Set Configuration
USB – Implementação de Hardware e Software
Device Ready 44
2 Device
String 0 String 1 String N
Configuration 1
P/ outras Configurations se houverem P/ outras interface se houverem
Interface 0
Endpoint
Interface 1
Endpoint
Endpoint
Endpoint
2J; B)(%&45-6778DJ ;+)
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
45
G2 String 0
Device
USB 2.0, VID = 0x04D8, PID = 0x0007, 1 Configuration, String 0
Configuration 1
Configuration #1, Bus-Powered, 100mA, 1 Interface
Interface 0
Interface #0, String 1
Endpoint
Endpoint 1 IN, Interrupt Transfer Type, 64-byte buffer, Poll every 10 ms
MCHP String 1
Vamos USB!
Characteres Unicode
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
46
"* +, -, 0+
& "# & / 01 0$ - 2
3%&45-6778 %&239-,:3+ -
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
47
-/%&45-6778 28-Pin
40/44-Pin
32 KB PIC18F2550 PIC18F4550 24 KB PIC18F2455 PIC18F4455 16 KB PIC18F2450 PIC18F4450 K"3 =SH (#.4SH %K3 =7NH
65 3J, 4=3%
%&2=2 @66A © 2006 Microchip Masters Brasil 2006
=)8-, 0*T +-+ =&9>%9D"K0 "2&48, 4G&&%O4G&&% -G0 =)8, 7)7? UIP)P?#
USB – Implementação de Hardware e Software
48
3; Placa do dispositivo tipo periférico Regulador de 3.3 V Bus Pull-Up Resistors D+/D-
PIC18F4550
Transceiver
Interface p/ Transceiver Externo
USB RAM SIE
Streaming Parallel Port (DMA)
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
Data RAM Program Memory
Control Registers
USB – Implementa Implementação ção de Hardware Hardware e Software Software
49
* SIE ... Serializa e deserializa os dados USB Codifica e decodifica dados em NRZI D+/D 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
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
PIC18F4550
Transceiver
Data RAM USB RAM
SIE
Program Memory
Control Registers
USB – Implementa Implementação ção de Hardware Hardware e Software Software
50
*J3; 2 000h
48=6HK"3*
Dados do Usuário 3FFh 400h
48=6HK"32,%
Dados da USB ou Dados do Usuário
2048 2048 bytes bytes de RAM RAM Tot Total al Mecanismo de semáforo de 1-bit SIE v.s. CPU
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
7FFh Não usado
SFRs
F60h FFFh
51
Necessário p/ USB
Q &
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
SIE FS: 48 MHz LS: 6 MHz
CPU
USB – Implementa Implementação ção de Hardware Hardware e Software Software
52
G&* &Q Placa do dispositivo tipo periférico PIC18F4550 20 MHz EC
Divide p/ 5
96 MHz PLL
Divide p/ 2
Divide by 2
Aceita SOMENTE 4 MHz de Entrada!
SIE
PIC ® MCU Core
48 MHz : 12 MIPs
SIE Clock = 48 MHz : Full-Speed Mode
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
53
%&45-6778 K
&=)8 ,@4)73>A,@4=3>A 1DDQD+ .P= 4SK"32,%> 0** K,>+2O2, G *%%@%%A>1* @6866A
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
54
"* +, -, 0+
& "# & / 01 0$ - 2
3%&45-6778 %&239-,:3+ -
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
55
3+ -Q Secure Digital Card File System (FAT)
User Application
SD Disk (SPI) Mass Storage
HID
Communication (RS-232 Emulation)
USB Driver & Chapter 9 Firmware Hardware - Dual Port Ram, USB SFRs
2(T3+
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
56
&/ 3+-
&/&45 2%3%E"' 2 #* 3,0Q*@ #A 3;%*
2 : & < , 2 &2& @ K,=P=A 3 *
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
= S 4 S 4 S 6 S
57
M- Project Root Directory
_output
autofiles
usb
hid
© 2006 Microchip Masters Brasil 2006
class
usb9
msd
cdc
system
user
filesys
FAT
disks
SD
USB – Implementação de Hardware e Software
CF
58
" USB Firmware Microchip USB Wizard Program
Auto Generated
Fixed Firmware
User Firmware
Compile & Link PIC18F4550 Program
© 2006 Microchip Masters Brasil 2006
HEX
USB – Implementação de Hardware e Software
59
3Q*& Loop Principal
Máquina de estados
Task A.1 - 200 us Task A.2 - 400 us
Task A 900 us
Task A.3 - 300 us
Task B - 100 us
© 2006 Microchip Masters Brasil 2006
Max Loop Time 1000 us vs. 500 us
USB – Implementação de Hardware e Software
60
8I
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
61
)& 2& PIC18F4550
Control Transfer (SETUP, OUT, IN)
EP0
Chapter9
EP1
Interrupt Bulk Isochronous
...
(OUT, IN)
EP15
© 2006 Microchip Masters Brasil 2006
Device Class
USB – Implementação de Hardware e Software
User Application
62
#V
2 &2& K,=P= M% 32
))V
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
63
2@2A PIC®
PC Computer
HID\Mouse
Drivers Padrão do Windows
HID App
Cabo USB
Considerações de projeto: 64 KB/s max Transferências Tipo Interrupt Driver Padrão do Windows So aplicações PC “custom” podem acessar os dados do HID através das APIs Win32
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
64
&2&, K,=P= PIC®
PC Computer
CDC
Drivers Padrão do Windows Hyper Terminal
Cabo USB
Precisa do Arquivo INF
Considerações de projeto: ~80 KB/s max Funciona bem no XP, desempenho limitado no 2000 e sem suporte para o 98 (no USB.org tem algums drives) Aplicativos PC podem acessar o dispositivo como se estivesse conectado a uma porta serial.
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
65
&+* HyperTerminal HyperTerminal Driver da UART Hardware UART
RS-232
Hardware UART APIs da UART Aplicação em Firmware
© 2006 Microchip Masters Brasil 2006
Driver da UART Driver CDC Hardware USB
USB
Hardware USB APIs USB UART
PIC18F4550
Aplicação em Firmware
USB – Implementação de Hardware e Software
66
2T=888 T'W% &2&#)) DJ T) .B#) G) G#); X&2&K,=P=K%Y J; ZU[[&2&[ "B,D#,?2 %2D## $)# )
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
67
"%&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
68
2$"% ?1+# V JK3K"3V "*. @8G88AV
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
69
G-G%* Reset
main
InitializeSystem
MainLoop
Multitasking Cooperativo!! USBTasks()
SEM funções bloqueadoras.
main.c USBDriverService(); CDCTxService(); …
ProcessIO()
Use máquinas de estado.
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
user.c Exercise_01(); Exercise_02(); …
70
"%> :K3 void putrsUSBUSART(const rom char *data); void putsUSBUSART(char *data); void mUSBUSARTTxRom(rom byte *pData, byte len); Use ‘putrs’ p/ literal e dados em ROM
void mUSBUSARTTxRam(byte *pData, byte len); Examplo de Uso : putrsUSBUSART(“Hello”);*buffer, byte len); byte getsUSBUSART(char ou putrsUSBUSART(welcome); byte mCDCGetRxLength(void); onde rom char welcome[]=(“Bye”);
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
71
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
72
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
73
G=K3 rom 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
74
"%> void putrsUSBUSART(const rom char *data); len = número de dados esperados
void putsUSBUSART(char *data); buffer = ponteiro para o buffer de tamanho >= a len
void mUSBUSARTTxRom(rom byte *pData, byte getsUSBUSART retorna o número de len); bytes copiados para o buffer
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
75
G/=)PK
/),Exercise_03() /"=$),9N 3/%%19 $G8OP .JL
)*M?"C"7 –
input_buffer[];
– mLED_4_Toggle();
7getsUSBUSART(…)
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
76
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
77
"% + void putrsUSBUSART(const rom char *data); Use mUSBUSARTTxRom p/ dados armazendado na memória de void putsUSBUSART(char *data); programa
255-bytes no máximo
void mUSBUSARTTxRom(rom byte *pData, byte len); void mUSBUSARTTxRam(byte *pData, byte len); byte getsUSBUSART(char *buffer, byte len); Use mUSBUSARTTxRam p/ dados byte mCDCGetRxLength(void); armazendado na memória de dados
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
78
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
79
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
80
"%K"3 void putrsUSBUSART(const rom char *data);
void putsUSBUSART(char *data); void mUSBUSARTTxRom(rom byte *pData, byte len); void mUSBUSARTTxRam(byte Use *pData, byte len); ‘puts’ para dados na RAM Exemplo de Uso : byte getsUSBUSART(char *buffer, byte len);
putsUSBUSART(output_buffer); onde char output_buffer[]=(“Microchip”); byte mCDCGetRxLength(void);
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
81
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
82
#B ;*V void Exercise_XX(void) { putrsUSBUSART(“Hello World!”); }
Ele não verifica: if(mUSBUSARTIsTxTrfReady())
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
83
#B ;*V void Exercise_XX(void) { while(!mUSBUSARTIsTxTrfReady());
Resposta: Função bloqueadora! Não é boa para multitasking cooperativo.
putrsUSBUSART(“Hello World!”); 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!
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
84
G7 void 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
85
\ ]] &2&]0W]K"2^ &2&]0W]^ &2&]0W]^]LE% &2&]0W]&3%E0(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
86
"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
87
3*2@32A PIC ®
PC Computer
MSD
Drivers Padrão do Windows
Windows Explorer
Cabo USB
Considerações de projeto : Funciona como um disk drive Rápida transferência de dados através da USB Velocidade é limitada dependendo do tipo de midia física Para se utilizável, O sistema de arquivos deve se implementado em firmware
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
88
0/"32 Seu Aplicativo
Seu Aplicativo
Abrir, Salvar, Ler, Escrever, Deletar
File System Firmware
File System
Physical Disk Driver Firmware (Shared)
Driver USB Mass Storage
Mass Storage Driver Firmware
Driver USB Bus
USB Chapter 9 Firmware
Hardware USB Host
PC
© 2006 Microchip Masters Brasil 2006
Secure Digital, Compact Flash, etc.
PIC18F4550 USB Physical Interface USB Peripheral USB – Implementação de Hardware e Software
89
2M% PIC ®
PC Computer
Boot MCHPUSB.sys MPUSBAPI.dll PDFSUSB.exe Demo Cabo USB
Somente Binário
Fonte e binário
Other C++ Binary Only Examples Source and Binary
Considerações de projeto: ~1,088 KB/s max Muito flexivel Não é um driver padrão do Windows Programação no PC é necessária
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
90
3%"%)2EE
3%"%)2EE Software Client Software Cliente
USB System Software (USB Driver, Host Controller Driver)
Host
Aplicações de usuários Win32 Subsystem & DLLs de usuários Dispositivo usando PIC18F4550
USB Host Controller/Hub (Hardware) Host Cabo USB
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
92
3%"%)2EE Software Cliente
USB System Software (USB Driver, Host Controller Driver)
Host
Aplicações de usuários Win32 Subsystem MPUSBAPI.DLL & User DLLs Dispositivo usando PIC18F4550
USB Host Controller/Hub (Hardware) Host Cabo USB
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
93
, 3%"%)2EE 2EE, 2HEQEH &;*+)H $+)H %$ % QD+ "$+ ?&OOD&D?)(0)
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
94
`2EE #.V XEQ*YB XEQ*Y2\ XEQ*YE, XEQ*YK,
2EE
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
95
2EE 2EE 2EE= XEQ*YE,0 XEQ*YK,0
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
96
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
97
2EE 2EE
XEQ*Y K,0 &+GD.#2EE *G TP="%
(0"(&EEH@E%&00K Aa
-"K%K&M%"@32EDE%&T0K Aa
&*2EE;
K E-EH@32E Aa K;
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
98
3%"%)2EE
<<%H% S/ )," Q$ "7
<$ TK%/H8/8;GS>/
<+)*' =$! <""%M.@KDTDD&A %!"$=7 [3&%-[%[3[2[]& 8=$7 [3&%-[%[3[2[]&[
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
99
3%"%)2EE
%XQY,, %XQ*Y,
%XQ*Y,
: K&
33E?><G &
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
100
-$3%"%)2EE Sete Funções simples MPUSBGetDeviceCount(..) MPUSBOpen( .. ) MPUSBClose( .. )
VID & PID MPUSBGetDLLVersion( .. )
© 2006 Microchip Masters Brasil 2006
VID & PID MPUSBReadInt( .. ) MPUSBRead( .. ) MPUSBWrite( .. )
USB – Implementação de Hardware e Software
101
2$ 3%"%)2EE
Load-time Linking
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
103
XEQ*YE, 3%"%)2EE
XQY3%"%)2EE,+ 2EE &
3%"%)2EEXQ*Y & &+2EEXQY@3%M2&A
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
104
-$ 2TK23%M2EE?@A 2EE ? TK2@?A 3? ETK2@?A 3?
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
105
-$ 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
106
-$
"(2E 3%@2TK2D >> %&"K?2]%2D >> %&"K%D >> 2TK22D >> 2TK2KAa >>Z-U
+ H%K<% /< ) +.,+ 2 ,
?(?"E2]"(2E]?"E
3%]K"2 3%]TK0
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
107
-$ 3% ?2]%2
0* -b]GGGG:]HHHHX GGGG.?2W" HHHH.%2W"
0* -b[[3&%]%Jb
%
(0" %3%K@AD% b[[3&%]%J]"^(&b
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
108
-$
2TK2 3%K@ "(2E+D>> %?22D>> 2TK2ED>> %2TK2E*+D>> 2TK23Aa>>
E,(+ "*
,( 2 E*+ (!H E*+ (!H 3 %/@HA
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
109
-$
2TK2 3%T@"(2E+D>> %?22D>> 2TK2ED>> %2TK2E*+D>> 2TK23Aa>>
,02 "*
,0 2 E (!H E*+ (!H 3 %/@HA
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
110
-$
2TK2 3%K@"(2E+D>> %?22D>> 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
111
-$ E3%&@"(2E+Aa -++ "*
,
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
112
"*&
.%& %02
%K2
-+#
" &+0 &+3%T
" &+3%K
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
113
0 #* ?#?B 3%]&&D3%]-"E (?"E2]"(2E]?"E ME@A
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
114
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
115
Run-time Linking
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
116
T3]2?&&"(M
T T.* ( # M G T3]&33"(2DT3]%"(0 T3]2?&&"(M
%$M
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
118
2$ TP="%
WinMain
TP="%
H%, T3
K*c% "% K*& T(2&E"
&c% "%&T
3*E
Chama RegisterClass RegisterClass (Registra a Main Window Class , Event Handler)
Chama CreateWindow (Cria a Main Window)
Recebe Messagem (OS Event)
Invoca o Event Handler
Exit Application
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
119
, T% 2 2 * * T T 3* 3*- - XT%@AY. XT%@AY. 3T
%; EKE0&"EE"&ST%@T(2+TD **DTK2% **DTK2%DE(M%A DE(M%A
! 3* "# / /
3*
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
120
T3]2?&&"(M
( ( * * >T >T T T * * . .
T<;TS%&T# T<;TS%&T#$$#T $$#T'(%4<# '(%4<#3'S> 3'S> < $ T ! T3]2?&&"(M " #
20 20]2? ]2?& &" "K KK?"E ?"E 20 20]2? ]2?( (2 2 ]& &" "(M2 (M2 20] 20]& &((-M M& &"( "(M M&" &"(& (&E E2 2 20] 20]& &((-M M& &"( "(M M2 2 ) ))) ))
% % & & # # . .
& & & &
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
121
T3]2?&&"(M ($
20] 20]& &((-M M& &"( "(M M&" &"(& (&E E2 2
20] 20]& &((-M M& &"( "(M M2 2
20] 20]& &0 0 3?( ?(0 0
20] 20]2 2? ?& &"K "KK K?" ?"EE
8G884< 8G884<# # * * @ @Q Q QA 8G8845" 8G8845"* * D D Q Q Q
8G588N 8G588N J J@ @A A ) ) T(0 T(06)8 6)8T T< <7 7 . .
8G5888 8G5888 / / /*
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
122
T3]2?&&"(M ($
20] 20]2 2? ?& &_ _K K^K ^K3 3? ?
20]2 20]2?& ?&_ _K K^K ^K3 3? ?-" -"E2 E2
20] 20]2 2? ?& &K K3 3? ?& &3% 3%E E0 0
20] 20]2 2? ?& &K K3 3? ?% %(2 (2( (M M
8G5884d 8G5884d# # /a##* # 8G588= 8G588=# # /)
8G5886 8G5886 / / ) )
8G588P 8G588P / / a#*
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
123
T3]2?&&"(M (
20]2?&0^%%&-&
8G5887
8G888e T(06)8T3><5><7.
20]2?(2]&"(M2
20]_K^&"(M&(-M
20]K2-(2
8G884eK#, *@QQA 8G----**. B
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
124
G& ;*G &T3]2?&&"(M &OO%*
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
125
G6, 2
WM_DEVICECHANGE
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
126
3$#( $B3&%)( f2Eg
h2&K%0(hI2D [?2]8625:%2]888D[?2]8625:%2]888&
f*g (^-0IbTHb 3-M("3Ib3+0+*HD)b (02SIb3+0+*HD) 2b 2&K%0(Ib%&45-6778-H2b
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
127
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
128
3%"%)2EE K "%
0 1
-$
0,. BV
,(
3%KD 3%K
0
3%T
Q, (
3%K
Q,0
3%T
+ (
3%K
(
+ 0
3%T
(
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
129
3*
"* "&3* Q,H,0@0A% 2*@2A& 048&&@%&,PD&,=A "0+
© 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* K3* G;* G;*&3 *
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
133
K 3* 3201"# Q,H0& 1) @&2A &&E )
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
134
K@&)A
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
135
&%H& @%&A &Q& @&A
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
136
&;*% 2,% X1J Y % &Q 88+&+ 84+&+ 78+3&0 8=+, 6-+K 74+, --+K
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
137
& 2 2 ,,& X X J&3*Y & & & & QQ 84+K& 8=+"0"%D33&,= 8P+"0"%,0"% 86+- 87+--,58e8-22 8N+& 8N+ & 8e+, --+K --+K
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
138
&;*G 22
>i2 >i 2 2 2 i> i> ]2 ]2?] ?]2 2& & ] ]I I j J J@ @]2 ]2?] ?]2& 2&AD AD> >>0 >0 + + 2 2 H 2&]2 2&]2?D ?D > >>0 >0 @ @2 2A A 8G8=88 8G8=88D D >> >>( ( ) ) &2 8G88 8G88D D > >> >& & & & 8G88D 8G88D >> >> 8G88 8G88D D >> >>% % %8] %8]--] -] LD LD > >> >0 0 + + G G %8D*)+ 8G86 8G8625 25D D >> >>? ? 2 2 8G888< 8G888> >>% % 2 2 * * 8G88 8G8884 84D D >> >> % % 8G84D 8G84D >> >>3 3 * *G G 8G8=D 8G8=D >> >>% % * * G G 8G88D 8G88D > >>2 >2 * * GG 8G84 8G84 >> >>( ( * * ka
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
Device Descriptor
139
&;*G &*42
>i&* >i&* 42 42 i i>> &-M84Ij >i&* >i&* 2 2 i> i> J@] J@]&-M]2 &-M]2&AD &AD>> >>0 0+ + 2&] 2&]&&-MD MD > >> >0 0 @&*)A J J@ @ *8 *84A 4AD D > >> >( ( ) 4D 4D >> >>( ( ]2-"E0l ]2-"E0l]E]E-D D>>" >>" D D ]])+ 78D 78D >> >>% % @=W"A
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
Device Descriptor
{ Configuration 1 Descriptor
140
&;*G 2 >i >i 2 2 i> i> J J @ @ ] ](0 (0-] -]2 2&A &AD D >> >>0 0 + + 2) 2&] 2&]( (00-D D > >> >0 0 @A 8D 8D >> >> =D >> ( 32](0-D >>& 32](0-]&E"D >> 32]%K0&ED >> % 8D 8D > >> > G G *)
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
Device Descriptor
{ Configuration 1 Descriptor
Interface Descriptor
141
&;*G 2 >i2i> J@]%]2&AD2&]% D]%84](D]ESD32](] %]LD8G88D J@]%]2&AD2&]% D]%84]0D]ESD32] 0]%]LD8G88 ka
Device Descriptor
{ Configuration 1 Descriptor
Interface Descriptor
Endpoint Descriptor }
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
142
&;*G *2 jHE*+aH20Ha *f4gak888IjJ@888AD2&]0KD8G868
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
143
"* "&3* Q,H,0@0A% 2*@2A& 048&&@%&,PD&,=A "0+
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
144
%QH 0@0A K &/- %&D 01, -G*%0 &;*G
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
145
%QH 0@0A K &/- %&D 01, -G*%0 &;*G
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
146
K 0*010Q &D %0Q@ &A D+
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
147
K@&)A &QT@&TA / )*
&T@&TA / <8T
2,N ";
2,N ;<"
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
148
%QH 0@0A K &/- % %&D &D 01, -G*% -G*%% %0 0 &;*G
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
149
&/- @&,#A <+),% $C9; ""# J7
K#0H
K#
&
&
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
?
G
E*+ 2
....& ....&
USB – Implementa Implementação ção de Hardware Hardware e Software Software
S
150
&/- @&,#A M3GE( '"S H
K#0H
K#
G&
/&
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
?
G
....&
USB – Implementa Implementação ção de Hardware Hardware e Software Software
E*+ 2 ...&
E
151
&/- @&,#A
M3GE '"0 3=$#3S. 3=$#3S. 3S 3S & & ';+ <),
© 2006 Microchip Microchip Masters Masters Brasil Brasil 2006
USB – Implementa Implementação ção de Hardware Hardware e Software Software
152
&;*G &K# &+Q32K#@A j +@%Q)K#A j 32]K0 ]]]I32]32a 2%447@Aa>>)+ @%4)%0"EEII4Aj %4)%0"EEI8a 32%@Aa k K)0"EE-I8a Qa M0]3"W]E( ]]]I32]32a &02)]Hf8gI3"W]E(a &)I4a )KI@*+iA:&02a ])]]I]K"3a Qa k >>+@%Q)K#A k
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
153
%QH 0@0A K &/- %&D 01, -G*%0 &;*G
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
154
%&D Pronto
Transporte de comando (CBW)
Dado Para O Host
Dado para o Device Transporte de Status
(CSW)
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
155
%&D Command Block Wrapper (CBW)
dCBWSignature dCBWTag dCBWDataTransferLength Dir.
bmCBWFlags bCBWLUN bCBWCBLength CBWCB
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
156
%&D '<8T
C),#;" "" !QBUQ& 8TJLE
'%"#$ ),G82&
8<8T,IH#" $),3&
;),3& #("
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
157
%&D2 '&JE
Dir. ),
'=99N &$
'"99 #$),
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
158
%&D2 Command Status Wrapper (CSW)
bCSWSignature
dCSWTag
dCSWDataResidue bCSWStatus
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
159
&,2, Status % Q, %# G4PH G& &T &T2K
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
160
%QH 0@0A K &/- %&D 01, -G*%0 &;*G
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
161
01, &T?B* &T?B*
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
162
&;*G &T? H?&T@A j @@*&TE*+RI32]&T]LAll @*&T)&T*RI8G6P6=7P77AA
k
-"Ea 0Ka
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
163
&;*G &T* H3*&T@A j >iP&T&E*+8D i6&TE( 8 i&T&E*+44N i&T-*H8 i> @@*&T)&TE(ZI8G8A:: @*&T)&T&E*+ZI8G48A:: @*&T)&T&E*+UI8G84A:: @*&T)&T-*II8G88l *&T)&T-*II8G58AA0Ka -"Ea k
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
164
%QH 0@0A K &/- %&D 01, -G*%0 &;*G
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
165
-G*%0 Comando Não Dir. Bit=1?
Cópia CBW para gblCBW
Set MSD_State = MSD_DATA_OUT
Sim CBW é Valido?
Set MSD_State = MSD_DATA_IN
Não A
Decodifica e Processa “CBWCB” MSDCommandHandler()
Sim CBW Significativo?
Não
A
A USBBufferReady(MSD_BD_OUT)
Sim Prepara CSW dCSWTag, dCSWSignature
USBDriverService()
Return
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
166
"* "&3* Q,H,0@0A% 2*@2A& 048&&@%&,PD&,=A "0+
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
167
(2 0+*H++ @bbAH+2&"+2M) 0++2 ++H+2&"+2M)0+ , +)"H+ H#+2&"D2MD2,P&EE& ++) 2 0++H 2&2>"H b",b+HH Q)(HH+2MD2,P&EE&+2 &"H*DH*+ *++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
168
&3;2&-V 2&% 2&& %+ 23H&J
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
169
2% 2 para o &@A Do Device Cartão Do cartão para o K Host 2"2@A &32 2"0 Operação (No Response)
Operação(No Data)
Inicializado pelo start bit
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
170
%% %*2&
8&+ 832Q % %'/
Chip Select (Logic Low) DataIn
Clock DataOut
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
171
%% % 2>&5 &,K,2
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
172
23H&& 23H&& &
H&
J & *
8G68 8G64 8G74 8G75 8G78
KQ TQ QE*+
© 2006 Microchip Masters Brasil 2006
KH 20Q K)
8G84 8G88 8G88 8G88 8G88
, , 8G- , ,
USB – Implementação de Hardware e Software
20Q 0G)
, , , 5&^D8W-
, 173
%+
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
174
J2& &&+8 J "* Q@EA &Q@A 0>H K&K& &&+4 5&^G
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
175
2&-"0 3KD-"04D-"0=DK2HD n
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
176
"* "&3* Q,H,0@0A% 2*@2A& 048&&@%&,PD&,=A "0+
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
177
%&,P&,=& &%&,P&,= K48 T48 K&H ?H48 0KH #H
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
178
&&2 K48 &K# )
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
179
K48 32&@A jo +@*&T)&T&f8gAj K"2]48 32K@Aa Qa ok>>+
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
180
32K@A 32K@A j o +@0E*+)]U8Aj
0E*+)],,a >> + 4 E" IK@E")]D@HiA:]f8gAa E")]OOa >>+GE" @II?Aj ])&TI8G88a >> ])&T2KIE&SE(]74=a>>+74=H (G2I@HiA:]f8ga +@])&T2KU8A 322@Aa>>+ ])&T2KI8G8a >>G kj ])&TI8G84a >>8G84K*p45 >>0 >i2mHi> ])&T2KI8G8a
o k
© 2006 Microchip Masters Brasil 2006
Qa
>> Q +
USB – Implementação de Hardware e Software
181
&&2 T48 & )
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
182
T48 32&@A jo +@*&T)&T&f8gAj TK0]48 32T@Aa Qa o k >> +
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
183
32T@A 32T@A j o) +@0E*+)]U8Aj ])&T2KIE&SE(]74=a >iK74=]i> +@])&T2KU8A 322@Aa @T%@AAj *2)SHI](0]K"2^a *2)"&I"&]TK0]%K0&02a *2)"&_I"&_]TK0]%K0&02a ])&TI8G84a kj IT@@E")]AD @HiA:]f8gAa k o k
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
184
"* "&3* Q,H,0@0A% 2*@2A& 048&&@%&,PD&,=A "0+
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
185
"0+ 32)&2&"K2)& *J3; 32 32-Q
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
186
32)&
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
187
2&"K2)&
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
188
*J3; 3EQ ACCESSBANK NAME=accessram START=0x0 DATABANK NAME=gpr0 START=0x60 DATABANK NAME=gpr1 START=0x100 DATABANK NAME=gpr2 START=0x200 DATABANK NAME=gpr3 START=0x300
END=0x5F END=0xFF END=0x1FF END=0x2FF END=0x3FF
DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED DATABANK 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 PROTECTED DATABANK NAME=msd START=0x600 END=0x7FF PROTECTED
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
189
32 ))[32[H[[ ) #if defined(USB_USE_MSD) volatile far USB_MSD_CBW msd_cbw; volatile far USB_MSD_CSW msd_csw; #pragma udata myMSD=0x600 volatile far char msd_buffer[512]; #endif
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
190
""# main.c Initialize System() while(1) { }
usbdrv.c usbdsc.c
USBDriverService()
usbctrltrf.c
usb9.c
USBCtrlEPService()
USBCheckStdRequest() USBStdSetCfgHandler()
msd.c MSDInitEP() USBCheckMSDRequest() SDCardInit() ProcessIO()
sdcard.c SocketInitialize() MediaInitialize()
MSDCommandHandler() MSDReadHandler() MSDWriteHandler() MSDReadCapacityHandler()
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
SECTORread() SECTORwrite() CSDread()
191
-/-
%&45-6778:%&4N&eW7 K/ Features On-chip USB XCVR & Voltage Regulator
18F4550
16C7X5
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?
© 2006 Microchip Masters Brasil 2006
Yes
USB – Implementação de Hardware e Software
193
%&' 3&K 128K 64K
Concept
Concept
32K
PIC18F2550 FS 2.0
PIC18F4550 FS 2.0
24K
PIC18F2455 FS 2.0
PIC18F4455 FS 2.0
PIC18F2450 FS 2.0
PIC18F4450 FS 2.0
PIC16C745 LS 1.1
PIC16C765 LS 1.1
16K
Concept
28
© 2006 Microchip Masters Brasil 2006
40/44
PIC18F67J50 FS 2.0
PIC18F87J50 FS 2.0
PIC18F66J50 FS 2.0
PIC18F86J50 FS 2.0
In development In production 64
USB – Implementação de Hardware e Software
80
pin 194
%&2303 2-,
%&45-6778D=83J- %E2 % % % 0 %&92*+ &
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
195
%&92*+2 33&
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
196
%
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
197
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
198
K1
&;*3%"%)2EE +>>)) +>>)+) +>>)+) +>>))
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
199
%*V
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
200
"#3 *R
"1
&(KL DFRS8&$" D.FR8&$" Idle 0
1
1
0
1
0
1
0
1
1
1
1
1
0
NRZI
1
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
203
E+ '& N"4 Q&RQ&J Low Speed
Full Speed
© 2006 Microchip Masters Brasil 2006
Tipo de Transfer.
Max tam. Bytes
Control
8
Interrupt
<= 8
Control
8, 16, 32, 64
Interrupt
<= 64
Bulk
8, 16, 32, 64
Isochronous
<= 1023
USB – Implementação de Hardware e Software
204
01&
01&! $)G.G)
Etapas Control Transfer
Setup
Transação USB
SETUP Token Packet
Data Packet
Handshake Packet
Data Packet
Handshake Packet
Zero Data Packet
Handshake Packet
Transação USB
Data (Read)
IN Token Packet Transação USB
Status
OUT Token Packet
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
205
&0 Control Transfer Stages
Setup
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
SETUP Token Packet
Data Packet
Handshake Packet
Data Packet
Handshake Packet
Zero Data Packet
Handshake Packet
USB Transaction
Data (Read)
IN Token Packet USB Transaction
Status
OUT Token Packet
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
206
&0 Control Transfer Stages
Setup
Se for requisitado um Get Descriptor, os dados nesta etapa devem ser o descriptors do device. USB Transaction
SETUP Token Packet
Data Packet
Handshake Packet
Data Packet
Handshake Packet
Zero Data Packet
Handshake Packet
USB Transaction
Data (Read)
IN Token Packet USB Transaction
Status
OUT Token Packet
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
207
"1222EE
22** &+22Q H+T 3&0
*- K &0 K "*3qE 2
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
209
%(, %+ %+0+3%"%)2EE+ +H++ H
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
210
%( 3%"%)E 0+3%"%)EH &OO 0+?&OOQ*
&2EE3%"%)2EE ?&OO "+3%"%)2EE+ 3Q*H +)E)2EE
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
211
"% 3%"%)E 3%"%)2EE.] ?N)8 ?)(0 %?N)8 XKY2EE+ ]
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
212
&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
213
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
214
?$ ( &2 "*J2 & ,-$ 2& B# -& 2Q $
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
215
3+M% 22 & #. $ &E #.B 3+22 & &.;*&0E "%TP= 2&@A
"G3&%-])W# *+ &[3&%-[%[3&%2[K
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
216
3&%)( 3&%)(-
&+ T#( 23*#(- #(-
%$ %J$ # "#(-G @3&%)(-A
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
217
& " % "&@3,U%*,U&OO ,U&OONA 0-,U(,U+ &TJ&#Q H&OOK&+QQ H% &#SD#&OO. "@XTRYA@A
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
218
& "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
219
&OO ?&OO? &. ?&OOD? 3 0P 2EE."%TP= ?12&E"K $2EE
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
220
`2HEQ E #1.EH@V XEQ*YB XEQ*Y2\ XEQ*YE, XEQ*YK,
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
221
XEQ*YB #.XEQ*YB &V Library Library
Linker
Arquivo EXE
Arquivos Objeto
EXQY XQ*Y*
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
222
XEQ*YB 2*
+ "$# 2 2;*;
_G!\ ,.
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
223
XEQ*Y2\ XQ*YB EXQY G Library Library
Linker (Copies only the reference information into the EXE)
EXE File
Object Files
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
224
XEQ*Y2\ /
"JD +J XQ*YB "; ; &J+J ;/ 3J/
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
225
XEQ*Y2\:2EE 2EE, E#XQY G+2H EQE "G2H EQET.2EE
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
226
2EE %33,""
"" T48#H8VV %33 /J!"E 9"%/J ),!J WI%33, H8VV#8 9"%/,
© 2006 Microchip Masters Brasil 2006
USB – Implementação de Hardware e Software
227