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

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

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

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

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

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

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

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

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


person Brad    schedule 04.07.2012    source источник
comment
для первого вопроса вы должны прочитать ISO 7816   -  person Blackbelt    schedule 04.07.2012
comment
Я думаю, вы должны знать, какая именно модель чипа NFC, поэтому вы можете загрузить техническое описание с такой информацией.   -  person Roman Rdgz    schedule 09.07.2012


Ответы (1)


Проблемы такого рода обычно вызваны (сочетанием) любого из следующего:

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

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

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

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

person NFC guy    schedule 09.07.2012
comment
Я часто видел тебя на SO. :) Спасибо за Ваш ответ. - person Brad; 09.07.2012
comment
Пожалуйста. Я бегло просмотрел некоторые имеющиеся у меня корейские карты типа B (EZ-Link и T-Money), которые не работают с Nexus S и Galaxy Nexus. Я обнаружил, что они действительно работают с S3. - person NFC guy; 10.07.2012