OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2368|回复: 7

stm32,内部flash

[复制链接]

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-3-21 16:47:06 | 显示全部楼层 |阅读模式
stm32,内部flash到底有没有扇区这个概念?为什么图上说是0页~255页,?
QQ截图20180321164459aadd.png
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
 楼主| 发表于 2018-3-23 08:50:50 | 显示全部楼层
回复 支持 反对

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-3-23 09:03:01 | 显示全部楼层
内部这个flash是页为单位,每次擦除都是一页。在FATFS里类似的定义为 sector,在FAT系统or DiskGenius软件里定义为扇区,有些存储器支持指定字节擦除,有些只支持整个sector擦除,在FATFS里为了避免麻烦,就统一处理为先整页(块、扇区)擦除,再写入的过程。所以你的接口函数要提供整页擦除函数。我自己在处理STM 32的flash时,由于它只能进行偶数起始操作,因此,把写入指令和擦除指令均跳过奇数地址,宏观表现为1024字节的页实际存储512字节内容,这样就把它每页转化为512的页,就可以沿用512的SD卡函数来处理。但是也可以有其他处理方式,Fatfs提供了介质擦除最小页数的选项,如果填2,就是2页2页擦。
这是前几天调试原子的USB转大容量和FATFS得到的一些小心得~~希望对你有帮助
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
 楼主| 发表于 2018-3-23 11:22:10 | 显示全部楼层
本帖最后由 秋天 于 2018-3-23 11:27 编辑
孟亮 发表于 2018-3-23 09:03
内部这个flash是页为单位,每次擦除都是一页。在FATFS里类似的定义为 sector,在FAT系统or DiskGenius软件 ...

谢谢您的解答,你工作了吗?,刚看fatfs中哪里有设置擦除的?
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复 支持 反对

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-3-23 11:25:00 | 显示全部楼层
秋天 发表于 2018-3-23 11:22
谢谢您的解答,你工作了吗?

。。。这问题一头雾水~~。。工作了~~~
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
 楼主| 发表于 2018-3-23 11:28:27 | 显示全部楼层
孟亮 发表于 2018-3-23 11:25
。。。这问题一头雾水~~。。工作了~~~

我刚看fatfs 中哪里有设置擦除单位的?
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复 支持 反对

使用道具 举报

10

主题

196

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
390
金钱
390
注册时间
2018-3-20
在线时间
80 小时
发表于 2018-3-23 11:39:17 | 显示全部楼层
秋天 发表于 2018-3-23 11:28
我刚看fatfs 中哪里有设置擦除单位的?

DRESULT disk_ioctl (
        BYTE drv,                /* Physical drive nmuber (0..) */
        BYTE ctrl,                /* Control code */
        void *buff        /* Buffer to send/receive control data */
)

函数里


if(drv==1)
        {
                switch (ctrl)
                        {
                        /* 扇区数量: 70*512/1024/1024=0.008(MB) */
                        case GET_SECTOR_COUNT:
                        *(DWORD * )buff = 80;
                        break;
                        /* 扇区大小 */
                        case GET_SECTOR_SIZE :
                        *(WORD * )buff = 512;
                        break;
                        /* 同时擦除扇区个数 */
                        case GET_BLOCK_SIZE :
                        *(DWORD * )buff = 1;
                        break;
                }
                        res = RES_OK;
        }
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
 楼主| 发表于 2018-3-23 15:37:44 | 显示全部楼层
孟亮 发表于 2018-3-23 11:39
DRESULT disk_ioctl (
        BYTE drv,                /* Physical drive nmuber (0..) */
        BYTE ctrl,                /* Control code  ...

多谢受教了
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 05:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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