2012-07-04 20 views
5

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 usar tanto en Android como en PC.Determinación de los requisitos de energía para una tarjeta inteligente sin contacto en Java.

Uso de un lector de tarjetas sin contacto USB a través de la PC No tengo problemas para conectarme y comunicarme con cualquier tarjeta que arroje.

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

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

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

Mi proceso de pensamiento actual es que el Nexus S tiene un chip NFC de menor potencia que el lector de PC USB que estoy usando. De otros artículos que he leído, parece como si diferentes tarjetas tuvieran requisitos de potencia diferentes para poder 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 el nivel de potencia de un chip NFC en particular? ¿Está esto documentado en alguna parte?

+0

para la primera pregunta que debe leer el ISO 7816 – Blackbelt

+0

Supongo que debe saber qué modelo exacto es el chip NFC, por lo que puede descargar la hoja de datos con ese tipo de información –

Respuesta

4

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

  1. antena mal sintonizada en la tarjeta
  2. tarjeta de
  3. micro-controlador se requiere mucha fuerza
  4. campo de 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 comunicación incorrecta o nula. Un lector de escritorio generalmente no tiene este tipo de problema, ya que genera un campo mucho más poderoso. NFC en un teléfono tiene bastante baja potencia y el campo de RF que genera a menudo está al límite de lo que todavía es permisible en ISO 14443. El chip NFC en el Nexus S, el NXP PN544, genera un campo débil de RF. Sin embargo, esta es una función tanto del chip NFC como de la antena NFC en el teléfono. En mi experiencia, las tarjetas de Tipo B a menudo causan problemas (se rumorea que a menudo requieren más potencia). Otro ejemplo son los pasaportes electrónicos: frecuentemente tienen antenas menos óptimas.

Nivel de potencia mínimo requerido para una tarjeta: no está en el ATR. La tarjeta ISO 14443 no tiene un ATR (pueden tener 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 los S-Blocks ISO 14443-4 (cuando está presente y es compatible con la tarjeta). Sin embargo, nunca he visto cartas que hagan esto.

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

+0

Te he estado viendo mucho en SO . :) Gracias por su respuesta. – Brad

+0

De nada. Tenía un rápido vistazo a algunas tarjetas de tipo B coreanos que tengo (EZ-Link y T-Money), que no funcionan con el Nexus S y Galaxy Nexus. Descubrí que realmente funcionan con el S3. –

Cuestiones relacionadas