Bus Pirate Edu Kit Exercise no.9

From DP

(Difference between revisions)
Jump to: navigation , search
(Overview)
(Overview)
Line 9: Line 9:
The first byte sent to the device is the command byte and it defines further communication.T
The first byte sent to the device is the command byte and it defines further communication.T
-
here are 6 commands pictured above, which are divided in 3 groups. The first group is used to read and write data to the EEPROM. When sending or receiving data from the IC the Bus Pirate needs to send the command byte followed by the address of the of where the data should be written or read to. The subsequent bytes are the data that is either written to or read from the EEPROM.
+
There are 6 commands pictured above, which are divided in 3 groups. The first group is used to read and write data to the EEPROM. When sending or receiving data from the IC the Bus Pirate needs to send the command byte followed by the address of where the data should be written or read to. The subsequent bytes are the data that is either written to or read from the EEPROM.
 +
 
 +
The second group of commands are the write enable and disable. This is a singly byte command. You simply send 0x06 to enable writing to the EEPROM,  or 0x04 to disable it.
 +
 
 +
The third group is intended for reading and writing to the status register. To read the status register you send the appropriate command and the folowing revived byte is the contents of the status register.
 +
To write to it, you send the appropriate command followed by the value of the status register you'd like to set.
==The Circuit==
==The Circuit==

Revision as of 13:50, 24 April 2013

Contents

Overview

BP EK E9 overview.jpg

In this exercise we'll demonstrate how to interface the Bus Pirate with the 25LC040A 512 byte EEPROM IC over the SPI protocol. This EEPROM is organized in 32 pages each 16 bytes long, meaning that at any single time only 16 bytes can be read or written to the IC.

The protocol used to communicate with the IC is the standard SPI protocol at a maximum of 10MHz clock speed.

The internal communication protocol is defined in the datasheet. The first byte sent to the device is the command byte and it defines further communication.T

There are 6 commands pictured above, which are divided in 3 groups. The first group is used to read and write data to the EEPROM. When sending or receiving data from the IC the Bus Pirate needs to send the command byte followed by the address of where the data should be written or read to. The subsequent bytes are the data that is either written to or read from the EEPROM.

The second group of commands are the write enable and disable. This is a singly byte command. You simply send 0x06 to enable writing to the EEPROM, or 0x04 to disable it.

The third group is intended for reading and writing to the status register. To read the status register you send the appropriate command and the folowing revived byte is the contents of the status register. To write to it, you send the appropriate command followed by the value of the status register you'd like to set.

The Circuit

BP EK E9 schematic.jpgBP EK E9 circuit.jpg

Breadboard legend

IC Location Breadboard wiring legend
IC PIN1 (+) PIN2 (-)
25LC040A E14 E15
Signal name Contact1 Contact2
5V BP_5V BB_+_left
5V BB_+_left BB_+_right
5V BB_+_left A16
5V BB_+_right J14
5V BB_+_right J15
GND BP_GND BB_-_left
GND BB_-_left A17
MOSI BP_MOSI J17
MISO BP_MISO A15
CLK BP_CLK J16
CS BP_CS A14
  • The (+) and (-) next to PIN1 and PIN2 are intended for devices such as LEDs, where PIN1 should be the anode and connected to a higher potential then PIN2.

Bus Pirate Terminal


HiZ>m<<<the mode command
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
x. exit(without change)

(1)>5<<<select the SPI mode<<<
Set speed:
1. 30KHz
2. 125KHz
3. 250KHz
4. 1MHz

(1)>4<<<set the SPI speed to 1 MHz<<<
Clock polarity:
1. Idle low *default
2. Idle high

(1)>1<<<set clock polarity to idle low
Output clock edge:
1. Idle to active
2. Active to idle *default

(2)>2<<<set output clock edge to active to idle
Input sample phase:
1. Middle *default
2. End

(1)>1<<<select the middle input sample phase
CS:
1. CS
2. /CS *default

(2)>2<<<select the inverted CS signal (active low)
Select output type:
1. Open drain (H=Hi-Z, L=GND)
2. Normal (H=3.3V, L=GND)

(1)>2<<<set the output type to normal
Ready
SPI>W<<<turn on the power supplies
POWER SUPPLIES ON

First we need to setup the SPI protocol as per 25LC040A's datasheet. Once the protocol is setup we turn on the power supplies via the 'W' command.


SPI>[0b110]
/CS ENABLED
WRITE: 0x06
/CS DISABLED



SPI>[0b10 0 1 2 3 4 5]
/CS ENABLED
WRITE: 0x02
WRITE: 0x00
WRITE: 0x01
WRITE: 0x02
WRITE: 0x03
WRITE: 0x04
WRITE: 0x05
/CS DISABLED



SPI>[0b11 0 r:5]
/CS ENABLED
WRITE: 0x03
WRITE: 0x00
READ: 0x01 0x02 0x03 0x04 0x05
/CS DISABLED



SPI>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
x. exit(without change)

(1)>1
Ready
HiZ>

Not Working?

Taking it further