小学生
最后登录1970-1-1
在线时间 小时
注册时间2021-3-15
|
详见说明:
FATFs 文件系统的例程中: SPI_FLASH_SectorErase(write_addr); 只调用一次。 即 count >1 时候, 只擦除 write_addr 对应的一个Sector, 其他的Sector 怎么办?
SPI_FLASH_BufferWrite((u8 *)buff,write_addr,count<<12); 代码中,没有对多个扇区的擦除操作,
是否为程序的Bug?
例程如下:
DRESULT disk_write (
BYTE pdrv, /* 设备物理编号(0..) */
const BYTE *buff, /* 欲写入数据的缓存区 */
DWORD sector, /* 扇区首地址 */
UINT count /* 扇区个数(1..128) */
)
{
uint32_t write_addr;
DRESULT status = RES_PARERR;
if (!count) {
return RES_PARERR; /* Check parameter */
}
switch (pdrv) {
case ATA: /* SD CARD */
break;
case SPI_FLASH:
/* 扇区偏移2MB,外部Flash文件系统空间放在SPI Flash后面6MB空间 */
sector+=512;
write_addr = sector<<12;
SPI_FLASH_SectorErase(write_addr);
SPI_FLASH_BufferWrite((u8 *)buff,write_addr,count<<12);
status = RES_OK;
break;
default:
status = RES_PARERR;
}
return status;
}
|
|