This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28M35x向micro SD卡写入的问题

Other Parts Discussed in Thread: CONTROLSUITE

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

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

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

 

下面是原文件

 

  • 写入后文件

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

  • 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

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

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