打印

GD32F470 USB MSC 外部flash不**格式

[复制链接]
2593|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 | 只看该作者
为什么乘上这个系数之后就会每次都格式化呢

使用特权

评论回复
5
drer| | 2023-11-2 12:29 | 只看该作者
这个问题很隐蔽 因为变量的定义还需要核定

使用特权

评论回复
6
wiba| | 2023-11-2 12:55 | 只看该作者
所以我们一定要多flash操作的原理搞明白

使用特权

评论回复
7
kxsi| | 2023-11-2 13:19 | 只看该作者
为什么官网的例程里边还会乘以这个系数呢

使用特权

评论回复
8
coshi| | 2023-11-2 19:58 | 只看该作者
楼主刚开始使用的时候对官方例程有没有进行修改啊

使用特权

评论回复
9
qcliu| | 2023-11-2 20:21 | 只看该作者
tpgf 发表于 2023-11-2 11:54
为什么乘上这个系数之后就会每次都格式化呢

我推测应该是乘上这个系数之后正好就是整页了 所以就格式化了

使用特权

评论回复
10
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;
}
每次插拔都要格式化,是什么地方出问题了吗

使用特权

评论回复
11
原来是wjc| | 2024-5-31 23:44 | 只看该作者
本帖最后由 原来是wjc 于 2024-6-1 03:04 编辑

GD32的存储和读取地址不能乘上pagesize

使用特权

评论回复
12
原来是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

粉丝