Pārlūkot izejas kodu

fix:nor flash 擦除实现

Dozingfiretruck 5 mēneši atpakaļ
vecāks
revīzija
7033d12baf
1 mainītis faili ar 4 papildinājumiem un 5 dzēšanām
  1. 4 5
      components/little_flash/src/little_flash.c

+ 4 - 5
components/little_flash/src/little_flash.c

@@ -446,7 +446,7 @@ lf_err_t little_flash_erase(const little_flash_t *lf, uint32_t addr, uint32_t le
         erase_addr = addr / lf->chip_info.read_size;
     }else{
         erase_off = addr % lf->chip_info.erase_size;
-        erase_addr = addr / lf->chip_info.erase_size;
+        erase_addr = addr / lf->chip_info.erase_size * lf->chip_info.erase_size;
     }
     erase_len = len - erase_off;
     while (erase_off || erase_len){
@@ -462,12 +462,11 @@ lf_err_t little_flash_erase(const little_flash_t *lf, uint32_t addr, uint32_t le
         if (erase_len == 0){
             break;
         }
-        erase_addr++;
+
+        erase_addr += (lf->chip_info.type==LF_DRIVER_NAND_FLASH)?lf->chip_info.erase_size/lf->chip_info.read_size:lf->chip_info.erase_size;
+
         if (erase_len<=lf->chip_info.erase_size){
             erase_len = 0;
-            if (erase_off <= lf->chip_info.erase_size){
-                erase_off = 0;
-            }
         }else{
             erase_len -= lf->chip_info.erase_size;
         }