使用的是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:
没有人能帮忙解答么?自己顶一下
TI中文支持网



