W25Q128手册中给到的最小擦除单位为4K。
SFUD中支持256字节写入
问题:W25Q128写之前不是该先擦除对应扇区再写入吗?如果写256字节的话是不是该先读出扇区内容,加上写入得内容再写下去?但是在SFUD 驱动中并没有看到该操作,不知道是不是有问题。
我当前遇到的问题是,调用sfud_write写入256字节,再读出来,与写入得内容不一致,不知道是否和上面描述的问题相关。`
ret = sfud_write(spi_dev_w25q, my_work_para_list->sample_write_addr, SAMPLE_BLOCK_SIZE, write_buff);
if(ret != 0)
{
LOG_E("%d spi_dev_w25q sfud_write failed ! ret %d", __LINE__, ret);
my_work_para_unlock();
return -1;
}
ret = sfud_read(spi_dev_w25q, my_work_para_list->sample_write_addr, SAMPLE_BLOCK_SIZE, read_buff);
if(ret != 0)
{
LOG_E("%d spi_dev_w25q sfud_read failed ! ret %d", __LINE__, ret);
my_work_para_unlock();
return -1;
}
ret = memcmp(read_buff, write_buff , SAMPLE_BLOCK_SIZE);
if(ret != 0)
{
LOG_E("%d sfud_read != sfud_write ret %d", __LINE__, ret);
my_work_para_unlock();
return -1;
}
感谢!
@BossKing 不客气!