X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Fdataflash.c;h=67bd9ade86e56638a4dbc0cdcc5df7e35d0c4ae3;hb=12dc4138a313fbfb8d64ed1fc26735eaf96c84d5;hp=2c185083658ca34428418472312d7f0b52c8acf1;hpb=c73f3dacae49ebba62b3055fadbb941b36eda8f7;p=bertos.git diff --git a/drv/dataflash.c b/drv/dataflash.c index 2c185083..67bd9ade 100644 --- a/drv/dataflash.c +++ b/drv/dataflash.c @@ -183,6 +183,12 @@ static uint8_t dataflash_stat(void) stat = spi_sendRecv(DFO_READ_STATUS); stat = spi_sendRecv(0x00); + /* + * Note: this function could be call one more time + * to check register status (es. check if memory has been + * teminate one operation), and so we don't disable CS to + * allow fast reading of register status. + */ return stat; } @@ -195,6 +201,8 @@ static uint8_t dataflash_stat(void) static uint8_t dataflash_cmd(dataflash_t page_addr, dataflashOffset_t byte_addr, DataFlashOpcode opcode) { + uint8_t stat; + send_cmd(page_addr, byte_addr, opcode); CS_TOGGLE(); @@ -205,7 +213,15 @@ static uint8_t dataflash_cmd(dataflash_t page_addr, dataflashOffset_t byte_addr, */ while(!(dataflash_stat() & BUSY_BIT)); - return (dataflash_stat()); + stat = dataflash_stat(); + + /* + * Data flash has been terminate a sent command, and so + * disable CS. + */ + CS_DISABLE(); + + return (stat); } @@ -234,6 +250,7 @@ static uint8_t dataflash_read_byte(dataflash_t page_addr, dataflashOffset_t byte spi_sendRecv(0x00); //Send 8 don't care bit. data = spi_sendRecv(0x00); //Read byte. + CS_DISABLE(); return data; @@ -293,8 +310,6 @@ static void dataflash_write_block(dataflashOffset_t byte_addr, DataFlashOpcode o static void dataflash_loadPage(dataflash_t page_addr) { dataflash_cmd(page_addr, 0x00, DFO_MOV_MEM_TO_BUFF1); - - CS_DISABLE(); } /** @@ -306,7 +321,6 @@ void dataflash_flush(void) { dataflash_cmd(previous_page, 0x00, DFO_WRITE_BUFF1_TO_MEM_E); - CS_DISABLE(); page_modified = false; kprintf("\n::=> Flush page:... <%ld>\n", previous_page);