Neokoros Brasil Ltda Rua 86, 445, Setor Sul, Goiânia 3541...
Transcript of Neokoros Brasil Ltda Rua 86, 445, Setor Sul, Goiânia 3541...
1
Neokoros Brasil Ltda
Rua 86, 445, Setor Sul, Goiânia – GO
62 – 3541-3230
Frequência 13.56MHz
Protocolo ISO14443A
Tags suportados MIFARE Ultralight®, MIFARE Classic® 1K, MIFARE Classic® 4K,
Autodetecção Sim
Antena integrada Sim
Leitor/Gravador Sim
Interface UART – USB
Tensão de Alimentação 5VDC
Dimensão 70 x 114 × 30 mm
2
1 - NK-RFID - Disposição Geral dos Conectores
1.1 - CN1 - Conector Host RS-232
Pino Função
1 VEXT
2 GND
3 HOST TX
4 HOST RX
1.2 - CN2 / CN3 - Conectores USB
4 - GND
3 - USB-DP
2 - USB-DM
1 - USB-VBUS
Pino Função
1 USB-VBUS
2 USB-DM
3 USB-DP
4 GND
1 - VEXT 2 - GND 3 - HOST TX 4 - HOST RX
3
Pino Função
1 USB-VBUS
2 USB-DM
3 USB-DP
4 GND
1.3 - CN4 - ICSP (Interface para Conexão / Programação Serial)
Pino Função
1 VCC
2 GND
3 MCLR
4 PGC / LED 1
5 PGC / LED 2
1.4 - CN5 - Interface de Acionamento Externo (Buzzer, LED, GPIO)
Pino Função
1 VEXT
2 GND
3 GPIO
4 BUZZER
5 LED2
6 LED1
1.5 - CN6 - USB
Algumas versões da placa poderão contar com um conector do parão “USB Mini Tipo B” para o conector
CN6. Caso a placa não tenha sido montada com este tipo de conector, utilize a seguinte descrição de
pinagem / função de cada pino, se necessário:
4 - GND 3 - USB-DP 2 - USB-DM 1 - VBUS
4 - PGC 3 - MCLR 2 - GND 1 - VCC
5 - PGD
6 - LED
5 - LED
4 - BUZZER
3 - GPIO
2 - GND
1 - VEXT
4
Pino Função
1 VBUS
2 D-
3 D+
4 ID
5 GND
6 SH
7 SH
8 SH
9 SH
1.6 - CN7 - Host TTL
O conector CN7 pode ser I2C, Serial TTL, Wiegand ou ABA Track
Pino Função
1 VEXT
2 GND
3 TXD/SDA/WIEGAND/ABATRACK2
4 TXD/SCL/WIEGAND/ABATRACK2
1.7 - CN8 - Aux RS-232
Pino Função
1 VEXT
2 GND
3 SLAVE-TX
4 SLAVE-RX
1.8 - CN9 - Host TTL
O conector CN9 pode ser I2C, Serial TTL, Wiegand ou ABA Track
5
Pino Função
1 VEXT
2 GND
3 HOST-TX
4 HOST-RX
1.10 - CN11 - Aux RS-232
4 - SLAVE-RX
3 - SLAVE-TX
2 - GND
1 - VEXT
2 Funções dos Cartões Mifare e
A-Type (Tipo A)
2.1 Idle Request (Command = 0x21, _DEA_IDLE_REQ)
Este comando envia o comando REQA para sondar os campos dos cartões do Tipo A
● Command frame
LEN-H LEN-L CMD
0X0001 0x21
● Response frame (se a resposta for
OK)
LEN-H LEN-L Resp Data[0] Data[1]
0X0003 OK ATQA[0] ATQA[1]
Pino Função
1 VEXT
2 GND
3 SLAVE-TX
4 SLAVE-RX
1.9 - CN10 - Host RS -232
1 - VEXT
2 - GND 3 - HOST-TX 4 - HOST-RX
3 - TXD/SDA/WIEGAND/ABATRACK 2 2 - GND 1 - VEXT
4 - TXD/SCL/WIEGAND/ABATRACK 2
Pino Função
1 VEXT
2 GND
3 TXD/SDA/WIEGAND/ABATRACK2
4 TXD/SCL/WIEGAND/ABATRACK2
6
- Data[0] : ATQA (menor byte) - Data[1] : ATQA (maior byte) exemplo:
Mifare retorna 0x00, 0x04.
- Resposta : OK(0x00) Err(verificar código de resposta– “response
code”).
2.2 Wakeup Request (Command = 0x22, _DEA_WAKEUP_REQ)
Envia o comando WUPA para sondar os campos dos cartões Tipo A. O comando WUPA é particularmente
enviado pelo PCD para colocar os PICCs que entraram em estado de parada (HALT STATE) em estado de
“pronto” (READY). A função WUPA é necessária no começo de uma nova seleção de um cartão.
● Command frame
LEN-H LEN-L CMD
0X0001 0x22
● Response frame (se a resposta for
OK)
LEN-H LEN-L Resp Data[0] Data[1]
0X0003 OK ATQA[0] ATQA[1]
- Data[0] : ATQA (menor byte)
- Data[1] : ATQA (maior byte)
- Resposta : OK(0x00) Err(verificar código de resposta– “response code”).
2.3 Anti-Collision (Command = 0x23, _DEA_ANTICOLL)
Inicia o “loop” anticolisão e retorna UID de um cartão no campo de operação da antena. Deverá ser
chamado após o REQA ou WUPA. Este comando suporta cascata de nível 1 (cascade level 1).
● Command frame
LEN-H LEN-L CMD
0X0001 0x23
● Response frame (se a resposta for OK)
LEN-H LEN-L Resp Data[0] Data[1] Data[2] Data[3]
0X0005 OK UID[0] UID[1] UID[2] UID[3]
7
- Data[0…3] : UID[0] é o menor byte and UID[3] é o maiorbyte
- Response: OK(0x00) Err(verificar código de resposta– “resp
2.4 Select (Command = 0x24, _DEA_SELECT)
Seleciona o cartão com UID do cartão. Retorna SAK.
● Command frame
onse
code”).
LEN-H LEN-L CMD Data[0] Data[1] Data[2] Data[3]
0X0005 0x24 UID[0] UID[1] UID[2] UID[3]
- Data[0…3]: Card UID[0] ....... UID[3]
● Response frame
LEN-H LEN-L Resp Data[0]
0X0002 OK SAK
- Data[0]: SAK, Select acknowledge; (Selecionar reconhecimento). O SAK esperado para Mifareé
0x08, 0x28.
- Response: OK(0x00) Err(verificar código de resposta– “response code”).
2.5 Authentication Mifare (Command = 0x25, _DEA_AUTH)
Este comando inicia uma sequência de autenticação. Comando _DEA_LOADKEY (0x2F) deverá ser
executado antes deste comando porque as chaves deverão ser armazenadas na SRAM interna do leitor.
Recomendamos usar _DEA_AUTHKEY (0x30) ao invés deste comando.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2]
0X 0004 0x25 Mode KeyNo BlockNo
- Data[0]:
Data[0]: Modo (Mode)
0x00 Autenticação com chave A
0x04 Autenticação chave B
- Data[1]: Número (0-15) correspondente ao armazenamento da chave.
- Data[2]: Número de bloco do cartão.
8
● Response frame
LEN-H LEN-L Resp
0X 0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.6 Halt (Command = 0x26, _DEA_HALT)
O comando aplica o estado de parada (HALT STATE) ao cartão selecionado.
● Command frame
LEN-H LEN-L CMD
0X0001 0x26
● Response frame
LEN-H LEN-L Resp
0X0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.7 Read Mifare (Command = 0x27, _DEA_READ)
O comando lê um bloco (16 bytes) do bloco autenticado do cartão selecionado.
● Command frame
LEN-H LEN-L CMD Data[0]
0X 0002 0x27 BlockNo
- Data[0]: Número do bloco
● Response frame
LEN-H LEN-L Resp Data [0 ...15]
0X 0011 OK Bdata[0] ... Bdata[15]
- Response: OK(0x00), Err(verificar código de resposta – “response code”).
- Data[0 …15]: 16 byte de dados do bloco selecionado.
2.8 Write Mifare (Command = 0x28, _DEA_WRITE)
Este comando escreve um bloco (16 bytes) a um bloco autenticado do cartão selecionado.
● Command frame
LEN-H LEN-L CMD Data[0] Data [1 ...16]
0X0012 0x28 BlockNo Bdata[0] ... Bdata[15]
9
- Data[0] : Número do bloco do cartão (bloco 0 não disponível) .
- Data[1… 16] : Dados a serem escritos no bloco selecionado.
● Response frame
LEN-H LEN-L Resp
0X0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.9 Increment Mifare (Command = 0x28, _DEA_WRITE)
Este comando lê o bloco do valor acessado, checa a estrutura dos dados, aumenta conteúdo do valor do
bloco pelo valor transmitido (usando 31 bits menos significativos, não 32 bits) e armazena o resultado no
registro interno do cartão.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2] Data[3] Data[4]
0X0006 0x29 BlockNo Value[0] Value[1] Value[2] Value[3]
- Data[0] : Número do bloco do cartão (bloco 0 não disponível).
- Data[1… 4] : O valor de incremento. A variável é interpretada como um valor de campointeiro(4bytes)
Ex. : se 1, 0x01 0x00 0x00 0x00
se 255, 0xFF 0x00 0x00 0x00
● Response frame
LEN-H LEN-L Resp
0X 0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.10 Increment Mifare (Command = 0x28, _DEA_WRITE)
Este comando lê o bloco do valor acessado, checa a estrutura dos dados, aumenta conteúdo do valor do
bloco pelo valor transmitido (usando 31 bits menos significativos, não 32 bits) e armazena o resultado no
registro interno do cartão.
● Command frame
LEN-H LEN-L CMD Data[0] Data [1] Data [2] Data [3] Data [4]
0X0006 0x2A BlockNo Value[0] Value[1] Value[2] Value[3]
10
- Data[0] : Número do bloco do cartão.
- Data[1…4]: O valor de decremento. A variável é interpretada como um valor de campo inteiro(4bytes)
Ex. : se 1, 0x01 0x00 0x00 0x00
se 255, 0xFF 0x00 0x00 0x00
● Response frame
LEN-H LEN-L Resp
0X0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.11 Increment and Transfer (Command = 0x2B, _DEA_INC_TRANS)
Este comando lê o bloco do valor acessado, checa a estrutura dos dados, aumenta o conteúdo do valor do
bloco pelo valor transmitido (usando 31 bits menos significativos, não 32 bits) e armazena o resultado no
registro interno do cartão([Trans BN] do formato do frame).
● Command frame
LEN-H LEN-L CMD Data[0] Data[1...4] Data[5]
0X007 0x2B BlockNo Value[0] ~ Value[4] Trans BN
- Data[0] : Número do bloco do cartão.
- Data[1…4]: O valor de incremento. A variável é interpretada como um valor de campointeiro(4bytes)
Ex. : se 1, 0x01 0x00 0x00 0x00
se 255, 0xFF 0x00 0x00 0x00
- Data[5] : Número do bloco do cartão o qual o valor aumentado vai transferir.
● Response frame
LEN-H LEN-L Resp
0X 001 OK(0x00), Err(verificar código de resposta – “response code”).
2.12 Decrement and Transfer (Command = 0x2C, _DEA_DEC_TRANS)
Este comando lê o bloco do valor acessado, checa a estrutura dos dados, diminui o conteúdo do valor do
bloco pelo valor transmitido (usando 31 bits menos significativos, não 32 bits) e armazena o resultado no
registro interno do cartão([Trans BN] do formato do frame).
● Command frame
LEN-H LEN-L CMD Data[0] Data[1...4] Data[5]
0X007 0x2C BlockNo Value[0] ~ Value[4] Trans BN
11
- Data[0] : Número do bloco do cartão.
- Data[1…4]: O valor de decremento. A variável é interpretada como um valor de campo inteiro(4bytes)
Ex. : se 1, 0x01 0x00 0x00 0x00
se 255, 0xFF 0x00 0x00 0x00
- Data[5] : Número do bloco do cartão o qual o valor aumentado vai transferir.
● Response frame
LEN-H LEN-L Resp
0X0001 OK(0x00), Err(verificar código de resposta – “response
code”).
2.13 Restore Mifare (Command = 0x2D, _DEA_RESTORE)
Este comando lê o bloco do valor acessado, checa a estrutura dos dados, e armazena o resultado no
registro interno do cartão. Valor é armazenado apenas na memória volátil. Para armazenar esse valor em
um bloco de valor o comando _DEA_TRANSFER deverá ser executado após este comando.
● Command frame
LEN-H LEN-L CMD Data [0]
0X 0002 0x2D BlockNo
- Data[0] : Número do bloco do cartão
● Response frame
LEN-H LEN-L Resp
0X 0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.14 Transfer Mifare (Command = 0x2E, _DEA_TRANSFER)
Este comando transfere o conteúdo do registro interno do cartão ao endereço selecionado. O setor deve
ser autenticado para esta operação. A função de transferência pode ser chamada diretamente após o
Incremento, Decremento ou Restauração.
● Command frame
LEN-H LEN-L CMD Data [0]
0X0002 0x2E BlockNo
12
- Data[0] : Número do bloco do cartão.
● Response frame
LEN-H LEN-L Resp
0X0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.15 Load Key Mifare (Command = 0x2F, _DEA_LOADKEY)
Este comando escreve uma chave mestra na memória interna (FLASH) do leitor e a coloca no buffer de
chave mestra. Leitor pode armazenar 16 chaves em memória não volátil para procedimento de
autenticação do cartão acessado. Embora a energia esteja desligada, as chaves não são perdidas. Este
comando é utilizado para procedimento de autenticação.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2] ... Data[7]
0X008 0x2F Mode KeyNo Key[0] ... Key[5]
- Data[0] : Mode
Data[0]: Load Key Mode (Modo de carregamento da chave)
0x00 Loading Key A (Carregamento da chave A)
0x04 Loading Key B (Carregamento da chave B)
- Data[1] : O número da chave ou índice(0 ~ 15) para autenticação
- Data[2…7]: Key[0]..[5], A chave de dados a ser armazenada na memória interna do leitor.
● Response: OK(0x00), Err(verificar código de resposta – “response code”).
2.16 Auth Key Mifare (Command = 0x30, _DEA_AUTHKEY)
Este comando escreve uma chave secreta diretamente no buffer de chave secreta e autentica o setor
selecionado com a chave submetida.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1...6] Data[7]
0X 0008 0x30 Mode Key[0] ...
Key[5]
Block No
- Data[0] : Mode
Data[0]: Load Key Mode (Modo de carregamento da chave)
0x00 Loading Key A (Carregamento da chave A)
0x04 Loading Key B (Carregamento da chave B)
- Data[1...6] : Key[0]..[5] A chave de dados a ser armazenada no buffer de chave secreta.
- Data[7]: O numeral do bloco para Autenticação.
13
● Response frame
LEN-H LEN-L Resp
0X 0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.17 Request to Auth (Command = 0x31, _DEA_REQ_ANTI_AUTH)
Este comando executa as operações de Requisição (Request), Anticolisão e Autenticação todos de uma vez
e retorna a UID do cartão selecionado. Este comando usa os dados de chave armazenados na memória
interna. Antes de usá-lo, o comando _DEA_LOADKEY(0x2F) deverá ser executado.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2] Data[3]
0X0005 0x31 R-mode A-mode Key No BlockNo
- Data[0] : Request Mode (Modo Requisição)
Data[0]: Request Mode (Modo Requisição)
0x00 Request Idle (Requisição em Espera)
0x01 Request All, Wakeup Request (Requisição total, requisição de “despertar”)
- Data[1] : Authentication Mode (Modo Autenticação)
Data[1]: Authentication Mode (Modo Autenticação)
0x00 Authentication with Key A (Autenticação com Chave A)
0x04 Authentication with Key B (Autenticação com Chave B)
- Data[2]: O número da chave ou índice (0 ~ 15) para autenticação.
- Data[3]: Número do bloco do cartão.
● Response frame
LEN-H LEN-L Resp Data[0] Data[1] Data[2] Data[3]
0X0005 OK UID[0] UID[1] UID[2] UID[3]
- Data[2]: O número da chave
- Data[3]: Número do bloco do
● Response frame
ou índice (0 ~ 15) para autenticação.
cartão.
LEN-H LEN-L Resp Data[0] Data[1] Data[2] Data[3]
0X0005 OK UID[0] UID[1] UID[2] UID[3]
- Data[0...3]: UID do cartão
- Response: OK(0x00), Err(verificar código de resposta – “response code”)
14
2.18 Request to Auth (Command = 0x31, _DEA_REQ_ANTI_AUTH)
Este comando executa de uma vez as operações de Requisição (Request), Anticolisão com chave e retorna
a UID do cartão selecionado.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2] Data[3...8]
0X000A 0X32 R-Mode A-Mode BlockNo Key [0..5}
- Data[0]: Request Mode (Modo Requisição)
Data[0]: Request Mode (Modo Requisição)
0x00 Request Idle (Requisição em Espera)
0x01 Request All, Wakeup Request (Requisição total, requisição de “despertar”)
- Data[1] : Authentication Mode (Modo Autenticação)
Data[1]: Authentication Mode (Modo Autenticação)
0x00 Authentication with Key A (Autenticação com Chave A)
0x04 Authentication with Key B (Autenticação com Chave B)
- Data[2] : Número do bloco (0 ~ 63) do
cartão
-
● Response frame
Data[3...8] : Chave de dados para autenticação o bloco selecionado
LEN-H LEN-L Resp Data[0] Data[1] Data[2] Data[3]
0X0005 OK UID[0] UID[1] UID[2] UID[3]
- Data[0…3] : UID do cartão.
- Response : OK(0x00), Err(verificar código de resposta – “response code”).
2.19 Increment and Transfer2 (Command = 0x33, _DEA_INC_TRANS2)
Este comando lê o valor do bloco acessado, checa a estrutura de dados, aumenta o conteúdo do bloco de
valor através do valor transmitido (usando os 31 bits mais significativos, não os 32 bits), armazena o
resultado no bloco selecionado do cartão e verifica o incremento correto.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1...4] Data[5]
0X0007 0x33 BlockNo Value[0]~[3]
Trans BN
15
- Data[0]: Número do bloco do cartão.
- Data[1...4] : O valor de incremento. A variável é interpretada como um valor de campointeiro(4bytes)
Ex. : Se 1, 0x01 0x00 0x00 0x00
Se 255, 0xFF 0x00 0x00 0x00
- Data[5]: Número do bloco do cartão que o valor incrementado irá transferir
● Response frame
LEN-H LEN-L Resp
0X0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.20 Decrement and Transfer2 (Command = 0x34, _DEA_DEC_TRANS2)
Este comando lê o valor do bloco acessado, checa a estrutura de dados e inconsistências, diminui o
conteúdo do valor do bloco pelo valor transmitido (usando 31 bits menos significativos, não os 32 bits),
armazena o resultado no bloco selecionado do cartão e verifica o decremento correto.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1...4] Data[5]
0X0007 0x34 BlockNo Value[0]~[4]
Trans BN
- Data[0]: O endereço do cartão de onde o bloco de valor é lido.
- Data[1...4]: O valor de decremento. A variável é interpretada como um valor de
campointeiro (4bytes) com o menor byte localizado no endereço inferior Ex. : se 1, 0x01
0x00 0x00 0x00 se 255, 0xFF 0x00 0x00 0x00
Data[5]: Número do bloco do cartão o qual o valor diminuído irá transferir
● Response frame
LEN-H LEN-L Resp
0X0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.21 Request to Read A (Command = 0x35, _A_REQ_ANTI_AUTH_READ)
Este comando executa de uma vez as ações de Requisição (Request), Anticolisão, Autenticação e leitura e
retorna a UID e os dados dos blocos do cartão selecionado. Este comando usa os dados de chave
armazenados na memória interna. Antes de usá-lo o comando _DEA_LOADKEY(0x2F) deverá ser
executado.
16
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2] Data[3]
0X0005 0x35 R-mode A-mode Key No Block No
- Data[0] : Request Mode (Modo Requisição)
Data[0]: Request Mode (Modo Requisição)
0x00 Request Idle (Requisição em Espera)
0x01 Request All, Wakeup Request (Requisição total, Requisição de “despertar”
- Data[1] : Authentication Mode (Modo Autenticação)
Data[1]: Authentication Mode (Modo Autenticação)
0x00 Autenticação com Chave A
0x04 Autenticação com Chave B
- Data[2] : O número da chave ou índice(0 ~ 15) para autenticação- Data[3] : Números de bloco do cartão.
● Response frame
LEN-H LEN-L Resp Data[0...3] Data[4...19]
0X 0015 OK UID [0...3] Block Data [0...15]
- Data[0…3] : Número de série do cartão acessado
- Data[4…19] : Dados a serem lidos do bloco selecionado
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
2.22 Request to Read K (Command = 0x36, _DEA_REQ_ANTI_AUTHKEY_READ)
Este comando executa de uma vez as ações de Requisição (Request), Anticolisão, Autenticação e leitura e
retorna a UID e os dados dos blocos do cartão selecionado.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2] Data[3..8]
0X000A 0x36 R-mode A-mode BlockNo Key[0..5]
- Data[0] : Request Mode (Modo Requisição)
Data[0]: Request Mode (Modo Autenticação)
0x00 Request Idle (Requisição em Espera)
0x01 Request All, Wakeup Request (Requisição total, requisição de “despertar”)
- Data[1] : Authentication Mode (Modo Autenticação)
Data[1]: Authentication Mode (Modo Autenticação)
0x00 Authentication with Key A (Autenticação com Chave A)
0x04 Authentication with Key B (Autenticação com Chave B)
- Data[2] : Número de bloco do cartão
- Data[3...8] : Dados de chave externa para autenticação do bloco selecionado
17
● Response frame
LEN-H LEN-L Resp Data[0...3] Data[4...19]
0X 0015 OK UID [0...3] BlockData [0...15]
- Data[0...3] : Número de série do cartão acessado
- Data[4...19] : Dados a serem lidos do bloco selecionado
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
2.23 Request to Write A (Command = 0x37, _DEA_REQ_ANTI_AUTH_WRITE)
Este comando executa de uma vez as ações de Requisição (Request), Anticolisão, Autenticação e escrita
e retorna a UID do cartão selecionado. O comando usa dados de chave interna armazenada na memória
interna. Antes de usá-lo, o comando _DEA_LOADKEY(0x2F) deverá ser executado.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2] Data[4...19]
0X0015 0x35 R-mode A-mode BlockNo BlockData[0...15]
- Data[0] : Request Mode (Modo Requisição)
Data[0]: Request Mode (Modo Requisição)
0x00 Request Idle (Requisição em Espera)
0x01 Request All, Wakeup Request (Requisição total, requisição de “despertar”)
- Data[1] : Authentication Mode (Modo Autenticação)
Data[1]: Authentication (Modo Autenticação)
0x00 Authentication with Key A (Autenticação com Chave A)
0x04 Authentication with Key B (Autenticação com Chave B)
- Data[2] : O número da chave ou índice(0 ~ 15) para autenticação
- Data[3] : Número de bloco do cartão.
- Data[4...19] : Dados a serem escritos no bloco selecionado
● Response frame
LEN-H LEN-L Resp Data[0...3]
0X 0005 OK UID [0...3]
- Data[0...3] : UID do cartão selecionado
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
18
2.24 Request to Write K (Command = 0x3 8, _DEA_REQ_ANTI_AUTHKEY_WRITE)
Este comando executa de uma vez as ações de Requisição (Request), Anticolisão, Autenticação e escrita e
retorna a UID do cartão selecionado.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2] Data[3...8] Data[9~24]
0X001A 0x35 R-mode A-mode BlockNo Key [0...5] BlockData [0...15]
- Data[0] : Request Mode (Modo Requisição)
Data[0]: Request Mode (Modo Requisição)
0x00 Request Idle (Requisição em Espera)
0x01 Request All, Wakeup Request (Requisição total, Requisição de “despertar”)
- Data[1] : Authentication Mode (Modo Autenticação)
Data[1]: Authentication Mode (Modo Autenticação)
0x00 Authentication Mode with Key A (Autenticação com Chave A)
0x04 Authentication Mode with Key B (Autenticação com Chave B)
- Data[2] : Número de bloco do cartão acessado.
- Data[3...8] : Dado de chave externa(6byte) para autenticação do bloco selecionado.
- Data[9...24] : Dados a serem escritos no bloco selecionado.
● Response frame
LEN-H LEN-L Resp Data[0...3]
0X 0005 OK UID [0...3]
- Data[0…3] : UID do cartão selecionado
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
2.25 Request to Select (Command = 0x39, _DEA_REQ_ANTI_SEL)
Este comando executa de uma vez as ações de Requisição (Request), Anticolisão, e Seleção e retorna o SAK
e a UID do cartão selecionado. Suporta até o terceiro nível de cascata (up to cascade level 3).
● Command frame
LEN-H LEN-L CMD Data[0]
0X0002 0x39 RMode
- Data[0] : Request Mode (Modo Requisição)
Data[0]: Request Mode (Modo Requisição)
19
0x00 Request Idle (Requisição em Espera)
0x01 Request All, Wakeup Request (Requisição total, Requisição de “despertar”)
● Response frame
LEN-H LEN-L Resp Data[0...]
0X0005 OK SAK[1]+UID[0...]
- SAK: 1Byte SAK
- Data[0…] : 4,7 ou 10 Bytes UID do cartão selecionado
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
2.26 Write Ultra Light (Command = 0x3B, _DEA_UWRITE)
Este comando escreve 4 bytes em um endereço selecionado do cartão Mifare ultra light
● Command frame
LEN-H LEN-L CMD Data[1...4]
0X0006 0x3B Bdata [0] ... Bdata [3]
- Data[0]: endereço do cartão Mifare ultra light.
- Data[1…4] : dados(4byte) a serem escritos no endereço selecionado.
● Response frame
LEN-H LEN-L Resp
0X0001 OK(0x00), Err(verificar código de resposta – “response code”).
2.27 Full Anti-Collision and Select (Command = 0x3D, _DEA_ANTI_SEL_LEVEL)
Este comando inicia a anticolisão e seleciona a sequência em modo cascata (cascade mode) para obter UID
completa quando seu tamanho é maior do que o tamanho único no comando tipo A. O comando
“Request” deverá ser executado antes.
● Command frame
LEN-H LEN-L CMD
0X0002 0x3D
● Response frame (se a resposta é OK)
LEN-H LEN-L Resp Data[0] Data[1...N-1]
20
N+1 OK SAK UID [0...N-2]
- Data[0] : SAK, Select Acknowledge (Selecionar Reconhecer)
- Data[1...N-1] UID do cartão, o comprimento do UID é 4(Tamanho único) ou 7(Tamanho duplo) ou
10(Tamanho triplo).
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
Ex:
Commands Responses
REQA : 0xA1 0x00 0x07 0x26 ATQA : 0x04 0x00
ANTI_SEL : 0x3D S AK + UID : 0x08 0xB2 0xFA 0x26 0x1F 0x71
2.28 Anti-Collision Level (Command = 0x3E, _DEA_ANTICOLL_LEVEL)
Este comando executa a sequência anticolisão definida por cada nível de cascata no modo bit. Será usado
para saber os dados UID (número de série 4-byte + 1-byte LRC) durante a função de anticolisão em cada
nível. Retorna apenas UID de 5-bytes ou um nível definido em caso de não haver colisão. Seleção de
sequência será executada usando o comando _DEA_TRANSPARENT contendo dados SEL_CODE e um UID
de 5-bytes após este comando. Por favor consulte a especificação ISSO 14443 Parte 3 para obter sequência
detalhada em modo cascata.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1] Data[2...5]
0X 007 0x3E Cascade Level Bit count Valid UID
- Data[0] : Cascade Level (Nível de Cascata)
Data[0]: Cascade Level (Nível de Cascata)
0x93 Cascade Level 1 (Equal or More than single UID - Igual ou maior que UID único
0x95 Cascade Level 2 (Equal or More than double UID - Igual ou maior que UID duplo
0x97 Cascade Level 3 (Triple UID) UID triplo
- Data[1] : Contagem de Bits(Contagem de bits UID válido, 0 ~ 32) - Data[2..5] : N-
bytes UID válido.
● Response frame (Se a resposta for OK)
LEN-H LEN-L Resp Data [0]
0X 0005 OK UID[0..3] or CT + UID [0..2]
- Data[0…3]: CT é cascade tag, UID is UID do cartão.
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
Ex:
Commands Responses
REQA : 0xA1 0x00 0x07 0x26 ATQA : 0x04 0x00
21
Level 1 ANTI : 0x3E 0x93 0x00 UID : 0xB2 0xFA 0x26 0x1F 0x71
Level 1 SEL : 0x41 0x93 0x70 0xB2 0xFA 0x26 0x1F 0x71 SAK : 0x08
2.29 Select Level (Command = 0x3F, _DEA_SELECT_LEVEL)
Este comando inicia a sequência de seleção. Será usado quando o tamanho do UID for maior que o
tamanho único para obter UID completo. Não implementado na versão ISO156963.
● Command frame
LEN-H LEN-L CMD Data[0] Data[1..4]
0x0005 0c3F Cascade Level UID
- Data[0](Cascade Level) :0x93 = Cascade Level maior que o UID único
0x95 = Cascade Level 2 (Equal or More t duplo
0x97 = Cascade Level 3 (Triple UID) UID Triplo
- Data[1..4] : UID
● Response frame (Se a resposta for OK)
(Equal or
More
han Double UID)
than single UID) Igual ou
Igual ou maior que o
UID
LEN-H LEN-L Resp Data[0]
0x0005 OK SAK
- Data[0] : SAK, Select Acknowledge (Seleção Reconhecimento)
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
2.30 Device Information (Command = 0x40, _DEA_DEVINFO)
Este comando retorna a Identificação do Tipo de Produto e o Número de Serial do leitor.
● Command frame
LEN-H LEN-L CMD
0x01 0x40
1
22
● Response frame (Se a resposta for OK)
LEN-H LEN-L Resp Data [0...N-1]
N+1 OK PSNR[0...N-1]
- Data [0…N-1] : Número Serial do Produto (No caso da DE-620, 12 bytes)
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
2.31 Type-A Transparent (Command = 0x41, _DEA_TRANSPARENT)
Leitor recebe dados do “host” e os envia com o CRC computado ao cartão. O “host” não necessita
computar CRC de 2-bytes. Leitor extrai dados CRC de 2-bytes da resposta de dados do cartão.
● Command frame
LEN-H LEN-L CMD Data [0...N-2] Data [N-1]
N +1 0x41 APDU TOUT
- Data[0…N-2] : APDU para ser enviada ao cartão. Leitor computa CRC e os anexa à APDU.
- Data[N-1]: TOUT, Valor de timeout – leitor espera pela resposta do cartão.
Tabela 1 < Tabela de Time Out >
Valor TOUT em hexadecimal Valor de Tempo FWI
0x02 1.208 msec 2
0x03 2.416 msec 3
0x03 4.832 msec 4
0x0A 9.664 msec 5
0x14 19.32 msec 6
0x27 38.66 msec 7
0x4E 77.3 msec 8
0x9B 154.6 msec 9
0xB0 ~ 309.3 msec 10
0xC0 ~ 618.6 msec 11
0xD0 ~ 1.2371 msec 12
0xE0 ~ 2.4742 msec 13
0xF0 ~ 4.9485 msec 14
23
0xFF 9.897 msec 15
● Response frame
LEN-H LEN-L Resp Data [0...N-1]
N +1 OK APDU
- Data [0…N-1] : APDU recebida do Cartão, exceto CRC de 2-bytes.
- Response: OK(0x00) Err(verificar código de resposta – “response code”).
2.32 Type-A Transparent2 (Command = 0x47, _DEA_TRANSPARENT2)
Leitor recebe dados do “host” e ignora dados para o cartão. “Host” deve computar CRC de 2-bytes de
dados e enviar 2-bytes de dador CRC computados com APDU para o módulo de RF. Leitor recebe dados de
resposta do cartão e ignora dados recebidos ao “host”.
● Command frame
LEN-H LEN-L CMD Data [0...N-2] Data [N-1]
N +1 0x47 APDU+CRC TOUT
- Data[0…N-2] : APDU para ser enviada ao Cartão. Um HOST computa o CRC e deve anexa-lo à APDU.
- Data[N-1]: TOUT, Valor de Timeout – Leitor espera pela resposta do cartão. Ver Tabela 1.
● Response frame
LEN-H LEN-L Resp Data [0...N-1]
N +1 OK APDU+CRC
- Data[0…N-1] : APDU recebida do cartão
- Response: OK(0x00)
2.33 NFC T1 Tag Transparent (Command = 0x6B)
Leitor recebe dados do “host” e envia dados com o CRC computado para o NFC T1 Tag(TOPAZ). “Host” não
necessita computar o CRC de 2-bytes. Leitor extrai os dados CRC de 2-bytes dos dados de resposta do
cartão.
● Command frame
LEN-H LEN-L CMD Data [0...N-2] Data [N-1]
N +1 0x6B CMD+DATA TOUT
- Data[0…N-2] : APDU a ser enviado ao cartão. Leitor computa CRC e o anexa à APDU
- Data[N-1]: TOUT, Valor de Timeout – leitor espera pela resposta do cartão.
24