OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2658|回复: 3

FATFS 写文件,打开空白

[复制链接]

15

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2017-8-2
在线时间
19 小时
发表于 2017-8-25 19:53:46 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 Akada 于 2017-8-25 19:55 编辑

FATFS 写文件, f_open 成功,f_write 也显示成功,但是打开 SD 卡,文件内容却是空白?
main 函数部分代码如下:

[mw_shl_code=c,true]u8 senddata[20];
FRESULT fr;        
mmemset(senddata, 'b', sizeof(senddata));
mmeminit(SRAMIN);        

FATFS_Init();        
f_mount(fs[0], "0:", 1);        
while(1)
{
key = KEY_Scan();
if(key == KEY_UP)
{
fr = f_open(file, "test.txt", FA_CREATE_ALWAYS|FA_WRITE);        
if(fr) printf("Create File Fail\n");
else
{
printf("Create File Success\n");
fr = f_write(file, senddata, sizeof senddata, (UINT *)&temp);
if(fr) printf("Write Error. Error number:%d\n", fr);
else printf("Write OK. Write number:%d. Write data:%s\n", temp, senddata);
}
f_close(file);        
}        
}
[/mw_shl_code]


printf 显示 Create File Success,Write OK. Write number:20. Write data: 20个b

但是打开文件,空白。。。

底层是用 SPI 驱动 SD 的,应该没有问题。

底层 Write 代码:


[mw_shl_code=applescript,true]// Write single sector to SD
// @retval 0-success 1-SD not ready 2-SD Write overtime
u8 SD_WriteSector(u8 *p, u8 datatoken)
{
        u16 i, retry = 0XFFFF;
        u8 r1;
        if(SD_WaitReady()) return 1;
        SPI2_ReadWriteByte(datatoken);                                                                // Data token
        if(datatoken != 0XFD)                                                                                // Stop token for CMD25
        {                                                                                       
                for(i = 0; i < 512; i++) SPI2_ReadWriteByte(p);                // Write 512 Bytes
                SPI2_ReadWriteByte(0XFF);                                                                // CRC1
                SPI2_ReadWriteByte(0XFF);                                                                // CRC2
                r1 =  SPI2_ReadWriteByte(0XFF);                                                        // Data response
                if((r1&0X1F) != 0X05) return r1;
                while(!SPI2_ReadWriteByte(0XFF) && retry)
                {
                        retry--;
                }
                if(!retry) return 2;
                SPI2_ReadWriteByte(0XFF);
        }
        return 0;
}

u8 SD_WriteDisk(u8 *p, u32 sector, u8 cnt)
{
        u8 r1;
        if(SD_Type != SD_TYPE_V2HC) sector <<= 9;                // change to sector address
        if(cnt == 1)
        {
                printf("Sector 1\n");
                if(!SD_WriteCmd(CMD24, sector))                                // Send block write command
                {
                        r1 = SD_WriteSector(p, 0XFE);                        // Write block in data paacket form
                        printf("Write Single Sector, result:%d\n", r1);
                }
        }
        else
        {
                printf("Sector 2\n");
                if(SD_Type != SD_TYPE_MMC)
                {
                        SD_WriteCmd(CMD55, 0);
                        SD_WriteCmd(ACMD23, cnt);
                }
                if(!SD_WriteCmd(CMD25, sector))                                // Send multiple block write command
                {
                        do
                        {
                                r1 = SD_WriteSector(p, 0XFC);
                                p += 512;
                                cnt--;
                        }while(!r1 && cnt);
                        r1 = SD_WriteSector(0, 0XFD);                                // Send Stop Token
                }
        }
        SD_DeSelect();
        return r1;
}[/mw_shl_code]

输出:Sector 1. Write Single Sector, result: 0

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-8-26 00:19:41 | 显示全部楼层
回复

使用道具 举报

25

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1190
金钱
1190
注册时间
2016-9-17
在线时间
140 小时
发表于 2017-9-11 16:54:06 | 显示全部楼层
file:///C:/Documents%20and%20Settings/Administrator/桌面/7.png
回复

使用道具 举报

25

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1190
金钱
1190
注册时间
2016-9-17
在线时间
140 小时
发表于 2017-9-11 16:54:48 | 显示全部楼层
&file
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 04:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表