Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 3:6e3c0b23dc6e, committed 2012-03-26
- Comitter:
- jyam
- Date:
- Mon Mar 26 04:30:32 2012 +0000
- Parent:
- 2:2b0daec9f8c0
- Commit message:
- now a derived class of SPI from \"mbedh.h\" (can access SPI\s public member functions; more flexible);
modified W25X40BV API read() to readStream() and write() to writeStream() to avoid overwriting SPI\s write() function (and it is now a more descriptive function name)
Changed in this revision
| W25X40BV.cpp | Show annotated file Show diff for this revision Revisions of this file |
| W25X40BV.h | Show annotated file Show diff for this revision Revisions of this file |
--- 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() {
--- a/W25X40BV.h Mon Mar 19 15:05:56 2012 +0000
+++ b/W25X40BV.h Mon Mar 26 04:30:32 2012 +0000
@@ -26,27 +26,27 @@
#define ADDR_BSHIFT1 8
#define ADDR_BSHIFT0 0
-class W25X40BV {
+class W25X40BV: public SPI {
public:
W25X40BV(PinName mosi, PinName miso, PinName sclk, PinName cs);
- int readByte(int addr); // takes a 24-bit (3 bytes) address and returns the data (1 byte) at that location
- int readByte(int a2, int a1, int a0); // takes the address in 3 separate bytes A[23,16], A[15,8], A[7,0]
- void read(int addr, char* buf, int count); // takes a 24-bit address, reads count bytes, and stores results in buf
+ int readByte(int addr); // takes a 24-bit (3 bytes) address and returns the data (1 byte) at that location
+ int readByte(int a2, int a1, int a0); // takes the address in 3 separate bytes A[23,16], A[15,8], A[7,0]
+ void readStream(int addr, char* buf, int count); // takes a 24-bit address, reads count bytes, and stores results in buf
- void writeByte(int addr, int data); // takes a 24-bit (3 bytes) address and a byte of data to write at that location
- void writeByte(int a2, int a1, int a0, int data); // takes the address in 3 separate bytes A[23,16], A[15,8], A[7,0]
- void write(int addr, char* buf, int count); // write count bytes of data from buf to memory, starting at addr
+ void writeByte(int addr, int data); // takes a 24-bit (3 bytes) address and a byte of data to write at that location
+ void writeByte(int a2, int a1, int a0, int data); // takes the address in 3 separate bytes A[23,16], A[15,8], A[7,0]
+ void writeStream(int addr, char* buf, int count); // write count bytes of data from buf to memory, starting at addr
- void chipErase(); // erase all data on chip
+ void chipErase(); // erase all data on chip
private:
- void writeEnable(); // write enable
- void writeDisable(); // write disable
- void chipEnable(); // chip enable
- void chipDisable(); // chip disable
+ void writeEnable(); // write enable
+ void writeDisable(); // write disable
+ void chipEnable(); // chip enable
+ void chipDisable(); // chip disable
- SPI _spi;
+ // SPI _spi;
DigitalOut _cs;
};