吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32L4系列內部FLASH雙字編程示例

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-05-14 09:11 ? 次閱讀

有人使用STM32L476芯片開發產品,他想在內部FLASH空間特定位置寫些數據,發現總是失敗,并補充說之前使用STM32F1系列、STM32L1系列卻沒有類似問題。

其實,針對STM32L4的內部FLASH編程,跟STM32F1/L1系列是不同的,其中STM32F1的內部FLASH編程僅支持半字編程,STM32L1的內部FLASH編程主要支持字編程或半頁編程。而STM32L4系列的內部FLASH編程所支持的則是64位雙字編程或以32個雙字為單位的快速行編程。

對于少量的零星數據編程自然會選擇64位雙字編程模式,即每次改寫Flash內容必須以64位為單位。硬件還針對這64位數據做了8位的ECC,我們用戶看不到而已。下面簡單介紹下64位雙字編程過程。

在基于64位雙字編程時,如果只是就字節或半字進行編程則會產生錯誤;或者盡管使用雙字編程卻沒有遵循雙字地址對齊【8字節對齊】時也會產生錯誤。

這里我使用ARM MDK V2.9開發環境,借助于STM32L476_NUCELO開發板演示一下對內部FLASH某個位置寫幾個64位數據的實現過程【寫之前相關區域已經被擦除過了】。

我通過IDE將內部FLASH最后的0x1000地址空間預留出來用于填寫些數據,即我將內部FLASH分成2塊,將最后的0x1000的FLASH空間劃了出來。如下圖所示:【這里的芯片是STM32L476RGT6,下面只演示寫三個64位數據。】

我將特定數據區定義在內部FLASH空間0x80ff000開始的地方。

#define Address_Const (0x80FF000)

另外還定義了一個64位地址指針和一個64位數據數組。

相關執行參考代碼如下:

代碼是基于STM32Cube庫來組織的,連續寫了三個64位的數據到指定的FLASH空間。其中主要涉及到一個FLASH編程函數HAL_FLASH_Program(),它有三個變量,分別是編程模式,待編程的FLASH地址以及用于編程的數據。

代碼比較簡單,對欲編程的地址做檢查確認,然后進行FLASH編程開鎖,清除可能存在的各種掛起狀態標志,進行雙字編程,之后對FLASH寄存器訪問進行上鎖。

現在基于上面的代碼看看運行結果:

我們可以看到在指定的FLASH地址空間寫三個64位數據。

在上面介紹64位雙字編程規則時,可能有人會問,如果我遵循了8字節地址對齊,待寫的數據也不是字節或半字,而是一個字會怎么樣呢?那你也得湊成2個字來寫,方能完成一次寫操作。

比方基于上面測試代碼,僅僅將每次待寫的數據改為32位字,最后結果便是高位字被填0了。就像下面這樣:

好,關于STM32L4系列內部FLASH雙字編程模式就介紹到這里。整個過程應該說不難,只要注意到各個細節就好。

趁此再拋磚引玉似地做些提醒:STM32系列眾多,各個系列的內部FLASH編程模式以及頁或扇區的容量規劃、地址安排往往各有差異,在FLASH編程時千萬別跟著慣性或感覺走。還有,不同的編程模式往往對芯片的電源電壓有不同的要求,這點也要特別特別特別注意。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93980
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62968
  • STM32L4
    +關注

    關注

    1

    文章

    42

    瀏覽量

    9435

原文標題:STM32L4系列內部FLASH雙字編程示例

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    stm32l4、msp430、msp432到底誰功耗低?

    stm32l4、msp430、msp432到底誰功耗低,性能如何,希望大家一起討論。
    發表于 05-13 08:25

    STM32 L4系列與傳統的STM32 L4系列相比,除低功耗外功能,還有別的優點嗎?

    STM32L4系列 與傳統的 STM32L4 系列相比,除低功耗外功能,還有別的優點嗎?
    發表于 05-13 08:20

    請問STM32L4系列哪個型號集成以太網收發器包含以太網功能?

    準備學習st以前都是用的飛思,所以不熟悉。請問 STM32L4系列 哪個型號集成以太網收發器包含以太網功能,以及有I2S功能,謝謝!
    發表于 05-13 06:37

    STM32F4或者STM32L4自帶的DSP庫做FFT運算是不是只能做基2的點數?

    請教,用STM32F4或者STM32L4自帶的DSP庫做FFT運算是不是只能做基2的點數,如果采樣200點,還能用dsp庫來進行FFT嘛,或者自己找個任意點數的FFT算法計算。
    發表于 05-11 08:32

    如何利用stm32L476內部的3個ADC采集同一時刻的三個輸入的數據?

    哪位大蝦如何利用stm32L476內部的3個ADC采集同一時刻的三個輸入的數據,看過STM32F4有個ADC_TRIPLEMODE_REGSIMULT模式,而STM32L4的只有ADC
    發表于 05-10 06:18

    STM32WB和STM32L4/L4+的區別和優劣勢是什么?

    STM32WB 和 STM32L4 / L4+的區別,和優劣勢
    發表于 04-26 08:07

    STM32L475VE內部Flash編程出現ECCD錯誤的原因?

    使用的芯片型號 STM32L475VE,使用 HAL 庫 `HAL_FLASH_Program` API 對 內部 Flash 進行編程,出
    發表于 04-26 07:21

    STM32L4使用內部參考電壓時是否也需要打開VREFINT通道?

    STM32L4使用內部參考電壓時是否也需要打開VREFINT通道
    發表于 04-17 06:23

    stm32l4是否能支持ndis和ecm?

    各位大神,請教下stm32l4是否能支持ndis和ecm
    發表于 04-11 08:11

    stm32l4如何下載到usb host的固件庫?

    各位大神,請教下stm32l4如何下載到usb host的固件庫,還想請教下stm32有沒有開源的rndis和ecm代碼
    發表于 04-11 07:19

    請問STM32L4如何利用STM32CubeMX實現EXTI控制LED?

    STM32L4利用STM32CubeMX如何實現EXTI控制LED?
    發表于 04-09 08:07

    STM32L4系列開發板設置為HID設備,為什么不顯示HID設備?

    想將STM32L4系列開發板設置為HID設備,使用cubeMX進行設計。按照以下步驟設置好后,燒錄程式后,顯示“大容量存儲設備”,而不顯示HID設備。 Cubemx配置步驟: System
    發表于 04-09 06:20

    使用FlyMcu軟件給STM32L4燒錄程序經常失敗是為什么?

    使用FlyMcu軟件給STM32L4燒錄程序?經常失敗?顯示\"寫入出錯在0KB,進度0%,耗時828毫秒\"。請問這是為什么呢?
    發表于 03-26 06:50

    STM32U5,STM32WB及STM32L4開發板,哪個開發板擁有較多數量的ADC?

    請問,我現在需要開發一個項目,在這個項目中需要使用較多數量的傳感器(至少8個),這些傳感器需要進行信號采集,現在在使用STM32U5,STM32WB及STM32L4芯片的開發板中,哪些開發板擁有較多數量的ADC?
    發表于 03-20 08:01

    STM32L4 SDIO4線制不能初始化成功的原因?

    STM32L4,用CUBEMX生成代碼,用了FREERTOS,SDIO DMA,FATFS,SDIO 4線制,FATFS,MSC BOOTLOADER:裸機,未用DMA,SDIO 用的4線制,用了
    發表于 03-15 07:04
    百家乐稳赚的方法| 百家乐娱乐网真人娱乐网| 誉博百家乐开户导航| 大发888娱乐能借钱| 百家乐官网游戏机出千| 澳门百家乐官网网络游戏信誉怎么样| 百家乐最好的投注方法| 东方太阳城嘉宾国际酒店| 百家乐官网怎么玩了| A8百家乐官网的玩法技巧和规则| 百家乐五湖四海娱乐| E胜博| 狮威百家乐官网娱乐平台| 太阳城百家乐公司| 777博彩| 百家乐官网轮盘一体机厂家| 大发888娱乐场官方下载| 百家乐官网平台注册送彩金| 真人百家乐软件博彩吧| 大发888赌场 游戏平台| 百家乐官网电子路单破解| 百家乐免费试玩游戏| 博彩网大全| 澳门百家乐官网网络游戏信誉怎么样 | 百家乐官网单机游戏免费| 百家乐网络赌博网址| 棋牌易发| 玩百家乐官网免费| 百家乐平台哪个有在线支付呢| 大发888手机版下载安装| 百家乐官网真钱送彩金| 乐天堂百家乐娱乐平台| 百家乐官网的嬴钱法| 博彩百家乐规则| 皇冠走地网| 百家乐官网博彩网址| 新大发888娱乐城| 百家乐官网皇室百家乐官网| 太阳城绿萱园| 百家乐官网怎赌才赢钱| 威尼斯人娱乐平台|