<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          STM8 讀同時寫RWW

          作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          RWW特性允許用戶在執(zhí)行程序和讀程序存儲器時對DATA EEPROM區(qū)域進(jìn)行寫操作,因此執(zhí)行的時間被優(yōu)化了。相反的操作是不允許的:即你不可以在寫程序存儲器時對DATA EEPROM進(jìn)行讀操作。

          本文引用地址:http://www.ex-cimer.com/article/201611/316700.htmRWW特性是一直有效的而且可以在任意時刻使用。注意:并不是所有STM8都擁有RWW特性,請參考相應(yīng)的數(shù)據(jù)手冊來了解更多信息。

          字節(jié)編程

          可以對主程序存儲器和DATA區(qū)域逐字節(jié)地編程。要對一個字節(jié)編程,應(yīng)用程序可直接向目標(biāo)地址寫入數(shù)據(jù)。


          在主程序存儲器中
          當(dāng)字節(jié)編程操作執(zhí)行時,應(yīng)用程序停止運行。
          在DATA區(qū)域中
          有RWW功能的器件:在IAP模式下,應(yīng)用程序不停止運行,字節(jié)編程利用RWW功能進(jìn)行操作。
          無RWW功能的器件:當(dāng)字節(jié)編程操作執(zhí)行時,應(yīng)用程序停止運行。

          要擦除一個字節(jié),向?qū)?yīng)的字節(jié)簡單寫入0x00即可。
          應(yīng)用程序可以通過讀FLASH_IAPSR寄存器來校驗編程或擦除操作是否已被正確執(zhí)行:


          在一次成功的編程操作后EOP位被置1。
          當(dāng)軟件試圖對一個被保護(hù)的頁進(jìn)行寫操作時WP_PG_DIS位被置1。在這種情況下,寫操作不會被執(zhí)行。

          如果FLASH_CR1中的IE位已經(jīng)被預(yù)先使能,則只要這些標(biāo)志位(EOP/WP_PG_DIS)中有一個被置位就會產(chǎn)生一個中斷。
          STM8自動快速字節(jié)編程,根據(jù)目標(biāo)地址的初始化內(nèi)容的不同,編程持續(xù)時間可能也有所不同。如果字(4個字節(jié))中包含不為空的字節(jié),編程前字會被自動擦除。相反,如果字節(jié)為空,由于不會執(zhí)行擦除操作從而編程時間變短。然而,可以通過對FLASH_CR1中的FIX位置1來強(qiáng)迫執(zhí)行系統(tǒng)擦除操作而不管其內(nèi)容是否為空,從而使編程時間固定(請參考FLASH控制寄存器)。編程總時間隨之被規(guī)定為擦除時間和寫操作時間的和(請參考tPROG參數(shù),在數(shù)據(jù)手冊的"Flash program memory"表中)。

          注意:為了快速寫一個字節(jié)(沒有擦除操作),將要被寫入數(shù)據(jù)的整個字(4個字節(jié))必須被預(yù)先擦除。因此不可能對同一個字做連續(xù)兩次快速寫操作(在第二次寫之前沒有擦除操作):第一次寫字節(jié)操作將是快速操作但針對另外一個字節(jié)的第二次寫操作將需要一個擦除操作。


          字編程

          字寫入操作允許一次對整個4字節(jié)的字進(jìn)行編程,從而將編程時間縮短。

          主程序存儲器和DATA EEPROM都可以進(jìn)行字操作。在一些STM8S器件中,也擁有當(dāng)DATA EEPROM在進(jìn)行寫操作時同時具備RWW功能。請參考數(shù)據(jù)手冊了解更多信息。為了對一個字編程,F(xiàn)LASH_CR2和FLASH_NCR2中的/WPRG/NWPRG位必須預(yù)先置位清零來使能字編程模式(請參考4.9.2 FLASH控制寄存器2(FLASH_CR2)和4.9.3 FLASH互補(bǔ)控制寄存器2(FLASH_NCR2))。然后將要被編程字的4個字節(jié)必須被從首地址開始裝載。當(dāng)四個字節(jié)都被寫入后,編程周期自動開始。
          像字節(jié)操作一樣,STM8的FLASH_IAPSR中的EOP與WR_PG_DIS控制位和FLASH中斷相配合,可用于檢查操作是否被正確執(zhí)行完畢。

          塊編程

          塊編程比字節(jié)編程和字編程都要快。在STM8塊編程操作中,整個塊的編程或擦除在一個編程周期就可以完成。請參考(表4)了解具體器件的塊的大小。在主程序存儲器和DATA區(qū)域都可以執(zhí)行塊操作。


          在主程序存儲器中
          用于塊編程的代碼必須全部在RAM中執(zhí)行。
          在DATA區(qū)域中
          有RWW功能的器件:DATA塊操作可在主程序存儲器中執(zhí)行,然而數(shù)據(jù)裝載階段(下文中有述)必須在RAM中執(zhí)行。
          無RWW功能的器件:用于塊編程的代碼必須全部在RAM中執(zhí)行。

          一共有三種可能的塊操作:


          塊編程(也叫標(biāo)準(zhǔn)塊編程):整個塊在編程前被自動擦除。
          快速塊編程:在編程前沒有預(yù)先的塊擦除操作。
          塊擦除。

          在STM8塊編程時,中斷被硬件自動屏蔽。

          標(biāo)準(zhǔn)塊編程

          塊編程操作允許一次對整個塊進(jìn)行編程,整個塊在編程前被自動擦除。
          為了對整個塊編程,F(xiàn)LASH_CR2和FLASH_NCR2中的PRG/NPRG位必須預(yù)先置位/清零來使能標(biāo)準(zhǔn)塊編程(請參考4.9.2 FLASH控制寄存器2(FLASH_CR2)和4.9.3 FLASH互補(bǔ)控制寄存器2(FLASH_NCR2))。然后需要向主程序存儲器或DATA區(qū)域的目標(biāo)地址依次寫入要編程的數(shù)據(jù),這樣數(shù)據(jù)會被鎖存在內(nèi)部緩存中。為編程整個塊,塊中的所有字節(jié)都需要被寫入數(shù)據(jù)。但要注意,所有被寫入緩存的數(shù)據(jù)必須位于同一個塊中,這意味著這些數(shù)據(jù)必須有同樣的高位地址:僅僅低6位的地址可以不一樣。當(dāng)目標(biāo)塊的最后一個字節(jié)被裝載到緩存后,編程就自動開始了。編程前首先會自動執(zhí)行一次擦除操作。

          當(dāng)對DTA區(qū)域進(jìn)行塊編程時,應(yīng)用程序可以檢查FLASH_IAPSR中的HVOFF位確認(rèn)編程狀態(tài)。一旦HVOFF被置0,真正的編程階段就開始了,此時應(yīng)用程序就可以返回到主程序中去了。FLASH_IAPSR中的EOP與WR_PG_DIS控制位和FLASH中斷相配合,可用于檢查操作是否被正確執(zhí)行完畢。

          快速塊編程
          STM8快速塊編程允許不擦除存儲器內(nèi)容就對塊進(jìn)行編程,因此快速塊編程的編程速度是標(biāo)準(zhǔn)塊編程的兩倍。該模式僅用于被編程部分已經(jīng)被擦除過的情況,同時這種模式對向空白部分寫入完整的應(yīng)用代碼特別有用,因為這種模式可以節(jié)省相當(dāng)可觀的時間。
          快速塊編程的步驟和標(biāo)準(zhǔn)塊編程的步驟大致一樣,F(xiàn)LASH_CR2和FLASH_NCR2中的FPRG/NFPRG位必須預(yù)先置位/清零來使能快速塊編程(請參考4.9.2 FLASH控制寄存器2(FLASH_CR2)和4.9.3 FLASH互補(bǔ)控制寄存2(FLASH_NCR2))。FLASH_IAPSR中的EOP與WR_PG_DIS控制位和FLASH中斷相配合,可用于檢查快速塊編程操作是否被正確執(zhí)行完畢。
          警告:在執(zhí)行快速塊編程之前如果這個塊不是空的話,不能保證寫入的數(shù)據(jù)無誤。
          塊擦除

          塊擦除允許擦除整個塊。
          為了擦除整個塊,F(xiàn)LASH_CR2和FLASH_NCR2中的ERASE/NERASE位必須預(yù)先置位/清零來使能塊擦除(請參考4.9.2 FLASH控制寄存器2(FLASH_CR2)和4.9.3 FLASH互補(bǔ)控制寄存器2(FLASH_NCR2))。通過對塊中所有的字寫入0x00 00 00 00來擦除整個塊。字的起始地址必須以0,4,8,或C作為結(jié)尾。

          FLASH_IAPSR中_PG_DIS控制位和FLASH中斷相配操作是否被正確執(zhí)行完畢。


          選項字節(jié)(Option byte)編程


          對選項字節(jié)編程和對DATA EEPROM區(qū)域編程非常相似。
          應(yīng)用程序可直接向目標(biāo)地址進(jìn)行寫操作。利用STM8的RWW功能,在對選項字節(jié)寫操作的同時程序不必停下來。
          請參考相應(yīng)的數(shù)據(jù)手冊來了解選項字節(jié)內(nèi)容的細(xì)節(jié)。




          關(guān)鍵詞: STM8讀同RW

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();