SPI Single IO NOR Flash Library for Nucleo F767ZI Interfacing
Fork of W25X40BV by
Revision 8:9f5a31575cdd, committed 2018-10-23
- Comitter:
- shivanandgowdakr
- Date:
- Tue Oct 23 10:22:44 2018 +0000
- Parent:
- 6:ef894010def4
- Commit message:
- OK
Changed in this revision
S25FL256S.cpp | Show annotated file Show diff for this revision Revisions of this file |
S25FL256S.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r ef894010def4 -r 9f5a31575cdd S25FL256S.cpp --- a/S25FL256S.cpp Tue May 22 09:44:34 2018 +0000 +++ b/S25FL256S.cpp Tue Oct 23 10:22:44 2018 +0000 @@ -25,6 +25,7 @@ void S25FL256S::readStream(int addr, char* buf, int count) { + int i; if (count < 1) return; chipEnable(); @@ -33,10 +34,11 @@ 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++) { + for ( 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]); } + buf[i]='\0'; chipDisable(); } @@ -71,10 +73,16 @@ for (int i = 0; i < count; i++) { this->write(buf[i]); } - wait(0.1); + chipDisable(); writeDisable(); - wait(WAIT_TIME); + uint8_t busy=checkIfBusy(); + while(busy) + { + busy=checkIfBusy(); + } + + } void S25FL256S::writeString(int addr, string str) @@ -104,9 +112,10 @@ this->write(RDSR1); uint8_t val=this->write(DUMMY_ADDR); chipDisable(); - //wait(WAIT_TIME);//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails - //printf("value of reg is %X \r\n",val); - return(val); + if(val&0x01==0x01) + return 1; + else + return 0; } //ERASING @@ -132,7 +141,7 @@ wait(WAIT_TIME);//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails } -void S25FL256S::sectorErase(int addr) +int S25FL256S::sectorErase(int addr) { writeEnable(); chipEnable(); @@ -143,7 +152,15 @@ this->write((addr & ADDR_BMASK0) >> ADDR_BSHIFT0); chipDisable(); writeDisable(); - wait(WAIT_TIME);//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(); + + printf(" Am Here \r\n\r\n"); + }//instead of wait poll for WIP flag of status reg or use checkIfBusy() function...see main for more dtails + + return 1; } void S25FL256S::reset() { @@ -157,7 +174,7 @@ uint8_t S25FL256S::checkIfBusy() { uint8_t value=readRegister(); - printf("Value of Status Reg=%X\r\n\r\n",value); + // printf("Value of Status Reg=%X\r\n\r\n",value); if((value&0x01)==0x01) return 1; else
diff -r ef894010def4 -r 9f5a31575cdd S25FL256S.h --- a/S25FL256S.h Tue May 22 09:44:34 2018 +0000 +++ b/S25FL256S.h Tue Oct 23 10:22:44 2018 +0000 @@ -6,7 +6,7 @@ #include "mbed.h" #include <string> -#define SPI_FREQ 5000000 //Change SPI Frequency Here +#define SPI_FREQ 10000000 //Change SPI Frequency Here #define SPI_MODE 0 // SPI Mode can be 0 or 3 . see data sheet #define SPI_NBIT 8 // Number of bits 8. @@ -120,7 +120,7 @@ void writeByte(int addr, int data); // takes a 32-bit (4 bytes) address and a byte of data to write at that location void writeStream(int addr, char* buf, int count); // write count bytes of data from buf to memory, starting at addr void writeString(int add, string str); - void sectorErase(int addr); + int sectorErase(int addr); void chipErase(); //erase all data on chip uint8_t readRegister(); uint8_t checkIfBusy(); // Check if IC is bury writing or erasing