Go Down

Topic: Grabacion de memoria externa mediante bus i2c (Read 728 times) previous topic - next topic

copistero

Alguien podria ayudarme con una memoria externa?
Tengo que leer la informacion que contiene y despues modificarla.
La he escaneado y ma da esto

 Scanning ...
       8-bit 7-bit addr
Read:   0xF1  0x78
Write:  0xF0  0x78
Done

surbyte

#1
Jan 12, 2018, 10:25 pm Last Edit: Jan 12, 2018, 10:25 pm by surbyte
Por favor lee las normas del foro.
Cuando termines de hacerlo, completa la información con que memoria quieres leer.

Busca arduino eeprom I2C.
Creo que hay un buen trabajo de Metaconta en el foro. Búscalo.

copistero

Buenas tardes perdón por entrar así en el foro.
La memoria que trató de leer es una Ti046b y no encuentro el datasheet de esta memoria Para escanearla use un ejemplo del Arduino UNO llamado Scan y me dio el resultado mencionado arriba.
Además al usar un analizador lógico he podido ver la comunicación con la EEPROM a través del bus i2c pero no se como iniciar la lectura del chip.
Agradecería vuestra ayuda

surbyte

Sin hoja de datos, no se puede sugerir mucho. Solo tu podrías ya que puedes scannearla, y ver su comportamiento.
En lo personal sigue indagando en la búsqueda de la hoja de datos. Primero Marca  y luego consulta al fabricante.

copistero

#4
Jan 17, 2018, 02:06 pm Last Edit: Jan 17, 2018, 02:55 pm by surbyte
Estoy probando con este ejemplo

Code: [Select]

#include <Wire.h>
void setup() {
 Wire.begin(241);        // join i2c bus (address optional for master)
 Serial.begin(9600);  // start serial for output
}

void loop() {
 Wire.requestFrom(11, 10);    // request 6 bytes from slave device #8

 while (Wire.available()) { // slave may send less than requested
   char c = Wire.read(); // receive a byte as character
   Serial.print(c);         // print the character
 }

 delay(500);
}


Quote
pero no me responde nada con el analizador me dice esto
 write 240 +ack
1+ack
1+ack
@+ack
4+ack
read 241+ack y a continuacion me da lalectura

surbyte

#5
Jan 17, 2018, 03:09 pm Last Edit: Jan 17, 2018, 04:10 pm by surbyte
Esperaba que pusieras una foto al menos, solo para colaborar con la identificación.
Es esta?



Esta esta presente en algunas impresoras Laser.
El esquema que corresponde a la foto es:


J1 ground
J2 SCL
J3 Vdd
J4 SDA

La dirección dicen que es : 0x78
Su pinout

 

Mira este artículo a ver si te da pistas


Solo para ver, prueba con esto, código para una 24LC256 con direccionamiento de 16 bits.

Code: [Select]
#include <Wire.h>   
 
#define disk1 0xF1    // 241 Address of 24LC256 eeprom chip
 
void setup(void)
{
  Serial.begin(9600);
  Wire.begin(); 
 
  unsigned int address = 0;
 
  writeEEPROM(disk1, address, 123);
  Serial.print(readEEPROM(disk1, address), DEC);
}
 
void loop(){}
 
void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data )
{
  Wire.beginTransmission(deviceaddress);
  Wire.send((int)(eeaddress >> 8));   // MSB
  Wire.send((int)(eeaddress & 0xFF)); // LSB
  Wire.send(data);
  Wire.endTransmission();
 
  delay(5);
}
 
byte readEEPROM(int deviceaddress, unsigned int eeaddress )
{
  byte rdata = 0xFF;
 
  Wire.beginTransmission(deviceaddress);
  Wire.send((int)(eeaddress >> 8));   // MSB
  Wire.send((int)(eeaddress & 0xFF)); // LSB
  Wire.endTransmission();
 
  Wire.requestFrom(deviceaddress,1);
 
  if (Wire.available()) rdata = Wire.receive();
 
  return rdata;
}

copistero

muchas gracias por tu ayuda.
efectivamente es ese el chip. y el articulo es muy interesante .
he intentado con el sketch que me has dicho pero solo me responde un valor 255 y lo hace solo con el modulo de arduino, sin pincharle el chip.
que tendria que modificar?

copistero

¿Como podria enviarle a la direccion 0x78 un mensaje 1+ack 1+ack @+ack04+ack?
Para asi esperar la respuesta del esclavo

Go Up