128K Serial EEPROM read write erase chip erase functions SPI EEPROM Nucleo F767ZI

Dependents:   SPI_EEPROM

Revision:
1:c389d5f4913d
Parent:
0:81848bf6dd4a
--- a/EE25LC1024.cpp	Fri Jun 01 12:54:02 2018 +0000
+++ b/EE25LC1024.cpp	Tue Oct 23 09:39:31 2018 +0000
@@ -1,12 +1,12 @@
 // EE25LC1024.cpp
-
+#include "includes.h"
 #include"EE25LC1024.h"
 
 // CONSTRUCTOR
 EE25LC1024::EE25LC1024(PinName mosi, PinName miso, PinName sclk, PinName cs) : SPI(mosi, miso, sclk), _cs(cs)
 {
     this->format(SPI_NBIT, SPI_MODE);
-    this->frequency(SPI_FREQ);
+    this->frequency(SPI_FREQ_EEPROM);
     chipDisable();
 }
 // READING
@@ -22,7 +22,7 @@
   int EE25LC1024::ReleaseDPD_ReadSign(void)
 { 
     chipEnable();
-    this->write(RDID);
+    this->write(ReadID);
     this->write(DUMMY_ADDR);
     this->write(DUMMY_ADDR);
     this->write(DUMMY_ADDR);
@@ -55,9 +55,10 @@
     this->write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
     for (int i = 0; i < count; i++) {
         buf[i] =  this->write(DUMMY_ADDR);
-        printf("i= %d   :%c \r\n",i,buf[i]);
+       // printf("i= %d   :%c \r\n",i,buf[i]);
     }
     chipDisable();
+  //  wait_ms(2);
 }
 
 // WRITING
@@ -72,15 +73,24 @@
     this->write(data);
     chipDisable();
     writeDisable();
-    wait_ms(6);
+      uint8_t busy=checkIfBusy();
+    while(busy)
+    {  
+      busy=checkIfBusy(); 
+     }
     // wait(WAIT_TIME);//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
 }
 
 void EE25LC1024::writeStream(int addr, char* buf, int count)
 {
+
     if (count < 1)
         return;
+        
     writeEnable();
+    
+ 
+    
     chipEnable();
     this->write(WRITE);
     this->write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
@@ -91,8 +101,15 @@
     }
     chipDisable();
     writeDisable();
-   wait_ms(6);
-}
+     wait_ms(2);
+   uint8_t busy= checkIfBusy(); 
+   while(busy==1)
+   {
+       //printf("Busy   :%d\r\n",busy);
+       wait_ms(1);
+       busy= checkIfBusy();
+    }
+    }
 
 void EE25LC1024::writeString(int addr, string str)
 {
@@ -108,7 +125,11 @@
         this->write(str.at(i));
     chipDisable();
     writeDisable();
-    wait_ms(6);//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
+      uint8_t busy=checkIfBusy();
+    while(busy)
+    {  
+      busy=checkIfBusy(); 
+     }//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
 }
 
 
@@ -132,7 +153,11 @@
     this->write(CE);
     chipDisable();
     writeDisable();
-    wait_ms(10);//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
+      uint8_t busy=checkIfBusy();
+    while(busy)
+    {  
+      busy=checkIfBusy(); 
+     }//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
 }
 
 
@@ -146,21 +171,31 @@
     this->write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
     chipDisable();
     writeDisable();
-    wait_ms(10);//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
+      uint8_t busy=checkIfBusy();
+    while(busy)
+    {  
+      busy=checkIfBusy(); 
+     }//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
 }
 
 void EE25LC1024::pageErase(int addr)
 {
     
     writeEnable();
+    
     chipEnable();
+    
     this->write(SE);
     this->write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
     this->write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
     this->write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
     chipDisable();
     writeDisable();
-    wait_ms(6);//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
+       uint8_t busy=checkIfBusy();
+    while(busy)
+    {  
+      busy=checkIfBusy(); 
+     }//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails 
      
     
 }
@@ -169,11 +204,17 @@
 uint8_t EE25LC1024::checkIfBusy()
 {
     uint8_t value=readRegister();
-    printf("Value of Status Reg=%X\r\n\r\n",value);
-    if((value&0x01)==0x01)
+   // printf("\r\n Value of Status Reg=%X\r\n\r\n",value);
+    if((value & 0x01)==0x01 )
+    {
+        wait_ms(1);
         return 1;
+        }
     else
+    {
+        wait_ms(1);
         return 0;
+        }
 }
 
 void EE25LC1024::writeRegister(uint8_t regValue)
@@ -210,10 +251,14 @@
     this->write(one);
     chipDisable();
     writeDisable();
-    wait_ms(6);
+      uint8_t busy=checkIfBusy();
+    while(busy)
+    {  
+      busy=checkIfBusy(); 
+     }
 }
 
-long EE25LC1024::raedLong(int addr)
+long EE25LC1024::readLong1(int addr)
 {
     //Read the 4 bytes from the eeprom memory.
     chipEnable();