请教ch573f的EEPROM在操作的时候擦除与不擦除都能够写入?
            uint8_t addr;
            uint8_t s,t;
            uint16_t b;
            addr = dtuParameter.bus_addr;
            memset(encoding.pdata,0,8);


            EEPROM_READ(BLE_DTU_PARAMETER_NVID,&dtuParameter,sizeof(dtuParameter));
            Data_flash[0] = dtuParameter.humi;
            Data_flash[1] = dtuParameter.temp;
            Data[0] = dtuParameter.baud;
            memcpy(Data + 1,dtuParameter.DEVICE_ID,10);
            Data[11] = dtuParameter.flag;
            //t = EEPROM_ERASE(BLE_DTU_PARAMETER_NVID,256);
            EEPROM_READ(BLE_DTU_PARAMETER_NVID,Test_Buf,256);
            for(b = 0;b < 10;b++)
            {
            PRINT("Test = %x \n",Test_Buf[b]);
            }
//            if(t == SUCCESS)
            {
              dtuParameter.bus_addr = decoding.pdata[0];
//              dtuParameter.humi = Data_flash[0];
//              dtuParameter.temp = Data_flash[1];
//              dtuParameter.baud = Data[0];
//              memcpy(dtuParameter.DEVICE_ID,Data + 1,10);
//              dtuParameter.flag = Data[11];
              PRINT("bus_addr = %x\n humi = %d\n temp = %d\n baud = %x\n DEVICE_ID = %x\n flag = %x \n",dtuParameter.bus_addr,dtuParameter.humi,dtuParameter.temp,dtuParameter.baud,dtuParameter.DEVICE_ID,dtuParameter.flag);
            s = EEPROM_WRITE(BLE_DTU_PARAMETER_NVID,&dtuParameter,sizeof(dtuParameter));
            if(s != SUCCESS)
            {
              encoding.pdata[0] = 1;
              dtuParameter.bus_addr = addr;
            }
            else {
              encoding.pdata[0] = 0;
            }
            encoding.num = 1;
            encoding.len = 8;
            send_flag = 0;
            dri_tick_mode = MODE_TICK_ENCODE;
            }


icon_jpg.gif1648540652(1).jpg

icon_jpg.gif1648540693(1).jpg

第一个是擦除,第二个是没擦除,都是能够成功写入的


EEPROM_WRITE好像是不会失败的,你要测他是不是不擦除也可以写,可以按照如下步骤:

  1. 先全擦一个EEPROM扇区,读取所有数据查看是否全为0xff

  2. 将扇区全部写0,读取所有数据查看是否为0x00

  3. 这次写入你自己准备的特殊数据,然后再将扇区数据全部读取出来查看


  1. 那个testbuf就是全擦后的数据都是0xff,之后写入,是可以的。

  2. 写0,并且读出也是可以的。

    icon_jpg.gif1e6b3ea8aa69d9c1e9820d3423a8e8b.jp写零,读取

  3. 写入我自己的数据,再读出,也都是正确的。


不擦就写的话是不保证正确率的,是会出错的,建议使用标准操作,擦了再写,才能保证写入数据无误。


只有登录才能回复,可以选择微信账号登录