Команды NFCIP-1 - PullRequest
       71

Команды NFCIP-1

0 голосов
/ 02 марта 2020

Я пытаюсь установить соединение p2p NF C с кадрированием NFCIP-1, и я работаю с чипом st25r3911b от STMicroelectronics. Я не понимаю, как "cmd0" и "cmd1" -байты работают, для каждой транзакции. На мой взгляд, передатчик отправляет команду, описанную cmd0-1, с дополнительной полезной нагрузкой после байтов cmd. На стороне получателя эти байты cmd и необязательные байты данных принимаются так же, как они отправляются передатчиком. Кадрирование, как указано в стандарте nf c и st-чипе, является таким, как показано на рисунке ниже, где чип NF C заботится обо всем кадрировании за пределами "поля транспортных данных".

enter image description here

У меня проблема, когда мое целевое устройство NF C получает что-то от устройства-инициатора NF C. Ниже вы видите таблицу команд NFCIP-1 (cmd0 = cmd1, cmd1 = cmd2 - насколько я понимаю).

enter image description here

Я установил количество байтов для передачи в 96. Я загружаю буфер FIFO инициатора с помощью «запроса протокола обмена данными» - команда (cmd0 = D4, cmd1 = 06) и 94 других байта - поэтому буфер FIFO заполнен 96 байтами, а затем я передаю. На стороне приемника я вижу начало приема IRQ, и кажется, что передача работает просто отлично. Но когда я читаю целевой буфер fifo после завершения передачи, я читаю первые 3 байта как = 0x00 0xE3 0x21, что является полным мусором, поскольку я ожидал только два байта до полезной нагрузки, точнее: два байта для Команда «Запрос протокола обмена данными» (cmd0 = D4, cmd1 = 06). Вместо этого я получаю 0x00, 0xE3 и 0x21, которые являются командами, которые я даже не могу найти ни в одной таблице, ни в NF C -стандартной информации. Но после этих 3 байтов я получаю byte0-byte93, как и ожидалось, но, разумеется, один раз смещается в байтах, поскольку раньше было 3 байта вместо 2.

Чего мне не хватает в этой команде байт?

Еще одна странная вещь заключается в том, что это происходит только тогда, когда я передаю с CR C. Когда я передаю с помощью команды «Передать без CR C», я все равно получаю 3 байта вместо ожидаемых 2 байтов, но все 3 байта равны 0, а не 0x00, 0xE3, 0x21, как с cr c.

...