STM32讀寫片內FLASH 筆記

文章目錄

  • 前言
  • STM32F105的內部ROM分布
  • STM32F10x的閃存擦寫
    • 解鎖FPEC
    • Main FLASH 的編寫
  • main Flash的擦除
  • 注意點

前言

在通過OTA的方式對設備進行升級,若在使用內部FLASH裝載固件程序的方式下,需要擦寫 內部FLASH 從而實現把新的固件程序寫入到 內部FLASH。

參考文檔:ST的閃存編程文檔

STM32F105的內部ROM分布

在這里插入圖片描述
F105屬于互聯型設備,其內部的主存儲器ROM有256KB。
這256KB 由 128頁 ,每頁2KB的頁面組成

Information block 分為兩個部分:System memory 和 Option bytes

  • System memory:
    這個部分存儲了是STM32官方系統的bootloader程序,在通過選擇對應的BOOT模式可以進入該bootloader程序;該bootloader程序是通過 把USART1的傳輸過來的程序 寫入到Main memory中。
    在互聯型產品中,bootloader程序 還可以讀取 USART2(重映射)等接口,從而燒錄程序。
  • Option bytes
    有兩種保護方式:①寫包含;②讀保護

注意:
1.只有在寫FLASH完畢后,才能正確的讀取FLASH。在 寫FLASH時讀取FLASH,將會造成寫失敗;
2.只有在內部高速晶振開啟時,才能寫入/擦除內部FLASH。
3.在低功耗模式下,對FLASH的任何訪問將被中止。

STM32F10x的閃存擦寫

STM32F10x的閃存擦寫由 FPEC 控制。

FPEC指Flash program and erase controller,FPEC由7個32位的寄存器組成。
在這里插入圖片描述
注意:只有CPU沒有訪問 正在操作的FLASH,CPU將不會因操作FLASH而阻塞。

解鎖FPEC

在復位后,FPEC是被保護著。

需要往 FLASH_KEYR 寄存器寫入固定的值,才可解開FPEC的鎖。

如果這個值寫錯了,那么只有在下一次復位后,才能再次接口FPEC的鎖。

Main FLASH 的編寫

每次只能往main flash寫入16位數據。

在寫入main flash的指定地址時,若該地址并未被擦除,則FLASH_SR的 PGERR 將會被置位。
若該地址是寫保護的(通過 FLASH_WRPR 設置),則FLASH_SR的 WRPRTERR 將會被置位。
在這里插入圖片描述

標志的擦寫 main Flash的步驟如下:
在這里插入圖片描述

main Flash的擦除

在編寫 main Flash 之前,需要先擦除。

擦除 main Flash 的方式有兩種:頁擦除,全擦除。


頁擦除:頁擦除是擦除 main Flash的一個頁面。
在這里插入圖片描述

map 0x40000000,0x40080000 read write

注意點

在使用stm32自帶的flash保存數據時候,如下特點必須知道:

1、必須是先擦除一個扇區,才能寫入

2、讀數據沒有限制

3、寫數據必須是偶數(2字節、4字節),同時寫入地址以一定要考慮字節對齊,

4、一般都是在最后幾頁進行數據保存的,確保數據量不超過flash的的大小,比如f103大容量是2k字節,其實一個扇區只能寫入1k數量的2字節的數據。

http://eeskill.com/article/id/29479

5、寫入數據時,采用大端模式,如想往 0x0800 0000寫入0x31 0x32 0x33 0x34,則寫入的數據是uint32_t data = 0x31 + 0x32<<8 + 0x33<<16 + 0x34<<24;即寫入0x34333231

6、一旦寫入數據,無論你寫的是FLASH擦除后的默認值0xff還是其他值,若在不擦除的情況下再次往該地址寫數據,必定失敗。

7、若遇到寫入 或 擦除失敗的清空,需要清除標志位后才能再繼續寫入或擦除。

FLASH_ClearFlag(FLASH_FLAG_EOP |   FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
flash_sta=FLASH_ErasePage(UPDAFLAG_FLASH_56K);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897183.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python爬蟲實戰:爬取財金網實時財經信息

注意:以下內容僅供技術研究,請遵守目標網站的robots.txt規定,控制請求頻率避免對目標服務器造成過大壓力! 一、引言 在當今數字化時代,互聯網數據呈爆炸式增長,其中蘊含著巨大的商業價值、研究價值和社會價值。從金融市場動態分析到行業趨勢研究,從輿情監測到學術信息收…

3.3.2 用仿真圖實現點燈效果

文章目錄 文章介紹Keil生成.hex代碼Proteus仿真圖中導入.hex代碼文件開始仿真 文章介紹 點燈之前需要準備好仿真圖keil代碼 仿真圖參考前文&#xff1a;3.3.2 Proteus第一個仿真圖 keil安裝參考前文&#xff1a;3.1.2 Keil4安裝教程 keil新建第一個項目參考前文&#xff1a;3.1…

996引擎-問題處理:實現自定義道具變身卡

996引擎-問題處理:實現自定義道具變身卡 方案一、修改角色外觀(武器、衣服、特效) 實現變身先看效果創建個NPC測試效果方案二、利用 Buff 實現變身創建:變身Buff配buff表,實現人物變形測試NPC創建道具:變身卡配item表,添加道具:變身卡觸發函數參考資料方案一、修改角色外…

AI視頻領域的DeepSeek—阿里萬相2.1圖生視頻

讓我們一同深入探索萬相 2.1 &#xff0c;本文不僅介紹其文生圖和文生視頻的使用秘籍&#xff0c;還將手把手教你如何利用它實現圖生視頻。 如下為生成的視頻效果&#xff08;我錄制的GIF動圖&#xff09; 如下為輸入的圖片 目錄 1.阿里巴巴全面開源旗下視頻生成模型萬相2.1模…

驅動 AI 邊緣計算新時代!高性能 i.MX 95 應用平臺引領未來

智慧浪潮崛起&#xff1a;AI與邊緣計算的時代 正悄然深植于我們的日常生活之中&#xff0c;無論是火熱的 ChatGPT 與 DeepSeek 語言模型&#xff0c;亦或是 Meta 智能眼鏡&#xff0c;AI 技術已經無形地影響著我們的生活。這股變革浪潮并未停歇&#xff0c;而是進一步催生了更高…

如何快速判斷IP是否為代理

1.探究IP地址的地理分布 代理IP的所在位置&#xff0c;往往與用戶實際所在地不吻合。可以通過運用WHOIS查詢工具或在線IP地址定位服務&#xff0c;輸入所需查詢的IP&#xff0c;即可獲得其地理位置信息。 若該信息顯示的位置并非用戶所在城市或顯示為知名代理服務器節點&…

從CL1看生物計算機的創新突破與發展前景:技術、應用與挑戰的多維度剖析

一、引言 1.1 研究背景與意義 隨著科技的飛速發展&#xff0c;計算機技術已經成為推動現代社會進步的核心力量之一。從最初的電子管計算機到如今的大規模集成電路計算機&#xff0c;計算機的性能得到了極大的提升&#xff0c;應用領域也不斷拓展。然而&#xff0c;傳統計算機…

AI革命先鋒:DeepSeek與藍耘通義萬相2.1的無縫融合引領行業智能化變革

云邊有個稻草人-CSDN博客 目錄 引言 一、什么是DeepSeek&#xff1f; 1.1 DeepSeek平臺概述 1.2 DeepSeek的核心功能與技術 二、藍耘通義萬相2.1概述 2.1 藍耘科技簡介 2.2 藍耘通義萬相2.1的功能與優勢 1. 全鏈條智能化解決方案 2. 強大的數據處理能力 3. 高效的模型…

zabbix圖表中文顯示方框

問題&#xff1a; zabbix安裝完成后&#xff0c;查看圖形&#xff0c;下方中文顯示為方框 思路&#xff1a; 替換字體文件&#xff0c;或者修改配置文件指向中文可以正常顯示的字體文件 方案&#xff1a; 查找資料確認影響因素 通過資料查詢得知&#xff0c;使用的字體文…

【Linux-網絡】HTTP的清風與HTTPS的密語

&#x1f3ac; 個人主頁&#xff1a;誰在夜里看海. &#x1f4d6; 個人專欄&#xff1a;《C系列》《Linux系列》《算法系列》 ?? 道阻且長&#xff0c;行則將至 目錄 &#x1f4da; 引言 &#x1f4da; 一、HTTP &#x1f4d6; 1.概述 &#x1f4d6; 2.URL &#x1f5…

通過數據庫網格架構構建現代分布式數據系統

在當今微服務驅動的世界中&#xff0c;企業在跨分布式系統管理數據方面面臨著越來越多的挑戰。數據庫網格架構已成為應對這些挑戰的強大解決方案&#xff0c;它提供了一種與現代應用架構相匹配的分散式數據管理方法。本文將探討數據庫網格架構的工作原理&#xff0c;以及如何使…

RangeError: Radix must be an integer between 2 and 36

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

荊為好的專欄推薦

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點下班 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 專欄推薦特別篇1. 后端專欄推薦2. 云原生專欄…

Bean 的生命周期主要包括以下階段:

Bean 的生命周期主要包括以下階段&#xff1a; 定義 &#xff1a;在配置文件或注解中定義 Bean&#xff0c;包括其類、作用域等信息。 實例化 &#xff1a;Spring 容器根據定義創建 Bean 的實例。 屬性賦值 &#xff1a;容器為 Bean 設置配置的屬性值。 初始化 &#xff1a;…

計算機基礎:二進制基礎06,用八進制來計數

專欄導航 本節文章分別屬于《Win32 學習筆記》和《MFC 學習筆記》兩個專欄&#xff0c;故劃分為兩個專欄導航。讀者可以自行選擇前往哪個專欄。 &#xff08;一&#xff09;WIn32 專欄導航 上一篇&#xff1a;計算機基礎&#xff1a;二進制基礎05&#xff0c;八進制簡介 回…

圖論-腐爛的橘子

994.腐爛的橘子 在給定的 m x n 網格 grid 中&#xff0c;每個單元格可以有以下三個值之一&#xff1a;值 0 代表空單元格&#xff1b; 值 1 代表新鮮橘子&#xff1b; 值 2 代表腐爛的橘子。 每分鐘&#xff0c;腐爛的橘子 周圍 4 個方向上相鄰 的新鮮橘子都會腐爛。返回 直到…

TypeError: Cannot create property ‘xxx‘ on string ‘xxx‘

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

嵌入式硬件設計SPI時需要注意什么?

嵌入式硬件設計SPI時需要注意什么? 1. 硬件設計注意事項 關鍵點注意事項1. 信號完整性- 縮短SCK、MOSI、MISO的走線長度,避免反射干擾。- 使用屏蔽線或差分信號(高速場景)。- 阻抗匹配(特別是高頻信號,如50Ω端接)。2. 電源與地線- 電源去耦:每個SPI芯片的VCC附近放置0…

git-filter-repo 清除大文件教程

git filter-repo 是一個用于過濾和清理 Git 倉庫歷史的工具&#xff0c;它可以高效地批量修改提交歷史中的文件內容、刪除文件、重命名文件以及進行其他歷史重構操作。相較于 git filter-branch&#xff0c;它通常更快且更易于使用。 以下是一個基本示例&#xff0c;說明如何使…

STM32之軟件SPI

SPI傳輸更快&#xff0c;最大可達80MHz&#xff0c;而I2C最大只有3.4MHz。輸入輸出是分開的&#xff0c;可以同時輸出輸入。是同步全雙工。僅支持一主多從。SS是從機選擇線。每個從機一根。SPI無應答機制的設計。 注意&#xff1a;所有設備需要共地&#xff0c;時鐘線主機輸出&…