GD32F470 USB MSC 外部flash不**格式

[复制链接]
3063|11
 楼主| hedan12 发表于 2023-10-18 17:29 | 显示全部楼层 |阅读模式
外部flash做U盘,每次插拔都要格式化。我发现这个宏定义有关就是扇区大小,改成512只需要格式化一次就行,改成4096就是每次都要格式化。。。
套用的官方内部SRAM做U盘的例程,W25Q256外部flash,驱动抄的正点原子的应该没什么问题
#define STORAGE_BLK_SIZ  512
#define STORAGE_BLK_NBR  20480
guijial511 发表于 2023-10-19 08:44 来自手机 | 显示全部楼层
每次都要格式化肯定有问题
 楼主| hedan12 发表于 2023-10-20 17:06 | 显示全部楼层
破案了,GD32的存储和读取地址不能乘上pagesize
tpgf 发表于 2023-11-2 11:54 | 显示全部楼层
为什么乘上这个系数之后就会每次都格式化呢
drer 发表于 2023-11-2 12:29 | 显示全部楼层
这个问题很隐蔽 因为变量的定义还需要核定
wiba 发表于 2023-11-2 12:55 | 显示全部楼层
所以我们一定要多flash操作的原理搞明白
kxsi 发表于 2023-11-2 13:19 | 显示全部楼层
为什么官网的例程里边还会乘以这个系数呢
coshi 发表于 2023-11-2 19:58 | 显示全部楼层
楼主刚开始使用的时候对官方例程有没有进行修改啊
qcliu 发表于 2023-11-2 20:21 | 显示全部楼层
tpgf 发表于 2023-11-2 11:54
为什么乘上这个系数之后就会每次都格式化呢

我推测应该是乘上这个系数之后正好就是整页了 所以就格式化了
shszwqs 发表于 2024-3-26 12:37 | 显示全部楼层
#define STORAGE_BLK_NBR                  2048
#define STORAGE_BLK_SIZ                   4096  ///改512格式化后用不了
static int8_t STORAGE_Read (uint8_t Lun,
                            uint8_t *buf,
                            uint32_t BlkAddr,
                            uint16_t BlkLen)
{
        W25QXX_Read(buf, BlkAddr, BlkLen * STORAGE_BLK_SIZ);
    return 0;
}
static int8_t STORAGE_Write (uint8_t Lun,
                             uint8_t *buf,
                             uint32_t BlkAddr,
                             uint16_t BlkLen)
{
        W25QXX_Write(buf, BlkAddr, BlkLen * STORAGE_BLK_SIZ);
    return 0;
}
每次插拔都要格式化,是什么地方出问题了吗
原来是wjc 发表于 2024-5-31 23:44 | 显示全部楼层
本帖最后由 原来是wjc 于 2024-6-1 03:04 编辑

GD32的存储和读取地址不能乘上pagesize
原来是wjc 发表于 2024-5-31 23:44 | 显示全部楼层
本帖最后由 原来是wjc 于 2024-6-1 03:05 编辑
shszwqs 发表于 2024-3-26 12:37
#define STORAGE_BLK_NBR                  2048
#define STORAGE_BLK_SIZ                   4096  ///改5 ...

这个问题很隐蔽 因为变量的定义还需要核定
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部