关于STM32F103驱动NAND FLASH并模拟U盘(加载文件系统)

2019-07-20 05:04发布

在官网上面下载了一个NAND FLASH并加载了文件系统。现在U盘模拟成功,文件读写正常。但是呢!我现在想把U盘的容量减小点,以留点内存处理其他事情。我的NAND FLASH是64M的。我分别注意到了这三个函数。在mass_mal.c的文件下有三个函数
***************************1*******************
uint16_t MAL_Write(uint8_t lun, uint32_t Memory_Offset, uint32_t *Writebuff, uint16_t Transfer_Length)  函数1

uint16_t MAL_Read(uint8_t lun, uint32_t Memory_Offset, uint32_t *Readbuff, uint16_t Transfer_Length)  函数2

uint16_t MAL_GetStatus (uint8_t lun)  函数2

以上三个函数就分别是给U盘的一些容量处理,

那么我们来看该 uint16_t MAL_GetStatus (uint8_t lun)  这个函数就是给U盘内存的容量大小定义,


其中这三个数组,就是分配U盘容量的数组。 我试过修改这些参数值。但是我的U盘容量没变。
      Mass_Block_Count[0] = (NAND_ZONE_SIZE * NAND_BLOCK_SIZE * NAND_MAX_ZONE);
      Mass_Block_Size[0]  = NAND_PAGE_SIZE;//512 byte
      Mass_Memory_Size[0] = (Mass_Block_Count[0] * Mass_Block_Size[0]);


因为我以前做SPI FLASH的时候,也是给这个三个数组分配值修改U盘容量的大小值。 但是操作NAND FLASH 竟然无效。
想请教一下各位大兄弟。有没有做过NAND FALSH模拟U盘并改变U盘容量。
再请教一个问题,也麻烦一下各位大兄弟。 一个U盘分成2个盘符可以实行么?

最后,祝各位大兄弟生活愉快。汪汪  汪汪  哈哈
[img]file:///C:Documents and SettingsAdministratorApplication DataTencentUsers1184207257QQWinTempRichOle`CCV{[QBOS91~RQ{F6I99S8.png[/img]

[img]file:///C:Documents and SettingsAdministratorApplication DataTencentUsers1184207257QQWinTempRichOle`CCV{[QBOS91~RQ{F6I99S8.png[/img]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
shuaigew88
1楼-- · 2019-07-20 23:01
 精彩回答 2  元偷偷看……
072216
2楼-- · 2019-07-21 00:43
 精彩回答 2  元偷偷看……
072216
3楼-- · 2019-07-21 01:45
072216 发表于 2016-10-29 10:38
用的是USB  但也加载了文件系统   因为文件系统操作起来比较直观 毕竟是要做U盘   一些文件读写  U盘初始 ...

额 刚刚理解你的意思错了  我仔细想想  你的意思是 内存是由文件系统管理 并且分配   是这个意思吧
shuaigew88
4楼-- · 2019-07-21 07:37
 精彩回答 2  元偷偷看……
072216
5楼-- · 2019-07-21 13:16
shuaigew88 发表于 2016-10-29 10:50
Mass_Block_Count[0]
Mass_Block_Size[0]  
Mass_Memory_Size[0]

我已经注释过了  若是把这个三个数组都屏蔽掉的话  U盘的容量就无法识别,在电脑端就只能发现一个盘符并伴随着U盘也无法格式化   也只有一处地方用到的  就是该处用到
   Mass_Block_Count[0] = (NAND_ZONE_SIZE * NAND_BLOCK_SIZE * NAND_MAX_ZONE);
      Mass_Block_Size[0]  = NAND_PAGE_SIZE;//512 byte
      Mass_Memory_Size[0] = (Mass_Block_Count[0] * Mass_Block_Size[0]);

shuaigew88
6楼-- · 2019-07-21 18:10
072216 发表于 2016-10-29 11:00
我已经注释过了  若是把这个三个数组都屏蔽掉的话  U盘的容量就无法识别,在电脑端就只能发现一个盘符并 ...

那应该不会错,就是这个地方配置的,你把宏去掉直接用数字该

一周热门 更多>