Paso 4: DS2431 1-Wire EEPROM
Autobús: 1-Wire, < 2.2Kohm resistor de pull-up requerido.
Requisitos de alimentación: 2.8volts a 5.25volts.
Referencias: hoja de datos, hackear una demostración del día.
Registro de sesión completa Bus Pirate para esta demostración.
No podía incluir algún formato y tablas HTML en un Instructable, usted puede ver el original en el blog de prototipos peligroso.
El DS2431 obtiene la energía de la resistencia de pull-up y no necesita una fuente externa o un condensador de desacople.
1-wire necesita un resistor de pull-up fuerte, un máximo de 2.2Kohms. Resistencias de pull-up a bordo del Bus Pirate de son 10K, demasiado débil para alimentar correctamente el DS2431 durante escribe. Debe utilizar un 2.2Kohm o menor resistencia externa entre el poder y el pin de autobús 1-Wire. Si usted tiene dificultades de escritura de datos, asegúrese de que su resistencia de pull-up es bastante grande. Comité 3EEPROM explorer incluye un resistor de pull-up de 1800 ohmios (R1) en el bus 1-Wire por lo que ningún resistor externo es necesario.
Programa de instalación
Si está utilizando a un Bus Pirate, conecte al 3EEPROM Junta o DS2431 como se muestra en la imagen de la tabla a continuación. El DS2431 no requiere el pin de fuente de energía, se utiliza en el tablero de 3EEPROM para alimentar la resistencia de pull-up grande para el bus 1-Wire.
Entretela
Soy de la prensa ' en el modo de 1-Wire autobús pirata terminal y seleccione. Permitir la alimentación a bordo (grande ' W') y comprobar al monitor de voltaje (v).
Paso 1, encontrar la dirección del dispositivo
1-WIRE > (0xf0) <<< macro de búsqueda 1-Wire
1WIRE ROM COMANDO: BÚSQUEDA (0XF0)
Dispositivos encontrados en:
Dirección de 1WIRE macro
1.0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B <<< DS2431 ID único
* DS2431 1K EEPROM <<< tipo de dispositivo se sabe
0 x 01 los dispositivos encontrados.
El primer ID de 10 dispositivo está disponibles por MACRO, ver (0).
1-WIRE >
Cada dispositivo 1-Wire tiene un ID único byte 8. 1-wire tiene un procedimiento de búsqueda que detecta el identificador de todos los dispositivos conectados. El Bus Pirate implementa la búsqueda 1-Wire como macro (240). Tipo '(240)' en el terminal de Bus Pirate para iniciar la búsqueda de 1-Wire.
Se imprime cada dirección del dispositivo, los dispositivos conocidos son identificados. Las diez primeras direcciones de dispositivo 1-Wire se almacenan como macros, en este ejemplo nuestra dirección DS2431 está disponible escribiendo '(1)' en el terminal.
Paso 2, escriba el Bloc 8 bytes
1-WIRE > (0x55) (1) 0x0f 0 0 8 7 6 5 4 3 2 1
1WIRE reajuste de BUS OK <<< también {comando
COMANDO de ROM escribir 1WIRE: fósforo (0x55) * siga con dirección de 64 bits
1WIRE DIRECCIÓN MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B '
ESCRITURA: 0x0F <<< DS2431 escribir comando Bloc
ESCRITURA: 0 x 00 <<< DS2431 escribir dirección byte 1
ESCRITURA: 0 x 00 <<< DS2431 escribir dirección byte 2
ESCRIBIR: 0x08 <<< Inicio 8 valores de los datos a escribir
ESCRIBIR: 0X07
ESCRIBIR: 0 X 06
ESCRIBIR: 0 X 05
ESCRIBIR: 0 X 04
ESCRIBIR: 0 X 03
ESCRIBIR: 0 X 02
ESCRIBIR: 0 X 01
1-WIRE >
Luego a escribir 8 bytes a una ubicación temporal en el DS2431 llamado el Bloc.
Inicio la transacción con un reajuste de bus 1-Wire y partido del comando (0x55). Ambos están disponibles como macro '(0x55)'. Esto también es posible sin una macro escribiendo ' {0x55', {envía el reset 1-Wire, 0x55 es el comando de combate 1-Wire.
Después del comando del partido, enviar el ID de 8 bytes del dispositivo a la dirección. Utilizamos la macro (1) que estaba poblada con el ID DS2431 en el paso 1. También puede introducir manualmente el ID de 8 bytes. En este punto que debería haber recibido el DS2431 es dirección y estar listo para los comandos.
0x0f es el comando de Bloc de escritura, dice DS2431 esperar datos. Los siguientes dos bytes dicen donde poner los datos, nos ahorrará al principio (0 0). Por último, enviamos 8 bytes valores a almacenar, los números 8 a 1.
Debe escribir un completo 8 bytes a la DS2431. Además, la dirección de la escritura debe estar en un límite de 8 bytes. Ver la hoja de datos para una visión completa de las limitaciones de la escritura.
Paso 3 verificar el Bloc y obtener el código de autorización
1-WIRE > (0x55)(1) 0xaa r: 3 r: 8 r: 2 r: 2
1WIRE reajuste de BUS OK <<< dirigir el dispositivo
COMANDO de ROM escribir 1WIRE: fósforo (0x55) * siga con dirección de 64 bits
1WIRE DIRECCIÓN MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
ESCRITURA: 0xAA <<< comando Bloc de lectura
A granel leer BYTES de 0 x 03: <<< código de autorización
0 x 00 0x00 0x07
A granel leer BYTES de 0x08: <<< los datos que nos envía
0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01
A granel leer BYTES de 0 x 02: <<< CRC para los datos
0xC8 0x86
A granel leer BYTES de 0 x 02: <<< todos 1s después de CRC
0xFF 0xFF
1-WIRE >
Verificar que los datos se recibieron correctamente y obtener un código de autorización de la escritura.
Comenzar otra vez con un reset 1-Wire y partido comando macro (0x55) y la macro de dirección de dispositivo (1). Este tiempo envía DS2431 leer Bloc comando (0xAA) y luego leer un total de 15 bytes.
Los primeros 3 bytes leer (r: 3) son el código de autorización de la escritura, necesitaremos en el siguiente paso para copiar el Bloc en la EEPROM. Los siguientes 8 bytes (r: 8) debe coincidir con los datos que enviamos en el paso 2. Los bytes 2 finales (r: 2) tienen un CRC16 para los datos. Lee después el CRC volver todos 1s.
Paso 4, escriba el Bloc de la EEPROM
1-WIRE > (0x55)(1) 0x55 0x00 0x00 0x07
1WIRE reajuste de BUS OK <<< dirigir el dispositivo
COMANDO de ROM escribir 1WIRE: fósforo (0x55) * siga con dirección de 64 bits
1WIRE DIRECCIÓN MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
ESCRIBIR: 0x55 <<< copiar comandos Bloc
ESCRITURA: 0 x 00 <<< código de autorización de 3 bytes del paso 3
ESCRIBIR: 0 X 00
ESCRIBIR: 0X07
1-WIRE >
Tenemos todo que lo necesario para guardar permanentemente los datos del cojín de rasguño en la EEPROM.
Dirección del dispositivo, a continuación, enviar el comando de Bloc DS2431 copia (0x55) seguido por el código de autorización de tres bytes hemos obtenidos en el paso 3 (0 x 00 0x00 0x07). Si el código de autorización es correcto, los datos se mueven a la EEPROM.
Paso 5, verificar la escritura de Bloc
1-WIRE > (0x55)(1) 0xaa r: 3
1WIRE reajuste de BUS OK <<< dirigir el dispositivo
COMANDO de ROM escribir 1WIRE: fósforo (0x55) * siga con dirección de 64 bits
1WIRE DIRECCIÓN MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
ESCRITURA: 0xAA <<< comando Bloc de lectura
A GRANEL LEE BYTES 0 X 03:
0 x 00 0x00 0x87 <<< actualizado el código de autorización
1-WIRE >
El DS2431 establece la superior poco más del código de autorización de escritura después de Bloc una copia exitosa. Envía otro comando de Bloc de lectura (0xAA) para conseguir el código de autorización actualizada, pero acabo de leer los tres primeros bytes (r: 3). El valor anterior 0x07 ha cambiado a 0x87, el comando de copia fue recibido con éxito.
Paso 6, leer nuevamente los valores
1-WIRE > (0x55)(1) 0xf0 0x00 0x00 r: 8 r: 8
1WIRE reajuste de BUS OK <<< dirigir el dispositivo
COMANDO de ROM escribir 1WIRE: fósforo (0x55) * siga con dirección de 64 bits
1WIRE DIRECCIÓN MACRO 1: 0X2D 0X54 0XD2 0XEF 0X00 0X00 0X00 0X2B
ESCRITURA: 0xF0 <<< DS2431 comando de lectura
ESCRITURA: 0 x 00 <<< 2 byte leído dirección
ESCRIBIR: 0 X 00
A granel leer BYTES de 0x08: <<< leer los bytes 8 escribimos
0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01
A granel leer BYTES de 0x08: <<< Leer más valores
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
1-WIRE >
Verificar la escritura correctamente trabajada por recuperar los valores. Dirección DS2431, entonces enviar la lectura del comando (0xf0) y la dirección a leer (0x00 0x00).
Es posible leer el rango de memoria con un solo comando. Leemos los ocho bytes escribió anteriormente (r: 8), que devuelve los valores esperados. Los ocho bytes más allá de estos valores no han sido escritos y return 0.