0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

读写Flash时要不要关中断

TopSemic嵌入式 来源:TopSemic嵌入式 作者:Norman 2022-10-18 09:03 次阅读

关中断,还是开中断?这是个问题。

大家知道,在单片机运行的时候,经常有一些数据需要保存,而且即使掉电后,这些数据也不能丢失。用一片EEPROM,如24C02可以解决,但是这会增加成本。所以,一个比较常用的办法,是把数据存入单片机的Flash,这种方法叫IAP(In Application Programming)。

此方法虽然省钱,但用的不对也会带来各种困扰,看看大家的讨论就知道了:

0f883570-4e80-11ed-a3b6-dac502259ad0.jpg0fe252d0-4e80-11ed-a3b6-dac502259ad0.jpg1010bf62-4e80-11ed-a3b6-dac502259ad0.jpg105f4cc2-4e80-11ed-a3b6-dac502259ad0.jpg

我们先看一下Flash的原理,然后探讨一下写程序时,有什么需要注意的。现在单片机中集成的一般是Nor Flash,这种技术是Intel在1988年推出的,它利用浮栅场效应管(Floating Gate MOSFET)存储程序或数据。简单来说,浮栅就像一个囚禁电子的笼子,通过在栅极加正向电压,可以把电子捕获到笼子里,通过加负电压,可以把电子从笼子里全部赶走。而数据的读取,是通过检测栅极中有没有存储电子,这一过程不会导致浮栅中电子的状态改变。

10a80c3c-4e80-11ed-a3b6-dac502259ad0.jpg

(From Technical Note by Macronix International)

这样,我们很容易理解,在擦写Flash的时候,不应该去读Flash。回到开始的问题,在程序擦写Flash期间,是不是应该把中断关掉呢?因为我们知道中断向量表,默认是存放在Flash中的。真不一定,还是需要具体情况具体分析。一些早期的单片机,擦写Flash的代码,需要拷贝到RAM里执行,并且必须关闭所有中断,否则会出错。但是现在推出的单片机,一般都引入了Stall机制,在擦写Flash的时候,读Flash的操作会被阻止,擦写完之后,才能继续执行。

比如STM32F030手册中,有以下描述:

10dd91b8-4e80-11ed-a3b6-dac502259ad0.jpg

我们可以用程序观察一下。程序里有一个1ms中断,每进入一次中断翻转一次引脚,在主程序的循环中,每1S执行一次Flash页擦除操作。可以看到擦除Flash一个页用了21.9ms。在擦除期间,1ms中断停止响应,擦完后1ms中断继续执行。

111279d2-4e80-11ed-a3b6-dac502259ad0.jpg1139a12e-4e80-11ed-a3b6-dac502259ad0.jpg

如果程序对中断响应要求特别高,比如精确计时,或者中断需要马上响应,可以把中断向量表和中断响应代码都放到RAM中执行,有兴趣的同学可以自己试一下。

再有一种情况就是,如果单片机中有两个以上的Flash Bank,中断向量表在一个Bank中,那么擦写其它Bank时,中断响应是不受影响的。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1633

    浏览量

    147940
  • 中断
    +关注

    关注

    5

    文章

    898

    浏览量

    41470
  • EEPROM
    +关注

    关注

    9

    文章

    1019

    浏览量

    81560

原文标题:R&D奇谭 第7期: 读写Flash时,要不要关中断?

文章出处:【微信号:TopSemic,微信公众号:TopSemic嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    flash要不要加个判断?

    “写flash要不要加个判断?”这是我一个朋友的提问。
    的头像 发表于 11-21 10:07 698次阅读
    写<b class='flag-5'>flash</b>,<b class='flag-5'>要不要</b>加个判断?

    设计成品时,要不要加入电池啊

    两个问题:1、你们都说这是一个移动电源,那我设计成品时,要不要加入电池啊,要的话,电池要那种好呢,一般的可充电池还是手机电池那一类!2、我看到你们样板的图片:充电部分与放电部分是分开,各属一片电路板。考虑到产品的可观性,分成两片电路板是好的,但如果我将它们都设计成一个电路板那会不会影响你们对我的评分!
    发表于 06-01 09:06

    要不要学MSP430

    现在比较纠结!到底要不要学习MSP430!似乎他除了低功耗也没有什么了!哎。。。
    发表于 10-04 16:00

    测控类要不要学习板卡!!!!!

    电气控制专业的以后想找测控类的工作,重点应该学习LabVIEW的那些东西?要不要学习板卡,那种卡使用一点?新手(菜鸟),语言不当千万见谅!
    发表于 03-06 15:54

    请问ade7753读irms之前要不要先进行一个使能中断,对波形采样

    急急急!!!ade7753读irms之前要不要先进行一个使能中断,对波形采样这几句话的意思是不是就是说,在对IRMS读之前,要先把波形采样那块弄个中断,然后出现波形后,才能进行后面计算,才能读IRMS里的电流有效值?
    发表于 09-30 14:42

    请问霍尔测速编码器要不要电源?

    请问大师们,在下实在是遇到了难题,求问:霍尔测速编码器要不要电源?接上电源后没有输出有什么可能?
    发表于 07-24 08:03

    方波产生电路要不要输入信号呢?

    方波产生电路要不要输入信号?它是靠什么物理过程使得集成运放的反相输入端电位改变从而使输出发生翻转?
    发表于 04-28 11:10

    技巧:快说iOS 10.2到底要不要升级

    iOS 10.2的这次升级主要在一些细节方面,比如表情包啥的,看完这些以后泥萌就可以知道要不要升级了。
    发表于 12-19 11:40 1895次阅读

    电脑固态硬盘到底要不要分区

    随着固态硬盘入门容量进入240GB时代,它负担的已经不单单是系统盘的职责,常用的软件及个人文档都可以享受到高速的待遇。不过固态硬盘到底要不要分区?分区分几个依然是恒古不变的争议话题。
    的头像 发表于 01-12 11:14 1.4w次阅读

    无线ap隔离有什么用_无线ap隔离要不要

    本文首先介绍了无线ap隔离的概念,其次阐述了无线ap隔离作用,最后分析了无线ap隔离要不要开。
    发表于 04-15 10:41 5.4w次阅读

    DC-DC电路中的电感下面要不要铺铜

    关于DC-DC开关芯片上的电感下面要不要铺铜,网上有很多不同的意见,今天在网上看到一篇文章里面有ADI工程师对于这个问题的解答,他的解答如下:
    发表于 11-07 13:51 23次下载
    DC-DC电路中的电感下面<b class='flag-5'>要不要</b>铺铜

    要不要安装360全景导航?

    要不要安装360全景导航
    的头像 发表于 11-26 11:04 1460次阅读
    <b class='flag-5'>要不要</b>安装360全景导航?

    为什么冬季油耗偏高?到底要不要热车?

    为什么冬季油耗偏高?到底要不要热车?
    的头像 发表于 11-24 16:30 688次阅读
    为什么冬季油耗偏高?到底<b class='flag-5'>要不要</b>热车?

    电主轴轴承如何判断要不要换?|深圳恒兴隆机电

    电主轴轴承如何判断要不要换?|深圳恒兴隆机电
    的头像 发表于 07-05 10:35 679次阅读
    电主轴轴承如何判断<b class='flag-5'>要不要</b>换?|深圳恒兴隆机电

    工厂到底要不要上MES?

    工厂到底要不要上MES?这几年,很多工厂老板都开始思考这个问题。上吧,又害怕资金投入得不到回报,费时费力又费财;不上吧,看到身边的同行接连地加入MES行列,经营得风生水起,再过几年差距就拉开了……
    的头像 发表于 01-04 16:28 426次阅读