Determinación de los requisitos de energía para una tarjeta inteligente sin contacto en Java.

Estoy escribiendo una aplicación en Java que envía comandos a una tarjeta inteligente y analiza las respuestas a través de una interfaz NFC. Esta aplicación se puede utilizar tanto en Android como en PC.

Usando un lector de tarjetas sin contacto USB a través de la PC, no tengo problemas para conectarme y comunicarme con cualquier tarjeta que le lance.

Sin embargo, Android es otro asunto. El uso de la aplicación a través de un Nexus S produce resultados menos deseables, según la tarjeta.

Algunas tarjetas se conectarán y comunicarán con una tasa de éxito del 100 %. La mayoría de las tarjetas que he intentado usar han sido muy difíciles incluso para hacer una conexión, y mucho menos para comunicarme con ella.

El servicio NFC del Nexus S está intentando conectarse con las tarjetas. Hace un sonido de pulso bajo continuo, lo que indica que no puede hacer una conexión sólida (por lo que puedo decir).

Mi proceso de pensamiento actual es que el Nexus S tiene un chip NFC de menor potencia que el lector USB para PC que estoy usando. Según otros artículos que he leído, parece que las diferentes tarjetas tienen diferentes requisitos de energía para usarlas.

¿Cómo puedo determinar qué nivel de potencia se necesita para alimentar una tarjeta? ¿Está escondido en algún lugar del ATR?

¿Cómo puedo determinar qué nivel de potencia tiene un chip NFC en particular? ¿Está esto documentado en alguna parte?

preguntado el 04 de julio de 12 a las 07:07

para la primera pregunta debe leer el ISO 7816 -

Supongo que debería saber qué modelo exacto es el chip NFC, para que pueda descargar la hoja de datos con ese tipo de información:

1 Respuestas

Este tipo de problema generalmente es causado por (una combinación de) cualquiera de los siguientes:

  1. Antena mal sintonizada en la tarjeta
  2. Tarjeta de microcontrolador que requiere mucha energía
  3. Campo RF débil generado por el teléfono NFC

Esto da como resultado un mal acoplamiento de la antena entre el teléfono y la tarjeta, lo que da como resultado una mala o nula comunicación. Un lector de escritorio normalmente no tiene este tipo de problema ya que genera un campo mucho más poderoso. NFC en un teléfono es de muy baja potencia y el campo de RF que genera está a menudo en el borde de lo que aún es permitido por ISO 14443. El chip NFC en el Nexus S, el NXP PN544, genera un campo de RF débil. Sin embargo, esta es una función tanto del chip NFC como de la antena NFC del teléfono. En mi experiencia, las tarjetas Tipo B a menudo causan problemas (se rumorea que a menudo requieren más energía). Otro ejemplo son los pasaportes electrónicos: con frecuencia tienen antenas menos óptimas.

Nivel mínimo de potencia requerido para una tarjeta: no está en el ATR. La tarjeta ISO 14443 no tiene un ATR (puede que tengan un archivo EF.ATR, pero nunca he visto ninguno). La respuesta ATS (Answer To Select) no indica los niveles de potencia requeridos. Las tarjetas tienen la posibilidad de indicar si el nivel de potencia es suficiente en el campo CID de ISO 14443-4 S-Blocks (cuando está presente y es compatible con la tarjeta). Sin embargo, nunca he visto tarjetas que hagan esto.

Para determinar el nivel de potencia de un chip NFC en particular combinado con una antena en particular (y un circuito de sintonización), puede usar un analizador de espectro para realizar las mediciones. Medí varios teléfonos Android NFC (Galaxy Nexus, Nexus S, Galaxy S3, One X) que contienen un PN544. Los resultados difieren entre teléfonos, lo suficiente como para marcar la diferencia en algunos casos (el S3 genera la mayor cantidad de energía).

Respondido 09 Jul 12, 11:07

Te he estado viendo mucho en SO. :) Gracias por tu respuesta. - Brad

De nada. Eché un vistazo rápido a algunas tarjetas coreanas Tipo B que tengo (EZ-Link y T-Money), que no funcionan con el Nexus S y el Galaxy Nexus. Descubrí que realmente funcionan con el S3. - Chico NFC

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.