Microchip SPI SRAM 23LC1024 demo

Dependencies:   mbed

Revision:
1:4b45ee2c9b51
Parent:
0:9750a875cbda
Child:
2:e0d7ea47d2a5
--- a/main.cpp	Sat Feb 28 03:42:02 2015 +0000
+++ b/main.cpp	Mon Nov 09 12:05:33 2015 +0000
@@ -28,28 +28,25 @@
 }
 
 /*
- * SPI COMMAND (Microchip 23K256 SRAM)
- * 1byte read/write 
- * page read/write 
- * sequential read/write
- * status/configuration register read/write
+ * SPI COMMAND (Microchip 23LC1024, 23K256 SPI SRAM)
  */
 enum Microchip23K256Commnd {
     READ  = 0x03u,
     WRITE = 0x02u,
-    RDSR  = 0x05u,
-    WRSR  = 0x01u,
     EDIO  = 0x3bu,
     EQIO  = 0x38u,
     RSTIO = 0xffu,
+    RDSR  = 0x05u,
+    WRSR  = 0x01u,
 };
 
-/** SRAM Mode (Microchip 23K256 SRAM) */
+/** SRAM Mode (Microchip 23LC1024, 23K256 SPI SRAM) */
 enum Microchip23K256Mode {
     MODE_MASK  = 0xc0u,
     BYTE       = 0x00u,
     SEQUENTIAL = 0x40u, // default operation
     PAGE       = 0x80u,
+    RESERVED   = 0xC0u,
 };
 
 /**
@@ -212,8 +209,6 @@
 try_byte_access() {
     const uint8_t size = 16;
     
-    change_mode(BYTE);
-
     // write data
     for (int i = 0; i < size; i++) {
         write_byte(i, i);
@@ -239,8 +234,6 @@
     const uint32_t address = 0x1000;
     const uint32_t size = 32;
 
-    change_mode(PAGE);
-
     // write
     for (uint32_t i = 0; i < size; ++i) {
         buf[i] = i;
@@ -269,8 +262,6 @@
     const uint32_t address = 0x2000;
     const uint32_t size = 256;
 
-    change_mode(SEQUENTIAL);
-
     // write
     for (uint32_t i = 0; i < size; ++i) {
         buf[i] = i;
@@ -350,16 +341,23 @@
     wait_until_user_button_pressed();
     try_single_byte_access();
 
+    pc.printf("\r\npush user button to start: try_sequential_access (default)\r\n");
+    wait_until_user_button_pressed();
+    try_sequential_access();
+
     pc.printf("\r\npush user button to start: try_byte_access\r\n");
     wait_until_user_button_pressed();
+    change_mode(BYTE);
     try_byte_access();
 
     pc.printf("\r\npush user button to start: try_page_access\r\n");
     wait_until_user_button_pressed();
+    change_mode(PAGE);
     try_page_access();
 
     pc.printf("\r\npush user button to start: try_sequential_access\r\n");
     wait_until_user_button_pressed();
+    change_mode(SEQUENTIAL);
     try_sequential_access();
 
     pc.printf("\r\nTEST END\r\n\r\n");