Quick test program to check LPC1768 SPI interface to 25AA080A Microchip SPI 8k EEPROM
Fork of SPI_HelloWorld_Mbed by
main.cpp@1:d1403e3aa88b, 2015-11-19 (annotated)
- Committer:
- mcei
- Date:
- Thu Nov 19 17:07:34 2015 +0000
- Revision:
- 1:d1403e3aa88b
- Parent:
- 0:466ad3f38b6b
- Child:
- 2:853d24908e9f
initial commit; LPC1768 interfaced to Microchip 25AA080A SPI 8k EEPROM
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:d1403e3aa88b | 54 | ret_val = spi.write(0x01); |
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 | } |