0% found this document useful (0 votes)
602 views

Arduino Microwire EEPROM Reader

This document discusses how to read data from a 93C56 EEPROM chip using an Arduino without needing a specialized EEPROM programmer. It provides Arduino code to connect to the chip and read data from it by sending commands over the Microwire interface pins. The code allows reading the EEPROM in either 8-bit or 16-bit addressing modes and prints the retrieved data over the serial port in hexadecimal format.

Uploaded by

pichoncitopi
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
602 views

Arduino Microwire EEPROM Reader

This document discusses how to read data from a 93C56 EEPROM chip using an Arduino without needing a specialized EEPROM programmer. It provides Arduino code to connect to the chip and read data from it by sending commands over the Microwire interface pins. The code allows reading the EEPROM in either 8-bit or 16-bit addressing modes and prints the retrieved data over the serial port in hexadecimal format.

Uploaded by

pichoncitopi
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

Arduino Microwire EEPROM Reader

Postby PVTech Sun Feb 24, 2013 4:23 pm


Sometimes when we are dealing with ECU stuff and not only we come across a
microwire eeprom.
Those EERPOMs are 93Cx6 series EEPROMs. Mainly they hold data like immobiliser
code, VIN, odometer and generally data used by the main program routine.
So how do we read the data if we dont have a microwire EEPROM programmer?
There is no problem if you have an Arduino. I did some searching and i came
across some code that can read the data from a 93C56 EEPROM.
The connections are easy and you can read the data without desoldering them
from the ECU or the dashboard.

Here is the code to read the 93C56 eeprom (L56R). There are comments if you
want to read it in 8bit or 16bit organization.

//defining pins for eeprom


int DATA_IN = 2; // EEPROM PIN#4
int DATA_OUT =3; // EEPROM PIN#3
int CLOCK =4; // EEPROM PIN#2
int CHIP_SEL =5; // EEPROM PIN#1

int high = 0,low =0; //high and low address


byte dataword[]={"hello world!"}; //data to send in eeprom

byte READ = 0b1100; //read instruction ob indica binario


byte WRITE = 0b1010; //write instruction
byte EWEN = 0b10011; //erase write enable instruction
byte EWDS = 0b10000; //erase write DISABLE instruction

void setup(){
pinMode(CLOCK ,OUTPUT);
pinMode(DATA_OUT ,OUTPUT);
pinMode(DATA_IN ,INPUT);
pinMode(CHIP_SEL ,OUTPUT);
digitalWrite(CHIP_SEL ,LOW);
Serial.begin(9600);
}

void loop()
{
char buf[8];

//digitalWrite(CHIP_SEL ,HIGH);
//shiftOut(DATA_OUT,CLOCK,MSBFIRST,EWEN); //sending EWEN instruction
//digitalWrite(CHIP_SEL ,LOW);
delay(10);

low=0;

// For 8bit organization change it to i<=255


for (int i=0; i<=127; i++)
{
digitalWrite(CHIP_SEL ,HIGH);
//SHIFTOUT(DATAPIN,CLOCKPIN,BITORDER,VALOR)
shiftOut(DATA_OUT,CLOCK,MSBFIRST,READ); //sending READ instruction
shiftOut(DATA_OUT,CLOCK,MSBFIRST,low); //sending low address
byte a = shiftIn(DATA_IN,CLOCK,MSBFIRST); //sendind data

// The Following Line is for x16Bit Organization


// Comment it for 8 bit organization
byte b = shiftIn(DATA_IN,CLOCK,MSBFIRST); //sendind data

digitalWrite(CHIP_SEL ,LOW);

// For 8bit Organization change it to low++;


low+=2; //incrementing low address

// The Following Line is for x16bit Organization


sprintf(buf, "%02X%02X", a,b);

// The Following Line is for x8bit Organization


//sprintf(buf, "%02X", a);

Serial.print(buf);
}
while(1);
}

You might also like