¿Podría alguien explicar por qué la EEPROM 93C66 genera un 0 ficticio durante una operación de lectura?
De la hoja de datos:
5.1 Leer datos de la memoria La instrucción Leer datos de la memoria (READ) genera datos en la salida de datos en serie (Q). Cuando se recibe la instrucción, se decodifican el código de operación y la dirección, y los datos de la memoria se transfieren a un registro de desplazamiento de salida. Primero se emite un bit 0 ficticio, seguido del byte de 8 bits o la palabra de 16 bits, con el bit más significativo primero. Los cambios de datos de salida son activados por el flanco ascendente del reloj serie (C). El M93Cx6 incrementa automáticamente el registro de dirección interno y registra el siguiente byte (o palabra) siempre que la entrada de selección de chip (S) se mantenga alta. En este caso, el bit 0 ficticio no se emite entre bytes (o palabras) y se puede leer un flujo continuo de datos.
Si la entrada/salida está orientada a bytes, y el primer bit de una lectura es un bit ficticio 0, todos los datos posteriores se desplazan (retrasan) un bit para hacer espacio para este bit ficticio.
Por ejemplo, si los datos almacenados en la EEPROM son:
byte1:[000000001] byte2:[000000001]
se lee de la EEPROM como:
byte1:[000000000] byte2:[100000000] byte3:[100000000]
Me gustaría almacenar algunos datos en EEPROM, pero este cambio es el problema, ¿cuál es el uso de esta cosa diabólica llamada dummy 0?
EDITAR:
Solo quiero dejar un comentario sobre mi solución. Debido a que pude cambiar IC en mi caso, seguí usando 25LC640A-I/P DIL, se comporta como yo quería, así que si alguien necesita una pista, aquí está.
Usamos el 9346 en varios de nuestros productos, y tiene el mismo "0" falso.
Creo que la razón por la que hace esto es que necesita tener el último bit de dirección (A0) registrado antes de leer los datos y comenzar a registrar los datos solicitados. Si observa la hoja de datos, puede ver que el bit ficticio se superpone al bit de dirección A0.
Puedes arreglar esto combatiendo el fuego con fuego :-). Agregue su propio bit de diablo ficticio al final de la palabra de dirección (haga que la longitud sea uno más larga), de modo que su puerto SPI ignore ese primer bit de la respuesta y comience a registrar la respuesta en el límite correcto.
Además, siempre necesito mirar de cerca para ver que mi configuración de CPOL y CPHA sea correcta. A veces, las cosas casi funcionan cuando estas configuraciones son incorrectas, pero están erradas por un bit (CPHA incorrecto) o, a veces, simplemente no son confiables (CPOL incorrecto).
crosley
usuario505160
usuario253751