找回密码
 立即注册
楼主: tzz1983

文件系统 | znFAT | STC32位8051运行

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:569
  • 最近打卡:2025-06-28 10:24:51

24

主题

524

回帖

1268

积分

荣誉版主

积分
1268
发表于 2023-12-10 09:11:52 | 显示全部楼层
看来能用上zn_FAT 文件系统了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-10 14:27:36

0

主题

17

回帖

48

积分

新手上路

积分
48
发表于 2023-12-10 15:13:27 | 显示全部楼层
太厉害了
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-05-28 09:08:49

34

主题

1094

回帖

2468

积分

荣誉版主

积分
2468
发表于 2023-12-11 11:26:31 | 显示全部楼层
yan*** 发表于 2023-12-9 15:45
我做了个试验,修改MSC配置,电脑能识别U盘,但是不能格式化为512扇区,所有无论哪个配置在电脑上都不能格 ...

微信图片_20231211111350.png

我电脑上有512的选项
不过PC上的格式化zn_FAT确实不能识别, 可能和这个原因有关:
捕获.JPG


不过没有关系, zn_FAT的格式化, PC是可以识别的, 所以只要用zn_FAT格式化, 就所有问题都解决了.
你那边还有一些其它的问题 , 应该都是你自己的问题, 我刚才在测试, zn_FAT 和 PC 互通没有问题的

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-05-28 09:08:49

34

主题

1094

回帖

2468

积分

荣誉版主

积分
2468
发表于 2023-12-11 12:57:15 | 显示全部楼层
zn_FAT 与 电脑 交换文件演示
本文采用STC32G实验箱测试, 将实验箱上的W25X40 替换为 W25Q128
1.把用zn_FAT固件烧入MCU, 用zn_FAT格式化FLASH,运行结果如下:

捕获1.JPG

2.把MSC固件烧入MUC, 此时可以看到一个16M的U盘, 在U盘内创建一个文件名为"abc.txt"的文件, 输入内容为:"PC端输入文件内容"
捕获2.JPG
捕获3.JPG
捕获4.JPG

3.再次把用zn_FAT固件烧入MCU, 运行结果如下:
捕获5.JPG


注意事项, zn_FAT为了节省RAM使用, 扇区固定为512, 影响到以下几个方面:
1. W25QXX的扇区是4096, 所以, 如果你的W25QXX驱动代码是不支持512访问的, 得调整底层驱动代码
2.因为W25QXX的扇区是4096, 有时候为了节省RAM,不会全部使用完4096个字节, 而是只使用一部分, 比如只使用前256字节, 这种代码用于文件系统是不行的.
3.MCS和zn_FAT都是由底层代码直接给出扇区大小, 盘总大小, 这些参数.  两个例程参数设置要一至. 即扇区大小都设置为512.  16M的FLASH, MSC做如下设置:
        dwMemorySize = 1024ul*1024ul*16;  
        wSectorSize = 512u;
        dwSectorNumber = dwMemorySize / wSectorSize;
扇区调整过以后, 底层读写也需要做相应的调整
4. zn_FAT最小支持的盘SIZE为8M, 也就是说, 小于8M的FLASH格式化不会成功.
5. 用PC格式化的盘,  zn_FAT不一定能识别, 原因是 zn_FAT 支持有限的格式, 所以在使用时, 得用 zn_FAT格式化,  zn_FAT格式化的盘, PC能够识别

以下是两个例程代码:
MSC.rar (338.61 KB, 下载次数: 169) znFAT.rar (517.89 KB, 下载次数: 145)


其它杂谈: 如果把 MSC 和 zn_FAT 做到一个固件上, 就可以实现 MUC和PC无驱动通信,  在电脑上改变文件的内容, MCU读到到文件内容变化, 做相应的处理, 实际上就是通过文件来传递数据.
举两个简单的应用:
1.温度传感器每小时把采样到的温度值写入文件, PC端直接就可以看到, 因为此时MCU固件内同时有MSC和zn_FAT,  电脑省去做桌面驱动.
2.另一个简单的应用是, 我们在电脑端往U盘内写入一个BIN文件, MUC就可以跟据这个文件更新自己的固件或EEPROM.   
实现电脑和MCU之间共享数据, PC端不需要做桌面驱动, 有无限可能

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:504
  • 最近打卡:2025-06-28 07:48:50

17

主题

129

回帖

2305

积分

金牌会员

积分
2305
发表于 2023-12-11 15:52:10 | 显示全部楼层
tzz1*** 发表于 2023-12-11 12:57
zn_FAT 与 电脑 交换文件演示

其它的疑问已调试通过,25Q64的驱动还有点问题,我这里用znfat格式化后,电脑显示的盘符不对,同时文件也没有写进去,我再检查下25Q64的驱动,谢谢老师
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:561
  • 最近打卡:2025-06-28 15:07:47

15

主题

154

回帖

400

积分

中级会员

积分
400
发表于 2023-12-26 14:26:53 | 显示全部楼层
这个不错,感谢楼主的分享,这个用来做文件读写很有用。以前用STC12C5A60S2读写过TF卡。再来试试这个。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:396
  • 最近打卡:2025-06-28 00:07:59

4

主题

245

回帖

1675

积分

金牌会员

积分
1675
发表于 2024-1-3 10:13:33 | 显示全部楼层
这个和FatFs有啥区别。

点评

zn_FAT用内存少一点  发表于 2024-1-3 13:13
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:111
  • 最近打卡:2025-06-28 08:54:08

740

主题

1万

回帖

1万

积分

管理员

积分
17147
发表于 2024-2-9 10:13:39 | 显示全部楼层
截图202402091013363999.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:31
  • 最近打卡:2025-06-25 14:57:18
已绑定手机

42

主题

307

回帖

982

积分

高级会员

积分
982
发表于 2024-3-1 18:21:33 来自手机 | 显示全部楼层
对对,我也发现了就是电脑格式化完znfat不能识别
就先说flash吧,我的是8M跑MSC,用电脑格式化完拿十六进制查看器打开,对照znfat书里的方法找到MBR区的64字节分区表发现确实存在问题。就是本来应该是znfat ok的地方电脑给弄了个error,,,
这个确实不影响MSC优盘的使用,但是对于读取了话确实是一个问题,znfat的MBR解析应该就寄了
IMG_20240223_172721.jpg

点评

实际使用时用znFAT格式化, 电脑和MCU都可正常读写文件. 我没有研究FAT的底层实现机制, 所以不知道是你理解出错,还是电脑出错,还是znFAT出错  发表于 2024-3-1 22:31
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:274
  • 最近打卡:2025-06-27 10:04:37

3

主题

155

回帖

655

积分

高级会员

积分
655
发表于 2024-3-27 15:12:29 | 显示全部楼层
留着后面用
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-28 23:57 , Processed in 0.506313 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表