apostila curso proramação de dispositivos
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+ )