Определение требований к питанию для бесконтактной смарт-карты на Java.

Я пишу приложение на Java, которое отправляет команды на смарт-карту и анализирует ответы по интерфейсу NFC. Это приложение может использоваться как на Android, так и на ПК.

Используя USB-устройство для бесконтактного чтения карт через ПК, у меня нет проблем с подключением и общением с любой картой, которую я бросаю на нее.

Android – другое дело. Использование приложения через Nexus S дает менее желательные результаты в зависимости от карты.

Некоторые карты будут подключаться и общаться со 100% успехами. Большинство карт, которые я пытался использовать, было очень сложно даже установить соединение, не говоря уже об общении с ним.

Служба NFC на Nexus S пытается подключиться к картам. Он делает непрерывный низкий импульсный звук, указывая на то, что он не может создать прочную связь (насколько я могу судить).

Мой нынешний процесс состоит в том, что Nexus S имеет чип NFC с более низким питанием, чем я использую USB-считыватель USB. Из других статей, которые я прочитал, кажется, что разные карты имеют разные требования к мощности, чтобы использовать их.

Как определить, какой уровень мощности необходим для питания карты? Он скрыт где-то в ATR?

Как определить, какой уровень мощности имеет конкретный чип NFC? Это где-то документально?

Такая проблема обычно вызвана (комбинацией) любого из следующих:

  1. Плохо настроенная антенна на карте
  2. Карта микроконтроллера, требующая большой мощности
  3. Слабое радиочастотное поле, созданное телефоном NFC

Это приводит к плохой антенной связи между телефоном и картой, что приводит к плохой или отсутствующей связи. У настольного считывателя обычно нет такой проблемы, поскольку он генерирует гораздо более мощное поле. NFC в телефоне довольно мала, и генерируемое им поле RF часто находится на грани того, что по-прежнему разрешено ISO 14443. Чип NFC в Nexus S, NXP PN544, генерирует слабое радиочастотное поле. Однако это функция как чипа NFC, так и антенны NFC в телефоне. По моему опыту, карты типа B часто вызывают проблемы (по слухам, им часто требуется больше энергии). Другим примером являются электронные паспорта: часто имеют менее оптимальные антенны.

Минимальный уровень мощности, необходимый для карты: он не находится в ATR. Карта ISO 14443 не имеет ATR (у них может быть файл EF.ATR, но я никогда не видел). Ответ ATS (Answer To Select) не указывает требуемые уровни мощности. Карты имеют возможность указать, достаточен ли уровень мощности в поле CID ISO 14443-4 S-Blocks (если присутствует и поддерживается картой). Однако я никогда не видел карт, которые это делают.

Чтобы определить уровень мощности конкретного чипа NFC в сочетании с конкретной антенной (и схемой настройки), вы можете использовать анализатор спектра для проведения измерений. Я измерил несколько телефонов Android NFC (Galaxy Nexus, Nexus S, Galaxy S3, One X), которые содержат PN544. Результаты отличаются между телефонами, и в некоторых случаях они могут иметь значение (S3 генерирует наибольшую мощность).