一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32片上Flash讀寫(xiě)一些重要知識(shí)

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-06 14:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)于STM32片上Flash讀寫(xiě)操作,之前很多朋友遇到過(guò)坑,也問(wèn)過(guò)很多相關(guān)的問(wèn)題,這里再簡(jiǎn)單總結(jié)一下。

1寫(xiě)在前面

STM32片上Flash除了存儲(chǔ)我們的代碼,多余的空間還可以供我自己編程(讀寫(xiě))。比如,存儲(chǔ)標(biāo)志位、字庫(kù)等。

如果對(duì)片上Flash讀寫(xiě)操作不當(dāng),將會(huì)導(dǎo)致不可挽回的結(jié)局。比如:修改了應(yīng)用程序代碼導(dǎo)致程序跑飛,非對(duì)其操作導(dǎo)致異常中斷等。

因此,我們對(duì)片上Flash讀寫(xiě)操作時(shí),一定要避免一些錯(cuò)誤的做法。下面將講述一些關(guān)于STM32片上Flash的知識(shí),讓大家掌握更多相關(guān)知識(shí)。

2

Flash閃存接口

STM32片上Flash閃存接口是在AHB協(xié)議上實(shí)現(xiàn)了對(duì)指令和數(shù)據(jù)的訪問(wèn),它通過(guò)對(duì)存儲(chǔ)器的預(yù)取緩存,加快了存儲(chǔ)器的訪問(wèn);

閃存接口還實(shí)現(xiàn)了在所有工作電壓下對(duì)閃存編程和擦除所需的邏輯電路,這里還包括訪問(wèn)和寫(xiě)入保護(hù)以及選項(xiàng)字節(jié)的控制。

內(nèi)置閃存模塊可以在通用地址空間直接尋址,任何32位數(shù)據(jù)的讀操作都能訪問(wèn)閃存模塊的內(nèi)容并得到相應(yīng)的數(shù)據(jù)。

3

STM32片上Flash容量

STM32片上Flash容量大小與芯片的型號(hào)有關(guān),具體大小可以參看命名規(guī)則:

而我們也可以通過(guò)讀取Flash容量寄存器,或通過(guò)STM32 ST-LINK Utility工具獲取芯片容量。具體可以參看我的另一篇文章《關(guān)于STM32的這幾個(gè)寄存器》

4

Flash閃存模塊的組織

STM32的Flash,有的是分頁(yè),而有的卻是分塊,具體可以查閱“參考手冊(cè)”。

比如:STM32F0、 F1、 F3、 L1等就是按Page頁(yè)來(lái)劃分的,如下圖:

而像STM32F2、F4等就是按Sector扇區(qū)來(lái)劃分,如下圖:

所以,如果移植代碼,從Page頁(yè)移植到Sector扇區(qū),或者從Sector扇區(qū)移植到Page頁(yè),這部分底層代碼必須要修改才行。

5

非對(duì)其寫(xiě)操作

STM32為32位的MCU,即4個(gè)字節(jié)。如果不是按照4個(gè)字節(jié)的寫(xiě)Flash,將導(dǎo)致Faults異常。

寫(xiě)Flash過(guò)程:

這里大家可以參看我之前分享的文章:

1.位帶別名區(qū)最低有效位

2.談?wù)凷TM32(CM3)的Faults異常

6

寫(xiě)操作不響應(yīng)代碼或數(shù)據(jù)讀取

對(duì)STM32內(nèi)部FLash的寫(xiě)操作,相對(duì)于執(zhí)行指令是比較耗時(shí)的。從數(shù)據(jù)手冊(cè)可以得出16位數(shù)據(jù)編程時(shí)間再40 --- 70us。

從STM32編程手冊(cè)中,可以知道:在進(jìn)行寫(xiě)或擦除操作時(shí),不能進(jìn)行代碼或數(shù)據(jù)的讀取操作。

比如:你在寫(xiě)Flash期間有接收串口數(shù)據(jù),很有可能會(huì)丟串口數(shù)據(jù)。

因?yàn)楸容^耗時(shí),所以,在寫(xiě)數(shù)據(jù)時(shí),CPU不會(huì)執(zhí)行其他操作。

簡(jiǎn)單說(shuō):在寫(xiě)Flash時(shí),CPU 不能取指令,導(dǎo)致中斷得不到及時(shí)響應(yīng),從而發(fā)生接收到的數(shù)據(jù)未及時(shí)讀走而被覆蓋的現(xiàn)象。

遇到這種情況,解決的辦法:使用DMA。DMA不需要CPU干預(yù),一旦 USART 有數(shù)據(jù)接收到,由 DMA 負(fù)責(zé)將其傳輸至循環(huán)緩沖區(qū)中。軟件定期檢測(cè)循環(huán)緩沖區(qū)中是否有接收到的數(shù)據(jù),如果有則加以處理。

提示:

如果你的代碼會(huì)反復(fù)讀Flash,建議使用外部Flash。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17984

    瀏覽量

    366942
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1679

    瀏覽量

    151839
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364977
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    求助,關(guān)于STM32F407的flash讀寫(xiě)問(wèn)題求解

    目前flash模擬EEPROM是參考的官方的flash讀寫(xiě)代碼,但C語(yǔ)言中attribute ((at())絕對(duì)定位的應(yīng)用 網(wǎng)上的段代碼如下 1、定位到
    發(fā)表于 07-18 07:14

    第二十九章 讀寫(xiě)內(nèi)部FLASH

    本文介紹了W55MH32內(nèi)部FLASH,其含主存儲(chǔ)、系統(tǒng)存儲(chǔ)等,可存儲(chǔ)代碼及掉電保存數(shù)據(jù)。讀寫(xiě)需解鎖、擦除頁(yè)等步驟,標(biāo)準(zhǔn)庫(kù)提供相關(guān)函數(shù)。還展示了擦除編程測(cè)試及模擬EEPROM讀寫(xiě)的實(shí)驗(yàn)。
    的頭像 發(fā)表于 06-20 14:09 ?587次閱讀
    第二十九章 <b class='flag-5'>讀寫(xiě)</b>內(nèi)部<b class='flag-5'>FLASH</b>

    關(guān)于芯片設(shè)計(jì)的一些基本知識(shí)

    芯片的設(shè)計(jì)理念眾所周知,芯片擁有極為復(fù)雜的結(jié)構(gòu)。以英偉達(dá)的B200芯片為例,在巴掌大的面積,塞入了2080億個(gè)晶體管。里面的布局,堪稱(chēng)個(gè)異次元空間級(jí)的迷宮。英偉達(dá)B200芯片如此復(fù)雜的架構(gòu)
    的頭像 發(fā)表于 06-11 12:16 ?247次閱讀
    關(guān)于芯片設(shè)計(jì)的<b class='flag-5'>一些</b>基本<b class='flag-5'>知識(shí)</b>

    MCUFlash

    ? ? MCUFlash是微控制器內(nèi)部集成的非易失性存儲(chǔ)器,主要用于存儲(chǔ)程序代碼、常量數(shù)據(jù)及系統(tǒng)配置信息。其核心特性與功能如下: 、定義與類(lèi)型?
    的頭像 發(fā)表于 05-06 14:26 ?347次閱讀

    STM32L476 Flash擦除失敗的原因?

    開(kāi)發(fā)板MCU型號(hào):STM32L476RG 同樣的固件在開(kāi)發(fā)板中flash讀寫(xiě)擦除操作都沒(méi)問(wèn)題,但在產(chǎn)品中擦除函數(shù)返回成功,但flash中的數(shù)據(jù)其實(shí)并沒(méi)有擦除。 這兩款MCU在
    發(fā)表于 04-23 08:26

    S32K311如何在Flash測(cè)試ECC?

    我有一些與目標(biāo) S32K311 Flash ECC 相關(guān)的問(wèn)題 - ERM 是否負(fù)責(zé) Code Flash 和 Data Flash
    發(fā)表于 04-14 08:47

    STM32C031F4 FLASH存儲(chǔ)器讀寫(xiě)例程各位高能不能提供個(gè)?

    STM32C031F4FLASH存儲(chǔ)器 讀寫(xiě)例程 各位高能不能提供個(gè)謝謝大家
    發(fā)表于 03-13 07:37

    使用DLP3479+DLP4710+DLPA3005開(kāi)發(fā)光機(jī)遇到一些疑問(wèn)求解

    目前在使用DLP3479+DLP4710+DLPA3005開(kāi)發(fā)光機(jī)。遇到一些疑問(wèn)如下: 1.DLPC3479 目前是通過(guò)SPI加載flash圖片數(shù)據(jù),是否可以通過(guò)外掛內(nèi)存(RAM)的模式加載圖片
    發(fā)表于 02-20 08:02

    【半導(dǎo)體存儲(chǔ)】關(guān)于NAND Flash一些知識(shí)

      前言   作為名電子專(zhuān)業(yè)的學(xué)生,半導(dǎo)體存儲(chǔ)顯然是繞不過(guò)去的個(gè)坎,今天聊聊關(guān)于Nand Flash一些
    發(fā)表于 12-17 17:34

    關(guān)于NAND Flash一些知識(shí)

    前言 作為名電子專(zhuān)業(yè)的學(xué)生,半導(dǎo)體存儲(chǔ)顯然是繞不過(guò)去的個(gè)坎,今天聊聊關(guān)于Nand Flash一些
    的頭像 發(fā)表于 12-17 17:33 ?789次閱讀

    一些常見(jiàn)的動(dòng)態(tài)電路

    無(wú)論是模電還是數(shù)電,理論知識(shí)相對(duì)來(lái)說(shuō)還是比較枯燥,各種電路原理理解清楚不算容易,換種生動(dòng)形象的方式或許會(huì)增加一些趣味性,也更容易理解這些知識(shí)。下面整理了
    的頭像 發(fā)表于 11-16 09:26 ?1137次閱讀
    <b class='flag-5'>一些</b>常見(jiàn)的動(dòng)態(tài)電路

    EEPROM輕量級(jí)的簡(jiǎn)易類(lèi)文件的數(shù)據(jù)讀寫(xiě)庫(kù):EEPROMFS

    雖然 EEPROM 相對(duì) Flash 讀寫(xiě)速度更慢,但 EEPROM 一些獨(dú)有特性是 Flash 無(wú)法實(shí)現(xiàn)的,比如字節(jié)讀寫(xiě)操作。 所以,EE
    的頭像 發(fā)表于 11-15 16:31 ?1192次閱讀
    EEPROM輕量級(jí)的簡(jiǎn)易類(lèi)文件的數(shù)據(jù)<b class='flag-5'>讀寫(xiě)</b>庫(kù):EEPROMFS

    分享一些常見(jiàn)的電路

    理解模電和數(shù)電的電路原理對(duì)于初學(xué)者來(lái)說(shuō)可能比較困難,但通過(guò)一些生動(dòng)的教學(xué)方法和資源,可以有效地提高學(xué)習(xí)興趣和理解能力。 下面整理了一些常見(jiàn)的電路,以動(dòng)態(tài)圖形的方式展示。 整流電路 單相橋式整流
    的頭像 發(fā)表于 11-13 09:28 ?834次閱讀
    分享<b class='flag-5'>一些</b>常見(jiàn)的電路

    閃存隨機(jī)讀寫(xiě)與連續(xù)讀寫(xiě)哪個(gè)重要

    閃存隨機(jī)讀寫(xiě)與連續(xù)讀寫(xiě)各有其重要性,具體取決于應(yīng)用場(chǎng)景和需求。 隨機(jī)讀寫(xiě)重要性 延遲小,響應(yīng)快 : 閃存(尤其是SSD)的隨機(jī)
    的頭像 發(fā)表于 10-12 11:44 ?1059次閱讀

    STM32CUBEMX(10)--Flash讀寫(xiě)

    概述 本例程主要講解如何對(duì)芯片自帶Flash進(jìn)行讀寫(xiě),用芯片內(nèi)部Flash可以對(duì)一些需要斷電保存的數(shù)據(jù)進(jìn)行保存,無(wú)需加外部得存儲(chǔ)芯片,本例程采用的是
    發(fā)表于 09-10 15:36