длительность передачи одного бита 128/fc (9,44 мкс)
Представление и кодирование бит при передаче от ридера к карте
Определены следующие последовательности:
X: после времени 64/fc (4,72 мкс) должна быть "пауза"
Y: для всей длительности бита 128/fc (9,44 мкс) модуляции не должно быть
Z: в начале длительности бита должна быть "пауза".
Z Y X
–|_–––|––––|––_–|–
Данные последовательности используются для кодирования следующей информации:
логическая "1" последовательность Х
логический "0" последовательность Y со следующими двумя исключениями:
а) если два или более смежных (граничащих) "0", то последовательность Z должна быть использована для следующего "0"
б) если первым битом после старта кадра является "0", последовательность Z должна быть использована для представления этого и любых "0"-ей, которые следуют прямо после этого.
старт передачи: последовательность Z
конец передачи: логический "0" следует с последовательностью Y
нет информации: по крайней мере две последовательности Y.
Представление и кодирование бит при передаче от карты к ридеру
Биты кодируются Манчестерским кодом со следующими определениями:
последовательность D: несущая модулируется поднесущей для первой половины (50%) длительности бита
последовательность E: несущая модулируется поднесущей для второй половины (50%) длительности бита
последовательность F: несущая не модулируется поднесущей для длительности одного бита
логическая "1" последовательность D
логический "0" последовательность E
старт передачи: последовательность D
конец передачи: последовательность F
нет информации: нет поднесущей.
Анализ команд и ответов ИМС
Команда
Ответ
Код
Аргумент
Формат
Размер
Описание
Код
Формат
Размер
Описание
0х26
-
s7ee
7+3
REQA (запрос карты)
0х0044
s8p8pe
16+4
ATQA
0х52
-
s7ee
7+3
WUPA (запрос всех карт)
0х0044
s8p8pe
16+4
ATQA
0х93
0х20-0х67
s8p8pee
16+5
Антиколлизия каскадного уровня 1
UID + BCC1
s8p..8pBCC1e
2..47
Часть UID + BCC1
0х95
0х20-0х67
s8p8pee
16+5
Антиколлизия каскадного уровня 2
UID + BCC2
s8p...8pBCC2e
2..47
Часть UID + BCC2
0х30
Адрес
s8p8pC0pC1pee
32+7
READ (чтение)
16 байт данных + CRC
s8p..8pC0pC1pe
144+20
16 байт данных + CRC
0х50
0х00
s8p8pC0pC1pee
32+7
HALT (остановка)
(N)AK
s7e
7+2
Пассивный AK или NAK
0хA2
Адрес+данные
s8p8p8p8p8p8pC0pC1pee
64+11
WRITE (запись)
(N)AK
s7e
7+2
AK или NAK
0хA0
Адрес+данные
s8p8p8p8pC0pC1pee
48+9
COMPATIBILITY WRITE (совместимая запись)
(N)AK
s7e
7+2
AK или NAK
-
-
s8p..8pC0pC1pee
144+20
COMPATIBILITY WRITE (совместимая запись)
(N)AK
s7e
7+2
AK или NAK
0х93
0х70 + UID cl1
s8p..8pBCC1ee
75
Выбор каскадного уровня 1
SAK ('04')
s8pC0pC1pe
24+5
SAK ('04') + CRC
0х95
0х70 + UID cl2
s8p..8pBCC2ee
75
Выбор каскадного уровня 2
SAK ('00')
s8pC0pC1pe
24+5
SAK ('00') + CRC
Принятые обозначения:
s — SOF (1 бит)
e — EOF (2 бит для команды, 1 бит для ответа)
p — четность (1 бит)
C0, С1 — CRC (8ст+8мл бит)
BCC — контрольная сумма (8 бит)
Расчёт контрольных сумм
Контроль четности
Р = 0, при нечетном количестве единиц
Р = 1, при четном количестве единиц
BCC
Вычисляется как "исключающее или" по 4 предыдущим байтам
CRC16
B.3 Code sample written in C language for CRC calculation