TI中文支持网
TI专业的中文技术问题搜集分享网站

F28M35x向micro SD卡写入的问题

使用的是TI官方的F28M35H52C1开发板,程序是controlSUITE中提供的例程稍加修改。

直接用例程读取文件内容没有问题,例程中没有写入的部分,所以在例程基础上稍作了修改,增加了写入部分,但是在写入时出现这样的现象,如果原文件中有几个数据,那么就只能向文件中写入几个数据,如果原文件是空的,那么就一个数据也写不进去,尽管每次都向SD卡发送了512个数据。

下面是写入部分增加的代码:

 

下面是原文件

 

andy zhang1:

写入后文件

我看了下向SD卡写入的disk_write程序确实是写了512个字节数据,但SD卡文件中却只有5个字节数据

使用的是TI官方的F28M35H52C1开发板,程序是controlSUITE中提供的例程稍加修改。

直接用例程读取文件内容没有问题,例程中没有写入的部分,所以在例程基础上稍作了修改,增加了写入部分,但是在写入时出现这样的现象,如果原文件中有几个数据,那么就只能向文件中写入几个数据,如果原文件是空的,那么就一个数据也写不进去,尽管每次都向SD卡发送了512个数据。

下面是写入部分增加的代码:

 

下面是原文件

 

Eric Ma:

回复 andy zhang1:

andy,

你可以看一下ff.c关于f_read和f_write的定义,

其中

FRESULT f_read (    FIL *fp,         /* Pointer to the file object */    void *buff,        /* Pointer to data buffer */    WORD btr,        /* Number of bytes to read */    WORD *br        /* Pointer to number of bytes read */    )

FRESULT f_write (    FIL *fp,            /* Pointer to the file object */    const void *buff,    /* Pointer to the data to be written */    WORD btw,            /* Number of bytes to write */    WORD *bw            /* Pointer to number of bytes written */    )

然后在例程中有,

fresult = f_read(&g_sFileObject, g_cTmpBuf, sizeof(g_cTmpBuf) – 1,                         &usBytesRead);

我的理解usBytesRead应该是读到的数据个数。

你应该自己新建一个变量usBytesWrite,然后赋值给它。测试一下。

Eric

使用的是TI官方的F28M35H52C1开发板,程序是controlSUITE中提供的例程稍加修改。

直接用例程读取文件内容没有问题,例程中没有写入的部分,所以在例程基础上稍作了修改,增加了写入部分,但是在写入时出现这样的现象,如果原文件中有几个数据,那么就只能向文件中写入几个数据,如果原文件是空的,那么就一个数据也写不进去,尽管每次都向SD卡发送了512个数据。

下面是写入部分增加的代码:

 

下面是原文件

 

andy zhang1:

回复 Eric Ma:

跟这个变量应该没有关系,我把读的程序f_read那部分屏蔽了,所以这个变量跟新建的一样,只是没有改名字而已,况且这个变量在f_write函数里是先清零然后再统计写入个数的,是一个输出变量,所以跟我调用f_write前赋值与否没有关系

使用的是TI官方的F28M35H52C1开发板,程序是controlSUITE中提供的例程稍加修改。

直接用例程读取文件内容没有问题,例程中没有写入的部分,所以在例程基础上稍作了修改,增加了写入部分,但是在写入时出现这样的现象,如果原文件中有几个数据,那么就只能向文件中写入几个数据,如果原文件是空的,那么就一个数据也写不进去,尽管每次都向SD卡发送了512个数据。

下面是写入部分增加的代码:

 

下面是原文件

 

andy zhang1:

没有人能帮忙解答么?自己顶一下

赞(0)
未经允许不得转载:TI中文支持网 » F28M35x向micro SD卡写入的问题
分享到: 更多 (0)