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

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:557
  • 最近打卡:2025-06-15 09:02:29

24

主题

524

回帖

1220

积分

荣誉版主

积分
1220
发表于 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

回帖

2448

积分

荣誉版主

积分
2448
发表于 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

回帖

2448

积分

荣誉版主

积分
2448
发表于 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, 下载次数: 154) znFAT.rar (517.89 KB, 下载次数: 138)


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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:492
  • 最近打卡:2025-06-16 07:52:59

17

主题

129

回帖

2227

积分

金牌会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:549
  • 最近打卡:2025-06-16 01:10:45

15

主题

154

回帖

322

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:384
  • 最近打卡:2025-06-16 12:20:07

4

主题

245

回帖

1627

积分

金牌会员

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

点评

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

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

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

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:24
  • 最近打卡:2025-06-16 12:00:55
已绑定手机

39

主题

296

回帖

893

积分

高级会员

积分
893
发表于 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
  • 打卡总天数:268
  • 最近打卡:2025-06-16 09:46:45

3

主题

155

回帖

631

积分

高级会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 18:17 , Processed in 1.156851 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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