发 帖  
原厂入驻New
张飞软硬开源:基于STM32的BLDC直流无刷电机驱动器,👉戳此立抢👈
[问答] 请问STM32F446RCT6超出flash范围擦除会有问题吗?
433 flash 芯片
分享
如题,STM32F446RCT6芯片flash大小为256KB,一共有6个扇区:0~5;
STM32F446XX系列 flash最大为512KB,一共有8个扇区:0~7;
请问,在STM32F446RCT6芯片中,假如擦除flash的操作越过0~5扇区,擦除并不存在的6和7扇区,会不会导致错误呢?
调试过程中貌似没有出现异常。具体原因是什么呢?
本人猜测,STM32F446RCT6里面有6和7扇区的电路?只是没安装flash?
0
2019-6-18 09:13:26   评论 分享淘帖 邀请回答
6个回答
好像以前听说,好多系列的MCU,比如说有16K,32K,64K的系列,其实里面都是64K的,只不过前面的是测试保证好的,后面没测试过的
2019-6-18 09:22:42 评论

举报

bbslsk 发表于 2019-6-18 10:02
好像以前听说,好多系列的MCU,比如说有16K,32K,64K的系列,其实里面都是64K的,只不过前面的是测试保证好的,后面没测试过的

感谢回复, 所以一个系列的芯片,就会按照最大的Flash来预留设计么?所以对超出自身flash范围,但是没有超出该系列芯片最大flash范围的部分进行擦除就没问题?
2019-6-18 09:36:54 评论

举报

本帖最后由 stm1024 于 2018-7-13 09:59 编辑

不会有问题,你看看arm的储存器布局:

你看储存器从数学上是连续的,一个区域挨着一个区域,但是实际上,ARM公司在设计的时候考虑到不同厂家的存储空间和外设数量,一般会留有余地。因此,会存在一些真空地带。flash一般会有一个片内储存器保留区间,所以别说什么16k,64k,512k的,就是1GB都是可能的,所以你擦除扇区的时候落在这个区域,是不会起作用的。
如果一个耿直的厂商做了一个1gb的flash……
2019-6-18 09:41:55 评论

举报

60user36 发表于 2019-6-18 10:21
本帖最后由 stm1024 于 2018-7-13 09:59 编辑

不会有问题,你看看arm的储存器布局:

感谢回复,由于不明白具体电路设计的原理,只能单纯的理解为预留出来,不了解对没有接flash的地方执行擦除操作会发生什么样的电气变化。
考虑到程序的稳定性,还是不敢轻易去擦除没有真实flash的地带。ST的例程貌似没有对256K和512K进行区分,统一成512K对待。
2019-6-18 09:47:41 评论

举报

HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)这个函数是有返回值的,楼主可以自己DEBUG看一下 返回值(就是return status是多少)
HAL库绝大部分函数都有返回值,便于诊断错误
2019-6-18 10:06:52 评论

举报

UserMen 发表于 2019-6-18 10:46
HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data)这个函数是有返回值的,楼主可以自己DEBUG看一下 返回值(就是return status是多少)
HAL库绝大部分函数都有返回值,便于诊断错误

感谢回复,我试一下看看
2019-6-18 10:16:52 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

我要提问
课程
    关闭

    站长推荐 上一条 /10 下一条

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