Hola, LordLafebre, bueno te cuento que yo desarrolle una libreria de control completa para la tarjeta SLE4442 de Simens, que no es ni nada tiene que ver con una memoria 24CXX.
Puedo ayudarte pero por razones contractuales con la empresa que me contrato por el desarrollo es que no publicare el codigo completo ni partes de el, pero te puedo guiar sin problemas, y si miras el asm que te paso chaly seguro puedes darte cuenta que las rutinas no son I2C.
La confusion y que a POCHER le haya funcionado con las libreias de I2C es proque exixten tarjetas "identicas" con memorias de este tipo enbebidas, puedes mirar si quieres en
www.micromodule.com, donde ademas encontraras mas info porque son una empresa suplidora de tarjetas inteligentes, tambien hay algo en
www.makinterface.com y
www.maxking.com.
La SLE4442 es una tarjeta que responde a un protocolo propietario de simens/infineon, y la configuracion de contactos e inetrface responde al standart
ISO 7816.
La capacidad de memoria de la tarjeta es 256 bytes, de los cuales solo 224 son utilizables por el usuario, porque los primeros 32, se utilizan por el fabricante y el usuario para etiquetar la aplicacion.
Los primeros 4 bytes son exclusivos del fabricante, y corresponden a la informacion de la tarjeta, protocolo ( 2 wire/3 wire ect), fabricante, forma e leerla y otros datos que encontraras en la hoja de datos que si no la tiene completa te la puedo enviar.
Los demas bytes son para que el usuario pueda distinguir su aplicacion de los demas colocando datos especificos, estos bytes despues se pueden convertir en ROM ejecutando el comando 0x3C ( write protection memory ).
Para poder leer la tarjeta lo primeroq ue hay que hacer es resetarla, ejecutando el RESET Y ANSWER to RESET, de esta manera la tarjeta se prepara para poder comunicar y luego envia lo que se llama RESPUESTA AL RESET O ANSWER TO RESET, que es una trama de 32 bits ( 8 bytes) que le indican al lector que protocolo usar para poder dialogar con la tarjeta, si no haes esto "jamas" te vas a comunicar con ella.
Bueno aqui te pongo los pasos a seguir para leer el ATR.
Colocar una resistencia de 10K entre I/O y VCC, pues I/O no tiene pul-up
interno.
1-Alimentar la tarjeta
2-Detectar si esta la tarjeta en el lector.
3-Poner en 1 la linea RST.
4-Enviar un pulso de 50 Us por CLK.
5-Poner en 0 la linea RST.
6-Enviar un pulso de 50 Us por CLK.
7-Leer el valor de I/O y almacenarlo en el micro.
8-Volver al punto 6 32 veces, y luego dejar CLK y RST en 0.
9-Ya tenemos el ATR en los 4 Bytes, 0xA2,0x13,0x10,0x91
Si miras el data sheet este valor identifica a la tarjeta.
Ahora solo te resta crear la funcion para que haga esto y ya tienes el primer paso, despues hay que desarrollar una funcion para cada comando.
Esta tarjeta tiene la particularidad de que no se puede escribir sin antes ingresar un PASSWORD que es de 6 caracteres numericos expresados en BCD en 3 bytes, por ejemplo si fuese la clave decimal 123456 se almacena 0x12,0x34,0x56, en la tarjeta y tiene un delicado proceso de verificacion, si la clave es ingresada 3 veces mal, puedes ir despidiendote de escribirla porque ya no sera posible, si seguira permitiendo leerla.
Un saludo y espero que te sirva.
saludos
ARIEL / PIKMAN.