Be very careful with the 5v pin on the Pi because although your EEPROM chip may function at 5v, it will also output 5v on the Data Bus when you read from it. I am attaching the GPIO layout of Raspberry Pi B+ along with the pin connections to the chip. For example, if the MSB is on pin D7 of the Data Bus, then the Least Significant Bit is going the be on pin D0. Once you know which pin has the MSB, the rest of the pins represent the rest of the bits in ascending or descending order. The documentation of your chip will define if the Most Significant Bit is at the highest or lowest pin number on the Data Bus. Different chips may use a different ordering scheme when storing bytes. Most Significant Bit is essentially the bit that represents the highest value in a byte. The pins on the Data Bus as numbered: D0, D1, D2.
If we choose to read from the chip, then the Data Bus pins will be set high/low to represent the 1/0 of the byte contained in the address we selected. If we choose to write to the chip, we set the address we wish to write to via the Address Bus and then we set the Data Bus by pulling its pins up/down to represent one byte.
The Data Bus, in contrast with the Address Bus, can be either input or output, depending on the operation selected. The pins on the Address Bus are typically numbered like so: A0, A1, A2, A3. So a chip with 2048 addresses will have 2048 byte capacity. Each address represented by any combination of bits contains 1 byte. To set an address we pull up/down the pins to represent 1/0. The higher the capacity, the more addresses are needed and therefore the more pins the bus will have. The number of pins for the Address Bus depends on the capacity of the chip. The EEPROM chip, along with the CE, OE and WE pins, will also have a set of pins for setting an address and a set of pins for reading/writing data to the selected address. Repeat the above for the next address you wish to read.ĭata Bus and Address Bus. Read the memory address (the Data bus pins will now be set high/low according to the data in the address)ĭisable output (the Data bus output is still enabled at this point so I can read the data)ĭisable chip (power down, no output on the Data bus at this point) Set the memory address (pull up/down Address bus pins to form an address in binary format) So if we wish to read from the chip, our sequence would be as follows: Suppose I want to read some data from my EEPROM, what do I need to do with these pins to make it all work? Performing operations on EEPROM is all about doing things in the right order. Always connect all the pins to your circuit! For example, RF interference may cause a high or low signal and therefore make the pin act as if it is enabled or disabled. Warning!!!: Leaving one of these pins disconnected from the circuit does not equal to it being pulled down! If any of the pins are left disconnected from the circuit we call them "floating" and essentially their state is random and undetermined. This may sound counter intuitive since you expect to pull up to turn on something but such is life sometimes. In some cases (and in our case in particular), pulling up a pin causes the corresponding state to be Disabled instead of Enabled. The jargon used for the operation is "pull up" for connecting to voltage and "pull down" for connecting to the ground. It is easy! Depending on your EEPROM chip, you enable or disable these pins by connecting them to a voltage source or to the ground. Depending on the type of chip, connecting it to ground or to voltage will make the chip write data to a selected memory address (more on that later). Write Enable is similar to Output Enable but used for writing data to the chip. Disabling the Output completes the read operation. Once again, depending on the chip, connecting this pin to the ground or to voltage will tell the chip to present you with the contents of given memory address (more on that later). Output Enable is a pin used to tell the chip that you want to read from it. Disabling the chip allows us to power down the chip while leaving it electrically connected to our circuit. Needless to say, that if we want to perform any operation we need to enable the chip. Depending on the type of chip, connecting this pin to the ground or to voltage will turn the chip on or off. This is done using 3 control pins typically named Chip Enable, Output Enable and Write Enable.Ĭhip Enable controls whether or not the chip is powered up. In order to read, write and erase data from an EEPROM chip, we must first bring the chip at the correct state. This simple tutorial will guide users through the process of interfacing an EEPROM chip to a Raspberry Pi using the GPIO pins and performing operations with Python scripts.