SPI Flash Library for AT45

Dependents:   AT45_spi_flash_example AT45_spi_flash_example PLC1608-V1 RL0201-V1

Fork of AT45 by Steen Jørgensen

Revision:
1:f8e562ae5cc3
Parent:
0:2e9d45485414
--- a/AT45.cpp	Tue Jan 10 09:20:38 2012 +0000
+++ b/AT45.cpp	Tue Nov 14 14:53:37 2017 +0000
@@ -27,7 +27,7 @@
 // Public functions
 //=============================================================================
 
-AT45::AT45(SPI& spi, PinName ncs) : _spi(spi), _ncs(ncs)
+AT45::AT45(SPI *spi, PinName ncs) : _spi(spi), _ncs(ncs)
 {    
     
     _pages = -1;        // number of pages
@@ -86,13 +86,13 @@
         
     // this is done directly as we are reading back an entire buffer, and this can be done more optimally than using _sramread
     _select();
-    _spi.write(0xd4);
+    _spi->write(0xd4);
     _sendaddr (0x0);
-    _spi.write (0x0);   // dont care byte
+    _spi->write (0x0);   // dont care byte
         
     for(int i=0; i<_pagesize ;i++) 
     {
-        data[i] = _spi.write (0x0);  
+        data[i] = _spi->write (0x0);  
     }
     _deselect();            
               
@@ -194,12 +194,12 @@
     }
     
     _select();
-    _spi.write(0x84); // writing to buffer #1
+    _spi->write(0x84); // writing to buffer #1
     _sendaddr (0); // we are writing to the entire buffer
 
     for(int i=0; i<_pagesize ;i++) 
     {
-        _spi.write (data[i]);  
+        _spi->write (data[i]);  
     }
     _deselect();        
         
@@ -207,7 +207,7 @@
                 
     // issue command to write buffer 1 to the appropraite flash page
     _select();  
-    _spi.write (0x83);  
+    _spi->write (0x83);  
     _sendaddr (_getpaddr(address));  
     _deselect();
     
@@ -276,13 +276,13 @@
         
         // this is done directly as we are reading back an entire buffer, and this can be done more optimally than using _sramread
         _select();
-        _spi.write(0xd4);
+        _spi->write(0xd4);
         _sendaddr (0x0);
-        _spi.write (0x0);   // dont care byte
+        _spi->write (0x0);   // dont care byte
         
         for(int i=0;i<256;i++) 
         {
-            data[i] = _spi.write (0x0);  
+            data[i] = _spi->write (0x0);  
         }
         _deselect();            
                 
@@ -292,13 +292,13 @@
         // Now the second page is loaded, pull this out into the second half of the data buffer
         // this is done directly as we are reading back an entire buffer, and this can be done more optimally than using _sramread
         _select();
-        _spi.write(0xd4);
+        _spi->write(0xd4);
         _sendaddr (0x0);
-        _spi.write (0x0);   // dont care byte
+        _spi->write (0x0);   // dont care byte
         
         for(int i=0;i<256;i++) 
         {
-            data[256+i] = _spi.write (0x0);  
+            data[256+i] = _spi->write (0x0);  
         }
         _deselect();                
         return (0);
@@ -316,13 +316,13 @@
         // Now the page has loaded, simply transfer it from the sram buffer to the data array
         // this is done directly as we are reading back an entire buffer, and this can be done more optimally than using _sramread
         _select();
-        _spi.write(0xd4);
+        _spi->write(0xd4);
         _sendaddr (0x0);
-        _spi.write (0x0);   // dont care byte
+        _spi->write (0x0);   // dont care byte
         
         for(int i=0;i<512;i++) 
         {
-            data[i] = _spi.write (0x0);  
+            data[i] = _spi->write (0x0);  
         }
         _deselect();            
         return (0);
@@ -343,7 +343,7 @@
         // this is done directly as we are reading back an entire buffer, and this can be done more optimally than using _sramread
 
         _select();
-        _spi.write(0xd4);
+        _spi->write(0xd4);
 
         if (page %2) // odd numbered block, read from adress 0x200
         { 
@@ -354,11 +354,11 @@
             _sendaddr (0x0);
         }
 
-        _spi.write (0x0);   // dont care byte
+        _spi->write (0x0);   // dont care byte
         
         for(int i=0;i<512;i++) 
         {
-            data[i] = _spi.write (0x0);  
+            data[i] = _spi->write (0x0);  
         }
         _deselect();            
         return (0);
@@ -378,11 +378,11 @@
         // fill the first buffer with the first half of the block
         // do this directly, for better performance
         _select();
-        _spi.write(0x84); // writing to buffer #1
+        _spi->write(0x84); // writing to buffer #1
         _sendaddr (0); // we are writing to the entire buffer
 
         for(int i=0;i<256;i++) {
-            _spi.write (data[i]);  
+            _spi->write (data[i]);  
         }
         _deselect();        
                 
@@ -391,11 +391,11 @@
         // fill the buffer with the second half of the block
         // do this directly, for better performance
         _select();
-        _spi.write(0x84); // writing to buffer #1
+        _spi->write(0x84); // writing to buffer #1
         _sendaddr (0); // we are writing to the entire buffer
 
         for(int i=0;i<256;i++) {
-            _spi.write (data[256+i]);  
+            _spi->write (data[256+i]);  
         }
         _deselect();        
 
@@ -409,11 +409,11 @@
         // fill the first buffer with the block data
         // do this directly, for better performance
         _select();
-        _spi.write(0x84); // writing to buffer #1
+        _spi->write(0x84); // writing to buffer #1
         _sendaddr (0); // we are writing to the entire buffer
 
         for(int i=0;i<512;i++) {
-            _spi.write (data[i]);  
+            _spi->write (data[i]);  
         }
         _deselect();        
         
@@ -421,7 +421,7 @@
                 
         // issue command to write buffer 1 to the appropraite flash page
         _select();  
-        _spi.write (0x83);  
+        _spi->write (0x83);  
         _sendaddr (_getpaddr(page * 512));  
         _deselect();                
     }
@@ -444,7 +444,7 @@
         // Overwrite the appropriate half
         // do this directly, for better performance
         _select();
-        _spi.write(0x84); // writing to buffer #1
+        _spi->write(0x84); // writing to buffer #1
 
         if(page%2)  // this is an odd block number, overwrite second half of buffer 
         {  
@@ -457,7 +457,7 @@
 
         for(int i=0;i<512;i++) 
         {
-            _spi.write (data[i]);  
+            _spi->write (data[i]);  
         }
         _deselect();        
         
@@ -482,10 +482,10 @@
 
     _select();
     // 4 byte command sequence
-    _spi.write(0xc7);
-    _spi.write(0x94);
-    _spi.write(0x80);
-    _spi.write(0x9a);
+    _spi->write(0xc7);
+    _spi->write(0x94);
+    _spi->write(0x80);
+    _spi->write(0x9a);
     _deselect();  
 
     _busy(); // Make erase a blocking function
@@ -526,7 +526,7 @@
         
         _busy();
         _select();
-        _spi.write(0x50);
+        _spi->write(0x50);
         _sendaddr (address);
         _deselect();
         _busy();   
@@ -572,7 +572,7 @@
         
         _busy();
         _select();
-        _spi.write(0x81);
+        _spi->write(0x81);
         _sendaddr (address);
         _deselect();
         _busy();   
@@ -608,10 +608,10 @@
 
     _select();
     // 4 byte command sequence
-    _spi.write(0x3d);
-    _spi.write(0x2a);
-    _spi.write(0x80);
-    _spi.write(0xa6);
+    _spi->write(0x3d);
+    _spi->write(0x2a);
+    _spi->write(0x80);
+    _spi->write(0xa6);
     _deselect();  
 
     _busy(); // Make erase a blocking function   
@@ -628,9 +628,9 @@
 { 
     int id = 0;
     _select();
-    _spi.write(0x9f);
-    id = (_spi.write(0x00) << 8);
-    id |= _spi.write(0x00);
+    _spi->write(0x9f);
+    id = (_spi->write(0x00) << 8);
+    id |= _spi->write(0x00);
     _deselect();            
     return id; 
 }
@@ -640,8 +640,8 @@
 { 
     int status = 0;
     _select();
-    _spi.write(0xd7);
-    status = (_spi.write(0x00));
+    _spi->write(0xd7);
+    status = (_spi->write(0x00));
     _deselect();            
     return status; 
 }
@@ -657,7 +657,7 @@
     if(_deep_down_onoff == false) // Wake up from deep power down
     {
         _select();
-        _spi.write(0xab);
+        _spi->write(0xab);
         _deselect();
         _deep_down = true;
         // remenber to want 35uS before using the device.          
@@ -666,7 +666,7 @@
     {
         _busy();
         _select();
-        _spi.write(0xb9);
+        _spi->write(0xb9);
         _deselect();
         _deep_down = false;
     }
@@ -824,9 +824,9 @@
     else 
         {cmd = 0x87;}
 
-    _spi.write(cmd);
+    _spi->write(cmd);
     _sendaddr (baddr);
-    _spi.write (data);  
+    _spi->write (data);  
 
     _deselect();            
 }
@@ -849,10 +849,10 @@
     else 
         {cmd = 0xd6;}
   
-    _spi.write(cmd);
+    _spi->write(cmd);
     _sendaddr (baddr);
-    _spi.write (0x0);   // dont care byte
-    bufdata = _spi.write (0x0);  
+    _spi->write (0x0);   // dont care byte
+    bufdata = _spi->write (0x0);  
   
     _deselect();            
  
@@ -875,7 +875,7 @@
     else 
         {cmd = 0x86;}
       
-    _spi.write (cmd);  
+    _spi->write (cmd);  
     _sendaddr (paddr);  
     _deselect();     
 
@@ -897,7 +897,7 @@
     else
         {cmd = 0x55;}
 
-    _spi.write (cmd);  
+    _spi->write (cmd);  
     _sendaddr (paddr);
     _deselect();            
 }
@@ -915,17 +915,17 @@
 
     _select();
 
-    _spi.write (0xd2);  // Direct read command
+    _spi->write (0xd2);  // Direct read command
     _sendaddr (addr);
   
     // 4 dont care bytes
-    _spi.write (0x00);  
-    _spi.write (0x00);  
-    _spi.write (0x00);  
-    _spi.write (0x00);  
+    _spi->write (0x00);  
+    _spi->write (0x00);  
+    _spi->write (0x00);  
+    _spi->write (0x00);  
   
     // this one clocks the data
-    data = _spi.write (0x00);  
+    data = _spi->write (0x00);  
     _deselect();            
 
     _busy();
@@ -980,7 +980,7 @@
 // Sends the three lest significant bytes of the supplied address
 void AT45::_sendaddr (int address) 
 {
-    _spi.write(address >> 16);
-    _spi.write(address >> 8);
-    _spi.write(address);      
+    _spi->write(address >> 16);
+    _spi->write(address >> 8);
+    _spi->write(address);      
 }
\ No newline at end of file