MX25R6435F Library Example

Dependencies:   SPI_MX25R mbed

Fork of MX25Rxx35F_Serial_NOR_Flash_Testbench by alec cohen

Revision:
3:5dcc71b5ea22
Parent:
2:32ff86163041
--- a/main.cpp	Thu Jul 23 17:11:38 2015 +0000
+++ b/main.cpp	Wed Mar 28 13:17:39 2018 +0000
@@ -1,21 +1,20 @@
 #include <ctype.h>
 #include "mbed.h"
 #include "SPI_MX25R.h"
-DigitalOut myled3(LED3); //Red
-DigitalOut myled1(LED1); //Blue
-DigitalOut led_green(LED_GREEN);
-DigitalOut led_red(LED_RED);
+DigitalOut led_green(D5);
+DigitalOut led_red(D4);
  
 // SPI_MX25R(PinName mosi, PinName miso, PinName sclk, PinName cs) ;
-// FRDM-K64F
-// D13 SPI0_SCK  (PTD1) J2<12>
-// D12 SPI0_MISO (PTD3) J2<10>
-// D11 SPI0_MOSI (PTD2) J2<8>
-// D10 SPI0_PCS0 (PTD0) J2<6>
-//          Vdd =3.3V = J3<4>
-//          Gnd =0.0V = J2<14>
-SPI_MX25R spi_mem(PTD2, PTD3, PTD1,PTD0) ;
- 
+// STM32L476
+// D13 SPI0_SCK
+// D12 SPI0_MISO
+// D11 SPI0_MOSI
+// D10 SPI0_PCS0
+//          Vdd =3.3V 
+//          Gnd =0.0V 
+SPI_MX25R spi_mem(D11, D12, D13,D10) ;
+
+uint8_t * mem_nBytes;
  
 void rdRange(unsigned long rd_start_address, unsigned long rd_end_address)
 {
@@ -144,11 +143,13 @@
     printf("  lp                    (Enter LP mode = WREN=06h + WRSR= 01h 000000h)\n\r") ;
     printf("  wrsr  data_3B         (Write SR 01h +3B data,ex: wrsr 000002h, set wren 1st)\n\r") ;
     printf("  wrscr data_1B         (Write Security Reg 2Fh +1B data, caution LDSO bit OTP!)\n\r") ;
-    printf("  se    address         (4KB Sector Erase,     ex: be 0x00    <- note: sets WEL)\n\r") ;
+    printf("  se    address         (4KB Sector Erase,     ex: se 0x00    <- note: sets WEL)\n\r") ;
     printf("  be    address         (64KB Block Erase,     ex: be 0x00    <- note: sets WEL)\n\r") ;
     printf("  32Kbe address         (32KB Block Erase,     ex: 32kbe 0x00 <- note: sets WEL)\n\r") ;
     printf("  ce                    (Chip Erase = C7h,     ex: ce         <- note: sets WEL)\n\r") ;
     printf("  pp    address         (256B Page Program,    ex: pp 0x00    <- note: sets WEL)\n\r") ;
+    printf("  pread    address         (256B Page Read,       ex: pr 0x000000 \n\r") ;
+    printf("  nread    address         (nBytes Read,          ex: pn 0x00 \n\r 0x100 \n\r") ;    
     printf("  read  address         (read 1 byte of data,  ex: read 0x0000)\n\r") ;
     printf("  rd1   startadr endadr (read range of data,   ex: rd1  0x00 0x10)\n\r") ;
     printf("  fread startadr endadr (read range of data,   ex: sfdp 0x00 0x10)\n\r") ;
@@ -182,8 +183,6 @@
     printf("\n\r") ;
     commandMenu() ;
     
-myled3 = 1;
-myled1 = 1;
 led_green = 0;
 led_red = 1;
     
@@ -267,6 +266,30 @@
             printf("\n\r") ;
             printf("                               PP = 02h done\n\r") ;
            
+        }else if (strcmp(cmd, "pread") == 0)   { // Page read
+            scanf("%X", &address) ;
+            printf("reading page at: 0x%X\n\r",address) ;
+            uint8_t pageData[256]={0};
+            spi_mem.readNBytes(address, pageData, 256) ;
+            printf("\n\r________Start________\n\r") ;
+            for ( int jj = 0 ; jj < 256 ; jj++ ) {
+                printf("%02X ", pageData[jj]) ;
+            }
+            printf("\n\r________Done__________\n\r") ;  
+            
+        }else if (strcmp(cmd, "nread") == 0)   { // nBytes read
+            scanf("%X", &address) ;
+            int nBytes=0;
+            scanf("%d", &nBytes) ;
+            printf("reading %d bytes at: 0x%X \n\r",nBytes, address) ;
+            mem_nBytes = new uint8_t [nBytes]; 
+            spi_mem.readNBytes(address, mem_nBytes, nBytes) ;
+            printf("\n\r________Start________\n\r") ;
+            for ( int jj = 0 ; jj < nBytes ; jj++ ) {
+                printf("%02X ", mem_nBytes[jj]) ;
+            }
+            printf("\n\r________Done__________\n\r") ;  
+            
         } else if (strcmp(cmd, "ce") == 0) {    // Chip Erase
             spi_mem.writeEnable() ; // send WREN 1st
             spi_mem.chipErase() ;