找回密码
 立即注册
查看: 2701|回复: 38

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

[复制链接]

该用户从未签到

19

主题

519

回帖

1640

积分

荣誉版主

积分
1640
发表于 2023-11-10 09:36:10 | 显示全部楼层 |阅读模式
文件系统 | znFAT | STC32位8051运行代码@STC32G12K128
移植:
1.将<znFAT.c> <deviceio.c>加入到项目.
2.修改头文件<mytype.h>数据类型,使其符合我们的编绎器
3.跟据自身需求自建三个函数,用来连接znFAT和存储介质, 将以下三个函数分别替换代原文<deviceio.c>中的 SD1_Init(),SD1_Write_Sector(),SD1_Read_Sector(). 原文别的地方不要改.
示例函数代码如下: (W25Q128)
UINT8 Disk_Init(void)        //znFAT初始化磁盘时会调用此函数
{
//    w25qxx_init();          //已在main函数初始化
    return 0;
}
UINT8 Disk_Write_Sector(UINT32 addr,UINT8 *buffer) //写扇区  addr:扇区编号 buffer: buf指针
{
    return SPI_Write_Nbytes(addr*512,buffer,512);
}
UINT8 Disk_Read_Sector(UINT32 addr,UINT8 *buffer)  //读扇区  addr:扇区编号 buffer: buf指针
{
    SPI_Read_Nbytes(addr*512,buffer,512);
    return 0;
}
4.修改znFAT配制文件<config.h>,要使用哪些功能,就打开对应的宏。 注: 因<config.h>与STC库文件同名,为了好区别, 例子中把"config.h"改名为 "znFAT_config.h".

使用:  按以下顺序启动znFAT
1. znFAT_Device_Init();            //存储设备初始化,底层驱动接口
2. znFAT_Select_Device(0,&myFAT);  //选择设备 (注: 只有一个设备,此处也不可省略)
3. znFAT_Init())                    //文件系统初始化,只有初始化时功,才有下一步,否则就是不能识别,重新格式化或许能解决
4. 文件操作

执行结果截图:

捕获.JPG


容易入坑的地方:
1.哪怕只有一个设备,也必须执行znFAT_Select_Device(). 否则,代码飞到不可以运行区域, 然后就重启了.
2.格式化时间一般都比较长, 要么在开看门狗之前格式化, 要么就是找到格式化原码的关键循环点, 在那里喂狗, 否则肯定会重启的


2023/11/11更新代码, 完善了一下 W25QXX 的驱动, 之前从别的项目复制过来, 不是很匹配
例子代码:
znFAT_STC32G12K128.rar (544.39 KB, 下载次数: 163)








回复 送花

使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 154 天

    [LV.7]常住居民III

    17

    主题

    370

    回帖

    1289

    积分

    荣誉版主

    积分
    1289
    发表于 2023-11-10 11:11:14 | 显示全部楼层
    多谢!
    回复 送花

    使用道具 举报

    该用户从未签到

    19

    主题

    519

    回帖

    1640

    积分

    荣誉版主

    积分
    1640
     楼主| 发表于 2023-11-11 10:54:22 | 显示全部楼层
    刚才又去测试了一下功能, 确实挺不错了, 800多字节内存占用, 很省, 不过发现之前的W25QXX代码好像有问题 , 重新整了一下, 现在没有问题了.  自己给自己点个高亮啊, 哈哈
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 146 天

    [LV.7]常住居民III

    12

    主题

    100

    回帖

    1438

    积分

    金牌会员

    积分
    1438
    发表于 2023-11-11 20:03:38 | 显示全部楼层
    先保存,需要用时慢慢体会,谢谢
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    0

    主题

    3

    回帖

    134

    积分

    注册会员

    积分
    134
    发表于 2023-11-17 14:27:16 来自手机 | 显示全部楼层
    有空的时候运行看一下,先保存
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    14 小时前
  • 签到天数: 121 天

    [LV.7]常住居民III

    12

    主题

    315

    回帖

    870

    积分

    高级会员

    积分
    870
    发表于 2023-11-24 11:26:10 | 显示全部楼层
    多谢!已下载收藏。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:45
  • 签到天数: 99 天

    [LV.6]常住居民II

    0

    主题

    81

    回帖

    590

    积分

    高级会员

    积分
    590
    发表于 2023-11-29 15:08:58 | 显示全部楼层
    向高手学习
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 14:06
  • 签到天数: 124 天

    [LV.7]常住居民III

    4

    主题

    235

    回帖

    856

    积分

    高级会员

    积分
    856
    发表于 2023-12-7 00:55:27 | 显示全部楼层
    和FATfs相比那个好用些,占内存小?

    点评

    这个占内存少  发表于 2023-12-7 10:19
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    15 小时前
  • 签到天数: 139 天

    [LV.7]常住居民III

    13

    主题

    103

    回帖

    859

    积分

    高级会员

    积分
    859
    发表于 2023-12-8 08:58:00 | 显示全部楼层
    这个25Q128格式化后,把25Q128做成电脑外挂U盘后还是需要格式化后才能使用呢?意思是用电脑格式化和用这个程序格式化后,均需要重新格式化才行

    点评

    按道理来说, 这个格式化以后, PC是可以识别的, 不过我没有试过 你尝试过了吗? 可以这样, 1.先在MCU上弄一个MSC例程, 用PC格式化一个FLASH, 写入一个简单的文件, 看看是否可以用zn_FAT读文件内容. 2.反向操作一下,  详情 回复 发表于 2023-12-8 18:32
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    19

    主题

    519

    回帖

    1640

    积分

    荣誉版主

    积分
    1640
     楼主| 发表于 2023-12-8 18:32:17 | 显示全部楼层
    本帖最后由 tzz1983 于 2023-12-8 19:07 编辑
    yanhui 发表于 2023-12-8 08:58
    这个25Q128格式化后,把25Q128做成电脑外挂U盘后还是需要格式化后才能使用呢?意思是用电脑格式化和用这个 ...

    按道理来说, 这个格式化以后, PC是可以识别的, 不过我没有试过
    你尝试过了吗?
    可以这样,
    1.先在MCU上弄一个MSC例程, 用PC(FAT32)格式化一下FLASH, 写入一个简单的文件, 看看是否可以用zn_FAT读文件内容.
    2.反向操作一下, 用zn_FAT格式化, 写一个文件, 然后用PC读文件内容.
    你自己去尝试一下

    最终应该是在MCU固件里, 同时有MSC 和 zn_FAT, 这样才能够和PC通过文件交换数据. 自己多去倒腾一下,  应该会成功的.  
    如果 同时有MSC 和 zn_FAT 要注意一下MCU 和 PC 访问FLASH的权限, 不要让他们同时访问
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-29 23:25 , Processed in 0.076385 second(s), 73 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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