初级会员

- 积分
- 160
- 金钱
- 160
- 注册时间
- 2016-1-26
- 在线时间
- 58 小时
|
5金钱
战舰开发板中在discio.c有段宏定义
#define FLASH_SECTOR_SIZE 512
u16 FLASH_SECTOR_COUNT=2048*12;
#define FLASH_BLOCK_SIZE 8 //每个BLOCK有8个扇区。
但是W25Q128的PDF中不是这样的,我的理解是
#define FLASH_SECTOR_SIZE 1024*4
u16 FLASH_SECTOR_COUNT=16*256;
#define FLASH_BLOCK_SIZE 16
但是修改了之后驱动就出问题了。
当然我也把驱动改成了这样
DRESULT disk_read (
BYTE pdrv, /* Physical drive nmuber to identify the drive */
BYTE *buff, /* Data buffer to store read data */
DWORD sector, /* Sector address in LBA */
UINT count /* Number of sectors to read */
)
{
u8 res=0;
if (!count)return RES_PARERR;
switch(pdrv)
{
case EX_FLASH:
W25QXX_Read(buff,sector,count*FLASH_SECTOR_SIZE);
res=0;
break;
default:
res=1;
}
}
但是就是驱动不了。
有两个问题
1:宏定义为什么这样定义?
2:驱动这样写是否正确?
跪谢各路大神来指点下小弟。
|
最佳答案
查看完整内容[请看2#楼]
1,因为25x系列,都是4096K一个扇区,我们作为文件系统的一个block,然后文件系统扇区是512字节 ,方便管理。
2,你这样写,得重新格式化,另外需要修改fatfs的配置
|