<strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

      <b id="0toem"><menuitem id="0toem"></menuitem></b>
    1. <code id="0toem"><abbr id="0toem"></abbr></code>
      <strong id="0toem"><dl id="0toem"></dl></strong>
      <kbd id="0toem"></kbd>
              1. <code id="0toem"></code>
                <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                <th id="0toem"></th>
              2. 131 1300 0010
                其他
                當(dāng)前位置: 首頁>> 元件技術(shù)>>其他>>
              3. 導(dǎo)航欄目
              4. 二極管
              5. 整流橋
              6. MOS管
              7. 其他
              8. STM32系統(tǒng)中如何數(shù)據(jù)掉電保護
                STM32系統(tǒng)中如何數(shù)據(jù)掉電保護
              9. STM32系統(tǒng)中如何數(shù)據(jù)掉電保護
              10.   發(fā)布日期: 2020-03-31  瀏覽次數(shù): 1,904

                在嵌入式設(shè)備開發(fā)中,往往需要保存一些掉電不易失性的數(shù)據(jù),如果系統(tǒng)配置、用戶定制信息等等,如果增加額外的ROM IC,比如(基于I2C的24C02等等)往往會造成額外的PCB空間增大,硬件成本增加,降低產(chǎn)品的性價比。如果單從實用性來講,在stm32的系統(tǒng)中,諸如此類的應(yīng)用,筆者推薦如下2個方法可以去嘗試和借鑒。

                基于備份寄存器

                 

                原理:對于大容量的MCU系列來說,它有著42個16bit的備份寄存器,而中小容量的微處理器卻只有10個16bit的備份寄存器。以STM32F103C8T6為例,42個備份寄存器的地址偏移為:0x04~0x28,0x40~0xBC,共可以存儲84個byte數(shù)據(jù)。備份寄存器是依賴者備份電源的,當(dāng)外界的VDD掉電,只要系統(tǒng)的VBAT能正常存在,那么Bakeup Domaain Registers的內(nèi)容可以被正常保存起來。

                軟件編程要點,以一個項目中常用的case為例:

                功能初始化:

                STM32系統(tǒng)中如何數(shù)據(jù)掉電保護

                備份寄存器讀出:void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data)

                備份寄存器讀出:uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR)

                該方法使用簡單,清晰,但是由于總共的可以利用的空間少,故該方法只是適合于保存小批量的數(shù)據(jù),如穿戴設(shè)備中用戶的常用配置數(shù)據(jù)。

                基于內(nèi)部閃存

                原理:FLASH 存儲器又稱為閃存,它也是可重復(fù)擦寫的儲器。它分為 NOR FLASH 和 NAND FLASH,NOR FLASH一般應(yīng)用在代碼存儲的場合,如嵌入式控制器內(nèi)部的程序存儲空間;而 NAND FLASH 一般應(yīng)用在大數(shù)據(jù)量存儲的場合,如U 盤以及固態(tài)硬盤等,一般都是 NAND FLASH 類型的。

                在stm32芯片中,F(xiàn)lash的讀寫單位都是以“頁”為單位的,以STM32F103C8T6為例,它的每頁大小為2K bytes;

                STM32系統(tǒng)中如何數(shù)據(jù)掉電保護

                軟件編程要點

                讀寫保護解除:使用這種方法前提是,當(dāng)前讀和寫Flash的允許的,假設(shè)當(dāng)前flash已經(jīng)是允許寫的。所以暫時一些關(guān)于OptionBytes的操作和Flash的讀寫保護操作等API暫時不做討論。

                FlashWrite:單個uint32_t數(shù)據(jù)的寫入簡易流程如圖:

                STM32系統(tǒng)中如何數(shù)據(jù)掉電保護

                FlashRead:對于單個int數(shù)據(jù)的讀出,比較簡單,通過下列語句完成:rdData= (*(__IOuint32_t *)dataAddr);

                由于SW介入的API較多,并且有很多的額外的背景知識需要碼農(nóng)去了解,使用該方法,相對比較復(fù)雜。但是由于保存數(shù)據(jù)以頁為單位,頁的大小可以多達2048bytes,所以該方法可以實用于保存掉電不易失的大數(shù)據(jù)。考慮到flash讀寫保護的邏輯機制,該方法最好在不考慮數(shù)據(jù)的安全性問題前提下,才使用這種方法。

                對于諸如此類的掉電保護數(shù)據(jù)方法,這里僅僅是拋磚引玉,歡迎大家多多提出更好的方案。


              11. ·上一篇:
                ·下一篇:
              12. 其他關(guān)聯(lián)資訊
                深圳市日月辰科技有限公司
                地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
                電話:0755-2955 6626
                傳真:0755-2978 1585
                手機:131 1300 0010
                郵箱:[email protected]

                深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 www.xydibang.com 電話:13113000010 粵ICP備2021111333號
                <strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

                    <b id="0toem"><menuitem id="0toem"></menuitem></b>
                  1. <code id="0toem"><abbr id="0toem"></abbr></code>
                    <strong id="0toem"><dl id="0toem"></dl></strong>
                    <kbd id="0toem"></kbd>
                            1. <code id="0toem"></code>
                              <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                              <th id="0toem"></th>
                            2. 一区二区成人片18 | 成人日韩毛片 | 又黄又爽视频 | 色婷婷五月天导航 | 18禁网站免费看 |