Quick test program to check LPC1768 SPI interface to 25AA080A Microchip SPI 8k EEPROM

Dependencies:   mbed

Fork of SPI_HelloWorld_Mbed by mbed official

Committer:
mcei
Date:
Thu Nov 19 17:08:41 2015 +0000
Revision:
2:853d24908e9f
Parent:
1:d1403e3aa88b
Added comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:466ad3f38b6b 1 #include "mbed.h"
mcei 1:d1403e3aa88b 2 /************************************************************
mcei 1:d1403e3aa88b 3 * Very quick test program to test LPC1768 interface to
mcei 1:d1403e3aa88b 4 * 25AA080A Microchip SPI 8k EEPROM
mcei 1:d1403e3aa88b 5 *
mcei 1:d1403e3aa88b 6 * Note: nothing fancy
mcei 1:d1403e3aa88b 7 *
mcei 1:d1403e3aa88b 8 ************************************************************/
mcei 1:d1403e3aa88b 9 Serial pc(USBTX, USBRX); // tx, rx
mbed_official 0:466ad3f38b6b 10
mbed_official 0:466ad3f38b6b 11 SPI spi(p5, p6, p7); // mosi, miso, sclk
mbed_official 0:466ad3f38b6b 12 DigitalOut cs(p8);
mbed_official 0:466ad3f38b6b 13
mbed_official 0:466ad3f38b6b 14 int main() {
mcei 1:d1403e3aa88b 15 uint8_t ret_val = 0;
mcei 1:d1403e3aa88b 16
mbed_official 0:466ad3f38b6b 17 // Chip must be deselected
mbed_official 0:466ad3f38b6b 18 cs = 1;
mbed_official 0:466ad3f38b6b 19
mbed_official 0:466ad3f38b6b 20 // second edge capture, with a 1MHz clock rate
mcei 1:d1403e3aa88b 21 spi.format(8,0);
mbed_official 0:466ad3f38b6b 22 spi.frequency(1000000);
mbed_official 0:466ad3f38b6b 23
mbed_official 0:466ad3f38b6b 24 // Select the device by seting chip select low
mbed_official 0:466ad3f38b6b 25 cs = 0;
mcei 1:d1403e3aa88b 26
mcei 1:d1403e3aa88b 27 /*write some known data to EEPROM
mcei 1:d1403e3aa88b 28 * Set the WREN latch instruction first
mcei 1:d1403e3aa88b 29 */
mcei 1:d1403e3aa88b 30 spi.write(0x06);
mcei 1:d1403e3aa88b 31 cs = 1;
mcei 1:d1403e3aa88b 32 wait(0.001);
mcei 1:d1403e3aa88b 33 cs = 0;
mcei 1:d1403e3aa88b 34 spi.write(0x02);
mcei 1:d1403e3aa88b 35 spi.write(0x00);
mcei 1:d1403e3aa88b 36 spi.write(0x01); //memory location 0x0001
mcei 1:d1403e3aa88b 37
mcei 1:d1403e3aa88b 38 for (uint8_t i=0; i<15; i++)
mcei 1:d1403e3aa88b 39 {
mcei 1:d1403e3aa88b 40 spi.write(i); //Can only write 16bytes in single write instruction
mcei 1:d1403e3aa88b 41 pc.printf("Writing = 0x%X \t %d\n\r", i, i);
mcei 1:d1403e3aa88b 42 wait(0.001); //probably not be needed as is only writing to a buffer
mcei 1:d1403e3aa88b 43 }
mcei 1:d1403e3aa88b 44 cs = 1; // Must deselect for the write operation to complete
mbed_official 0:466ad3f38b6b 45
mcei 1:d1403e3aa88b 46 wait(2); //Need some delay between write and read
mcei 1:d1403e3aa88b 47
mcei 1:d1403e3aa88b 48 cs = 0;
mbed_official 0:466ad3f38b6b 49
mcei 1:d1403e3aa88b 50 spi.write(0x03);
mcei 1:d1403e3aa88b 51 spi.write(0x00);
mcei 1:d1403e3aa88b 52 for (int i=0; i<32; i++)
mcei 1:d1403e3aa88b 53 {
mcei 2:853d24908e9f 54 ret_val = spi.write(0x01); // The address will increment on each read from here
mcei 1:d1403e3aa88b 55 pc.printf("Reading = 0x%X \t %d\n\r", ret_val, ret_val);
mcei 1:d1403e3aa88b 56 wait(0.2);
mcei 1:d1403e3aa88b 57 }
mcei 1:d1403e3aa88b 58
mcei 1:d1403e3aa88b 59 // Deselect the device
mbed_official 0:466ad3f38b6b 60 cs = 1;
mcei 1:d1403e3aa88b 61
mcei 1:d1403e3aa88b 62
mcei 1:d1403e3aa88b 63
mbed_official 0:466ad3f38b6b 64 }