



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、頁(yè)眉內(nèi)容所有文檔打包資料CSDN 下載地址: /ddf7d/5077420STM32F10X FLASH模擬 EEPROM心得微博:花了幾天時(shí)間研究 stm32 用 Flash 模擬 EEPROM 的問(wèn)題,終于徹底弄懂了這種機(jī)制,由于我英文很菜, 所以官方文檔沒(méi)有仔細(xì)看, 而是直接去摳官方給出的例子程序,當(dāng)然這種方法比較笨,但最終效果是一樣的。下面僅將我學(xué)習(xí)過(guò)程中的一些心得體會(huì)給大家介紹一下, 希望能對(duì)需要的人有所幫助,有不足之處望大家積極指正。首先推薦大家看的文檔就是ST 的官方文檔 AN2594.pdf 和前輩總結(jié)出的 STM32 FLASH 模擬 EEPROM 使用和優(yōu)化 .pdf 和已
2、經(jīng)優(yōu)化過(guò)的例程代碼 FW_下面開(kāi)始進(jìn)入主題1.為什么要用 flash 模擬 eeprom ?在許多應(yīng)用場(chǎng)合下需要用 eeprom 保存非易失性的數(shù)據(jù), 但是意法半導(dǎo)體為了控制成本,沒(méi)有在 STM32F10X 系列芯片中集成 EEPROM,所以我們就需要用其內(nèi)部集成的 FLASH 通過(guò)軟件模擬 EEPROM 來(lái)達(dá)到同樣的效果。2.stm32中的片上 FLASH 特點(diǎn)根據(jù) STM32F10X 閃存編程中的介紹,以小容量為例(如下圖) ,我們要使用的是 32 個(gè) 1K 字節(jié) / 頁(yè)的主存儲(chǔ)空間,也就是說(shuō)這段空間里除了保存用戶代碼的部分,其余部分我們是可以利用其作為數(shù)據(jù)存儲(chǔ)使用的。stm32 的 FL
3、ASH 分為主存儲(chǔ)塊和信息塊。主存儲(chǔ)塊用于保存具體的程序代碼和用戶數(shù)據(jù),信息塊用于負(fù)責(zé)由stm32出廠是放置2KB的啟動(dòng)程序( Bootloader )并鎖死,用戶無(wú)法更改。選項(xiàng)字節(jié)存儲(chǔ)芯片的配置信息及對(duì)主存儲(chǔ)塊的保護(hù)信息。STM32 的 FLASH 主存儲(chǔ)塊按頁(yè)組織,有的產(chǎn)品每頁(yè) 1KB ,有的產(chǎn)品每頁(yè)2KB 。頁(yè)面典型的用途就是用于按頁(yè)擦除FLASH 。從這點(diǎn)來(lái)看,頁(yè)面有點(diǎn)像通用 FLASH 的扇區(qū)上圖中 FLASH 一頁(yè)大小為 1KB 。范圍為從地址 0x08000000 開(kāi)始的 32KB 內(nèi)。對(duì) Flash 的寫(xiě)入操作要 “先擦除后寫(xiě)入”的原則;閃存的讀寫(xiě)涉及一個(gè)概念,字( Word
4、) 32bit 和半字( HalfWord )16bit ,雖然 STM32 FLASH 也是由字節(jié)組成,但 STM32 FLASH 的編程每次都是以 16bit 半字為單位,且 FLASH 地址必須為偶數(shù),否則會(huì)出錯(cuò)。3.對(duì) AN2594.pdf中模擬 EEPROM 機(jī)制的解釋頁(yè)眉內(nèi)容官方例程中用了 2 頁(yè) FLASH 空間來(lái)作為模擬 EEPROM 進(jìn)行數(shù)據(jù)存儲(chǔ),例如頁(yè) 3(0x08000C00-0x08000FFF )和頁(yè) 4(0x08001000-0x080013FF ),分別將其標(biāo)記為 PAGE0 和 PAGE1,簡(jiǎn)單流程如下圖按照使用和優(yōu)化 .pdf 中的解釋,如果 0 頁(yè)空間寫(xiě)滿數(shù)
5、據(jù),那么把 0 頁(yè)空間里面的【有效數(shù)據(jù)】復(fù)制到 1 頁(yè),如果 1 頁(yè)數(shù)據(jù)滿那么把 1 頁(yè)空間里面的【有效數(shù)據(jù)】復(fù)制到 0 頁(yè),這樣循環(huán)使用,當(dāng)然如果你想增加使用壽命可以增加多頁(yè)循環(huán)。 每頁(yè)前面 4 字節(jié)保留,其中前 2 字節(jié)是該頁(yè)狀態(tài)標(biāo)志。是的,看到這里我開(kāi)始感覺(jué)到了迷惑,迫切的需要弄清楚這種機(jī)制。官方文檔中的這張圖說(shuō)明了虛擬的 EEPROM 在 FLASH 中的保存形式,對(duì)頁(yè)進(jìn)行以 4 字節(jié)為單位的分塊,每塊的前 2 字節(jié)保存虛擬 EEPROM 的 16bit 數(shù)據(jù),后兩字節(jié)保存此數(shù)據(jù)的16bit 虛擬地址,虛擬地址必須為(0x0000-0xFFFE )。那么先在這里說(shuō)一下頁(yè)面的三種狀態(tài)ER
6、ASED頁(yè)面是空的或者剛剛擦除數(shù)據(jù),此時(shí)整個(gè)頁(yè)面都是0xFFFFRECEIVE_DATA按照官方解釋是,此頁(yè)面處在接收已滿頁(yè)面的有效數(shù)據(jù)過(guò)程中。一旦另一頁(yè)面完成擦除(即數(shù)據(jù)搬運(yùn)完畢),此頁(yè)面狀態(tài)即變成VALID_PAGE。搬運(yùn)的時(shí)候先將最新更新的數(shù)據(jù)寫(xiě)入,然后再將所有有效數(shù)據(jù)(除剛剛更新的虛擬地址的數(shù)據(jù))寫(xiě)入頁(yè)面。狀態(tài)字: 0xEEEEVALID_PAGE頁(yè)面含有有效數(shù)據(jù), 這種狀態(tài)會(huì)一直保持, 直到所有有效數(shù)據(jù)搬運(yùn)到已擦除的頁(yè)面 (有效數(shù)據(jù)搬運(yùn)到新頁(yè)面 )。狀態(tài)字: 0x00001.寫(xiě)數(shù)據(jù)前面已經(jīng)說(shuō)到每頁(yè)前 4 個(gè)字節(jié)保留,其中前 2 字節(jié)為頁(yè)面狀態(tài)字。 假設(shè)保存的數(shù)據(jù)虛擬地址是 0x777
7、7 ,那么程序?qū)憯?shù)據(jù)是從當(dāng)前有效頁(yè)頁(yè)首地址開(kāi)始查詢虛擬地址位置為 0xFFFF 的空間,如果是 0xFFFF 那么該位置可以保存數(shù)據(jù); 如果不是,那么繼續(xù)找下 1 個(gè)位置,如果本頁(yè)無(wú) 0XFFFF 的空間那么表示本頁(yè)已滿,那么將本頁(yè)【有效數(shù)據(jù)】復(fù)制到另外 1 頁(yè)繼續(xù)保存數(shù)據(jù)。2.讀數(shù)據(jù)讀數(shù)據(jù)時(shí)是從有效頁(yè)的末尾地址開(kāi)始檢測(cè)是否是有效數(shù)據(jù),如果是那么立即返回,程序是通過(guò)虛擬地址判斷有效數(shù)據(jù)的,第 1 個(gè)匹配的虛擬地址的數(shù)據(jù)才是有效的。3.對(duì)【有效數(shù)據(jù)】的解釋在兩次保存虛擬地址為0x7777 的數(shù)據(jù)時(shí)(如下圖所示)由于寫(xiě)數(shù)據(jù)時(shí)總是在 FLASH 中從首至尾依次存放,而讀的時(shí)候總是從尾至首查找匹配,所
8、以最后一次寫(xiě)入的虛擬地址是 0x7777 對(duì)應(yīng)的數(shù)據(jù) 1245 才是有效的。這就是虛擬數(shù)據(jù)的更新。頁(yè)眉內(nèi)容4.頁(yè)滿時(shí)的數(shù)據(jù)處理當(dāng)有新數(shù)據(jù)要寫(xiě)入而頁(yè)面內(nèi)無(wú) 0xFFFF 地址即頁(yè)面已滿時(shí),會(huì)將數(shù)據(jù)寫(xiě)入新的頁(yè)面,并將原頁(yè)面的有效數(shù)據(jù)也復(fù)制至新的頁(yè)面, 緊接著擦除已滿的頁(yè)面。 如下圖所示:5.優(yōu)化的問(wèn)題STM32 FLASH模擬 EEPROM 優(yōu)化官方例程中讀寫(xiě)數(shù)據(jù)每次要查詢讀寫(xiě)位置,寫(xiě)數(shù)據(jù)是從頁(yè)首地址開(kāi)始查詢,讀地址是從頁(yè)末地址查詢。假如只有 1 個(gè)數(shù)據(jù),讀數(shù)據(jù)時(shí)效率是很低的, 要查到最后才能找到有效數(shù)據(jù),如果頁(yè)快滿了寫(xiě)數(shù)據(jù)效率也很低, 讀效率反而好一點(diǎn)了。實(shí)際程序中記錄下一個(gè)可以寫(xiě)數(shù)據(jù)的位置將提高數(shù)據(jù)的讀寫(xiě)效率,這樣的話:寫(xiě)數(shù)據(jù)就是立即寫(xiě)不用查詢,讀數(shù)據(jù)不從頁(yè)末地址查詢,而是從最后1 個(gè)寫(xiě)入數(shù)據(jù)處查詢,這樣特別在頁(yè)數(shù)據(jù)少時(shí)效率提高不少。優(yōu)化過(guò)的例子代碼只需要增加很少部分就能實(shí)現(xiàn)。增加關(guān)鍵代碼uint32_t CurWrAddress;/ 初始化寫(xiě)地址,減少每次讀寫(xiě)時(shí)查
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年漯河職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)審定版
- 2025至2030年中國(guó)琺瑯盤(pán)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 絲巾購(gòu)貨合同范本
- 科技在培養(yǎng)學(xué)生領(lǐng)導(dǎo)力中的作用研究
- 知識(shí)傳授的視角下提高老人對(duì)技術(shù)工具的運(yùn)用及匯報(bào)告水平研究項(xiàng)目
- 泥土消納合同范本
- 科技與生態(tài)校園文化的創(chuàng)新融合
- 科技創(chuàng)新中的綜合素質(zhì)評(píng)價(jià)指標(biāo)體系
- 組團(tuán)出行合同范本
- 科技產(chǎn)品市場(chǎng)經(jīng)濟(jì)的模型分析
- T-CSAE 11.3-2021 商用車潤(rùn)滑導(dǎo)則 第3部分:潤(rùn)滑脂的選用
- 工業(yè)級(jí)七水硫酸亞鐵
- 內(nèi)科休克急救
- 變電站的電氣主接線課件
- 婦科運(yùn)用PDCA循環(huán)降低腹腔鏡術(shù)后腸脹氣的發(fā)生率品管圈成果匯報(bào)
- 新零售實(shí)務(wù)PPT完整全套教學(xué)課件
- 小學(xué)生1-6冊(cè)必背古詩(shī)楷書(shū)字帖(可直接打印-已排版)
- 基本電子電路裝調(diào)維修知識(shí)考試題庫(kù)(含答案)
- CLSIM100-S24英文版 抗菌藥物敏感性試驗(yàn)執(zhí)行標(biāo)準(zhǔn);第二十四版資料增刊
- 全國(guó)青少年機(jī)器人技術(shù)等級(jí)(機(jī)器人二級(jí))考試復(fù)習(xí)題庫(kù)(含真題)
- 中國(guó)甲狀腺疾病診治指南
評(píng)論
0/150
提交評(píng)論