Simple read/write API for the W25X40BV SPI Flash IC wiki: http://mbed.org/cookbook/W25X40BV

Revision:
3:6e3c0b23dc6e
Parent:
1:cd41b8e3fdad
--- a/W25X40BV.cpp	Mon Mar 19 15:05:56 2012 +0000
+++ b/W25X40BV.cpp	Mon Mar 26 04:30:32 2012 +0000
@@ -3,9 +3,9 @@
 #include"W25X40BV.h"
 
 // CONSTRUCTOR 
-W25X40BV::W25X40BV(PinName mosi, PinName miso, PinName sclk, PinName cs) : _spi(mosi, miso, sclk), _cs(cs) {
-    _spi.format(SPI_NBIT, SPI_MODE);
-    _spi.frequency(SPI_FREQ);
+W25X40BV::W25X40BV(PinName mosi, PinName miso, PinName sclk, PinName cs) : SPI(mosi, miso, sclk), _cs(cs) {
+    this->format(SPI_NBIT, SPI_MODE);
+    this->frequency(SPI_FREQ);
     chipDisable();
 }
 
@@ -13,34 +13,34 @@
 // READING
 int W25X40BV::readByte(int addr) {
     chipEnable();
-    _spi.write(R_INST);
-    _spi.write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
-    _spi.write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
-    _spi.write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
-    int response = _spi.write(DUMMY_ADDR);
+    this->write(R_INST);
+    this->write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
+    this->write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
+    this->write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
+    int response = this->write(DUMMY_ADDR);
     chipDisable();
     return response;
 }
 int W25X40BV::readByte(int a2, int a1, int a0) {
    chipEnable();
-   _spi.write(R_INST);
-   _spi.write(a2);
-   _spi.write(a1);
-   _spi.write(a0);
-   int response = _spi.write(DUMMY_ADDR);
+   this->write(R_INST);
+   this->write(a2);
+   this->write(a1);
+   this->write(a0);
+   int response = this->write(DUMMY_ADDR);
     chipDisable();
     return response;
 }
-void W25X40BV::read(int addr, char* buf, int count) {
+void W25X40BV::readStream(int addr, char* buf, int count) {
     if (count < 1)
         return;
     chipEnable();
-    _spi.write(R_INST);
-    _spi.write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
-    _spi.write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
-    _spi.write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
+    this->write(R_INST);
+    this->write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
+    this->write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
+    this->write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
     for (int i = 0; i < count; i++)
-        buf[i] =  _spi.write(DUMMY_ADDR);
+        buf[i] =  this->write(DUMMY_ADDR);
     chipDisable();
 }
 
@@ -48,11 +48,11 @@
 void W25X40BV::writeByte(int addr, int data) {
     writeEnable();
     chipEnable();
-    _spi.write(W_INST);
-    _spi.write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
-    _spi.write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
-    _spi.write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
-    _spi.write(data);
+    this->write(W_INST);
+    this->write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
+    this->write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
+    this->write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
+    this->write(data);
     chipDisable();
     writeDisable();
     wait(WAIT_TIME);
@@ -60,26 +60,26 @@
 void W25X40BV::writeByte(int a2, int a1, int a0, int data) {
     writeEnable();
     chipEnable();
-    _spi.write(W_INST);
-    _spi.write(a2);
-    _spi.write(a1);
-    _spi.write(a0);
-    _spi.write(data);
+    this->write(W_INST);
+    this->write(a2);
+    this->write(a1);
+    this->write(a0);
+    this->write(data);
     chipDisable();
     writeDisable();
     wait(WAIT_TIME);
 }
-void W25X40BV::write(int addr, char* buf, int count) {
+void W25X40BV::writeStream(int addr, char* buf, int count) {
     if (count < 1)
         return;
     writeEnable();
     chipEnable();
-    _spi.write(W_INST);
-    _spi.write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
-    _spi.write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
-    _spi.write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
+    this->write(W_INST);
+    this->write((addr & ADDR_BMASK2) >> ADDR_BSHIFT2);
+    this->write((addr & ADDR_BMASK1) >> ADDR_BSHIFT1);
+    this->write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0);
     for (int i = 0; i < count; i++)
-        _spi.write(buf[i]);
+        this->write(buf[i]);
     chipDisable();
     writeDisable();
     wait(WAIT_TIME);
@@ -89,7 +89,7 @@
 void W25X40BV::chipErase() {
     writeEnable();
     chipEnable();
-    _spi.write(C_ERASE_INST);
+    this->write(C_ERASE_INST);
     chipDisable();
     writeDisable();
     wait(WAIT_TIME);
@@ -99,12 +99,12 @@
 //ENABLE/DISABLE (private functions)
 void W25X40BV::writeEnable() {
     chipEnable();
-    _spi.write(WE_INST);
+    this->write(WE_INST);
     chipDisable();
 }
 void W25X40BV::writeDisable() {
     chipEnable();
-    _spi.write(WD_INST);
+    this->write(WD_INST);
     chipDisable();
 }
 void W25X40BV::chipEnable() {