用STM32F207移植FATFS,用SDIO方式读写,目前能创建文件,能读文件,但不能写进去,内容永远是0kb,FATFS是0.07c,到底是移植时候接口问题还是SD卡问题?SD卡是1GB的SANDISK。
我把代码贴上来,看看哪里有问题。。。
1、初始化代码
[mw_shl_code=c,true]DSTATUS disk_initialize (
BYTE drv /* Physical drive nmuber (0..) */
)
{
SD_Error Status;
Status = SD_USER_Init();
if ( Status == SD_OK )
return 0;
return STA_NOINIT;
}[/mw_shl_code]
2、读代码
[mw_shl_code=c,true]DRESULT disk_read (
BYTE drv, /* Physical drive nmuber (0..) */
BYTE *buff, /* Data buffer to store read data */
DWORD sector, /* Sector address (LBA) */
BYTE count /* Number of sectors to read (1..255) */
)
{
SD_Error Status = SD_OK;
if (count != 1)
{
Status = SD_ReadMultiBlocks( sector << 9, ( u32 *)(&buff[0]), SECTOR_SIZE, count );
}
else
{
Status = SD_ReadBlock( sector << 9, ( u32 *)(&buff[0]), SECTOR_SIZE );
}
if (Status == SD_OK)
{
return RES_OK;
}
else
{
return RES_ERROR;
}
}[/mw_shl_code]
3、写代码
[mw_shl_code=c,true]DRESULT disk_write (
BYTE drv, /* Physical drive nmuber (0..) */
const BYTE *buff, /* Data to be written */
DWORD sector, /* Sector address (LBA) */
BYTE count /* Number of sectors to write (1..255) */
)
{
if ( count != 1 ) /* 1个sector的写操作 */
{
SD_WriteMultiBlocks(sector << 9 ,( u32 *)(&buff[0]),SECTOR_SIZE,count);
}
else /* 多个sector的写操作 */
{
SD_WriteBlock(sector << 9 ,( u32 *)(&buff[0]),SECTOR_SIZE);
}
return RES_OK;
}[/mw_shl_code]
4、main函数代码
[mw_shl_code=c,true] //write function
disk_initialize(0);
f_mount(0, &fs);//挂载磁盘
f_opendir(&DirInf, "/");//打开目录
f_open(&fsrc,"Demo2.txt", FA_CREATE_ALWAYS | FA_WRITE);//打开
// f_lseek(&fsrc,fsrc.fsize);
f_write(&fsrc, "1234567890", 10, &bw);
/* 关闭文件*/
f_close(&fsrc);
/* 卸载文件系统 */
f_mount(0, NULL);[/mw_shl_code]
[mw_shl_code=c,true] Delay(0xfff);
//read function
disk_initialize(0);
f_mount(0, &fs);
f_opendir(&DirInf, "/");
f_open(&fsrc, "Demo2.txt", FA_OPEN_ALWAYS | FA_READ);
f_read(&fsrc, &buf, sizeof(buf) - 1, &br);
/* 关闭文件*/
f_close(&fsrc);[/mw_shl_code]
看了半天,怎么调都出不来。。。也没锁SD卡,也没设为只读,偏偏写不进去
不知道有人遇到和我相似的问题吗?
|