Winbond W25Q80BV SPI library
Diff: W25Q80BV.cpp
- Revision:
- 2:e8dc659cf54e
- Parent:
- 1:72b556f51896
- Child:
- 3:efef6d4c6918
--- a/W25Q80BV.cpp Thu Jan 30 00:51:50 2014 +0000 +++ b/W25Q80BV.cpp Thu Jan 30 01:29:52 2014 +0000 @@ -9,14 +9,11 @@ W25Q80BV::W25Q80BV(PinName mosi, PinName miso, PinName sclk, PinName cs):_cs(cs),_mosi(mosi),_miso(miso),_sclk(sclk){ } - - - //Get ID int W25Q80BV::getMID( ){ int ID = 0; chipEnable(); - this->writeSPI(D_ID); + this->writeSPI(DEV_ID ); this->writeSPI(DUMMY_ADDR); this->writeSPI(DUMMY_ADDR); this->writeSPI(DUMMY_ADDR); @@ -30,7 +27,7 @@ // READING int W25Q80BV::readByte(int addr) { chipEnable(); - this->writeSPI(R_INST); + this->writeSPI(READ_DATA); this->writeSPI((addr & ADDR_BMASK2) >> ADDR_BSHIFT2); this->writeSPI((addr & ADDR_BMASK1) >> ADDR_BSHIFT1); this->writeSPI((addr & ADDR_BMASK0) >> ADDR_BSHIFT0); @@ -40,7 +37,7 @@ } int W25Q80BV::readByte(int a2, int a1, int a0) { chipEnable(); - this->writeSPI(R_INST); + this->writeSPI(READ_DATA); this->writeSPI(a2); this->writeSPI(a1); this->writeSPI(a0); @@ -52,7 +49,7 @@ if (count < 1) return; chipEnable(); - this->writeSPI(R_INST); + this->writeSPI(READ_DATA); this->writeSPI((addr & ADDR_BMASK2) >> ADDR_BSHIFT2); this->writeSPI((addr & ADDR_BMASK1) >> ADDR_BSHIFT1); this->writeSPI((addr & ADDR_BMASK0) >> ADDR_BSHIFT0); @@ -65,19 +62,19 @@ void W25Q80BV::writeByte(int addr, int data) { writeEnable(); chipEnable(); - this->writeSPI(W_INST); + this->writeSPI(WRITE_DATA); this->writeSPI((addr & ADDR_BMASK2) >> ADDR_BSHIFT2); this->writeSPI((addr & ADDR_BMASK1) >> ADDR_BSHIFT1); this->writeSPI((addr & ADDR_BMASK0) >> ADDR_BSHIFT0); this->writeSPI(data); chipDisable(); writeDisable(); - wait(WAIT_TIME); + wait(WAIT_TIME);//NO ESTOY SEGURO SI ASI HAY QUE ESPERAR } void W25Q80BV::writeByte(int a2, int a1, int a0, int data) { writeEnable(); chipEnable(); - this->writeSPI(W_INST); + this->writeSPI(WRITE_DATA); this->writeSPI(a2); this->writeSPI(a1); this->writeSPI(a0); @@ -91,7 +88,7 @@ return; writeEnable(); chipEnable(); - this->writeSPI(W_INST); + this->writeSPI(WRITE_DATA); this->writeSPI((addr & ADDR_BMASK2) >> ADDR_BSHIFT2); this->writeSPI((addr & ADDR_BMASK1) >> ADDR_BSHIFT1); this->writeSPI((addr & ADDR_BMASK0) >> ADDR_BSHIFT0); @@ -106,7 +103,7 @@ void W25Q80BV::chipErase() { writeEnable(); chipEnable(); - this->writeSPI(C_ERASE_INST); + this->writeSPI(CHIP_ERASE); chipDisable(); writeDisable(); wait(WAIT_TIME); @@ -116,12 +113,12 @@ //Private Functions void W25Q80BV::writeEnable() { chipEnable(); - this->writeSPI(WE_INST); + this->writeSPI(WRITE_ENABLE); chipDisable(); } void W25Q80BV::writeDisable() { chipEnable(); - this->writeSPI(WD_INST); + this->writeSPI(WRITE_DISABLE); chipDisable(); } void W25Q80BV::chipEnable() { @@ -135,17 +132,20 @@ int aux =0,aux2=0,i=0,read=0; //aux=data; for(i=0;i<8;i++){ + //output _sclk = 0; - //output aux = data&0x80; aux >>= 7; _mosi = aux; data <<= 1; + //input - read <<= 1; + _sclk = 1; + //maybe wait? test it first + read <<= 1; aux2 = _miso; read |= aux2; - _sclk = 1; } + _sclk = 0; return read; } \ No newline at end of file