W25Q256FV实现USB读写的问题

2019-10-15 00:55发布

现在是移植了FATFS文件系统后成功格式化,读文件,创建文件和显示剩余空间都正常,根据战舰开发板USB代码修改的代码移植后能够成功识别盘符,但是打开后里面有二十几个2G的文件(256的Flash只有32M),下面是代码
看了原子兄的代码后自认为这里是最重要的
    Mass_Memory_Size[0] = 1024*1024*32;//32M字节
    Mass_Block_Size[0] = 512;
    Mass_Block_Count[0] = Mass_Memory_Size[0] / Mass_Block_Size[0];

因为不需要用到SD卡所以改了一下数组下标,可移动磁盘个数的宏也修改为0,mass_mal中的read和write内容也改为
        case 0:
              STA=0;
            SPI_Flash_Write((u8*)Writebuff, Memory_Offset, Transfer_Length);

        case 0:
             STA=0;
            SPI_Flash_Read((u8*)Readbuff, Memory_Offset, Transfer_Length);
不知道Read_Memory和Write_Memory需不需要修改,我的一个块的size是65536,Mass_Block_Size[0]为512时就会出现前面说到的有几十个2G文件的情况,如果改为65536那么PC机上可移动磁盘的大小就为0,原子兄的代码在Mass_Block_Size[0]后的注释说Mass_Block_Size[0]是init中定了的512,不知道是不是需要把这个定长的512修改一下,请教一下各位大哥解决的办法!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
八度空间
1楼-- · 2019-10-15 03:51
1、发现楼主这代码有问题,图中红 {MOD}框框


2、具体可以参考原子哥的读卡器实验或者这个帖子http://www.openedv.com/posts/list/27484.htm中的战舰读卡器实验工程

csf4824521
2楼-- · 2019-10-15 05:53
 精彩回答 2  元偷偷看……
八度空间
3楼-- · 2019-10-15 06:11
回复【3楼】csf4824521:
---------------------------------
1、你要明白0对应的是SD卡,1对应的才是flash
2、加上你上面出现了两个case 0: 这个语句,编译的时候应该会报警的
3、你用的是原子哥的Mini板子???战舰板子???还是自己画的最小系统板子
csf4824521
4楼-- · 2019-10-15 10:17
非常感谢Badu_Space,我的理解是,SD卡和Flash是两个设备,0,1应该也不是必然的一一对应关系,现在我只需要一个设备,也就是Flash,如果我还是设置0和1的话上电后PC机会识别到两个可移动磁盘,这应该是没有必要的,所以设备个数只能设置成一个,相应的Flash的代码也就不能放在1中了需要放在0里才能被执行。出现两个case 0的问题怪我,我本来想少贴点代码,但是引起了误会
case 0:
              STA=0;
            SPI_Flash_Write((u8*)Writebuff, Memory_Offset, Transfer_Length);是在MAL_Write函数中
自然在MAL_Read函数中就是第二个case 0
case 0:
             STA=0;
            SPI_Flash_Read((u8*)Readbuff, Memory_Offset, Transfer_Length);
我用的是自己的板子,Flash是直接焊上去的
八度空间
5楼-- · 2019-10-15 15:43
回复【5楼】csf4824521:
---------------------------------
1、你这样的话程序选择哪个呢?
switch(*****)
{
    case 0:
         *******
         break;
    case 0:
         *******
         break;
    *****
}
2、你想将FLASH的写到0项上面去,记得好像要在USB操作里面修改代码的,具体也记得不清,你可以goto看下
3、或者你试下直接就将FLASH的添加到那个0项上面,1项直接break(或者不写),将这个宏定义改为这样#define MAX_LUN    0
csf4824521
6楼-- · 2019-10-15 19:49
我就是这样做的,MAX_LUN也改了,FLASH也是写在0里面的,现在就出现这样的问题!我昨天试过用原子兄的工程代码,只修改了GPIO口和读写Flash时的几个参数FLASH_SECTOR_SIZE改成了4096,FLASH_SECTOR_COUNT改成了8192,FLASH_BLOCK_SIZE改为65536其他的全部都没有动过,上电后出现和我的工程代码一样的现象,有二十几个2G大小的文件,连名字都一样,都是?这个符号组成的,是不是读FAT表的时候出现了问题?

一周热门 更多>