MICROCHIP PIC24 雙分區閃存程序存儲器

產品資訊
所有 PIC24 和 dsPIC33 器件都帶有一個內部可編程閃存陣列,可用於執行用戶代碼。 閃存陣列具有較長的保留壽命和較高的讀/寫循環次數,為代碼開發和存儲提供了極大的靈活性。 雙分區閃存程序存儲器的更新版本具有新功能。
- 地址空間: PIC24 和 dsPIC33 器件尋址 4M x 24 位程序存儲器地址空間。
- 用戶程序空間: 程序存儲器映射被平均劃分為用戶程序空間(000000h 至 7FFFFFh)。
- 配置內存空間: 程序內存映射被平均劃分為配置(或測試)內存空間(800000h 到 FFFFFFh)。
- 訪問程序空間: 訪問程序空間的方法有以下三種:
- 23 位程序計數器 (PC)。
- 讀表 (TBLRD) 和寫表 (TBLWT) 指令。
- 通過將任何 32 KB 的程序存儲器段映射到數據存儲器地址空間。
介紹
所有 PIC24 和 dsPIC33 器件都有一個用於執行用戶代碼的內部可編程閃存陣列。 高耐久性閃存陣列在代碼開發和存儲方面提供了極大的靈活性,將長保留壽命與大量讀/寫循環相結合。
此版本的閃存程序存儲器增加了以下新特性:
- 雙分區閃存操作,允許支持強大的引導加載程序系統和應用程序代碼的故障安全存儲,具有旨在增強代碼安全性的選項
- LiveUpdate 操作,允許在主應用程序繼續執行的同時修改或完全擦除不活動的代碼段 (CS)
- 從數據 RAM 空間對閃存陣列進行直接運行時編程,可選擇壓縮數據 RAM 映像
產品用途
要使用雙分區閃存程序存儲器,請按照以下步驟操作:
- 請查閱當前器件數據手冊中雙分區閃存程序存儲器一章開頭的註釋,以檢查該文檔是否支持您正在使用的器件。
- 從 Microchip Worldwide 下載器件數據表和系列參考手冊部分 Web網站位於: http://www.microchip.com.
- 使用上述三種方法中的任何一種訪問程序空間。
- 已實現的程序存儲器可進一步分為向量區,其中包括復位和中斷向量,以及代碼區,其中還包括閃存配置數據。 訪問用戶程序空間的未實現區域(即高於已實現的程序存儲器上邊界)將導致地址錯誤陷阱。
程序存儲器架構
PIC24 和 dsPIC33 器件尋址 4M x 24 位程序存儲器地址空間,如圖 2-1 所示。 程序存儲器映射平均分為用戶程序空間(000000h 到 7FFFFFh)和配置(或測試)存儲器空間(800000h 到 FFFFFFh)。 用戶程序空間包含復位向量、中斷向量表 (IVT) 和程序存儲器。 有三種訪問程序空間的方法。
- 23 位程序計數器 (PC)。
- 讀表 (TBLRD) 和寫表 (TBLWT) 指令。
- 通過將任何 32 KB 的程序存儲器段映射到數據存儲器地址空間。
已實現的程序存儲器可進一步分為向量區,其中包括復位和中斷向量,以及代碼區,其中還包括閃存配置數據。 訪問用戶程序空間的未實現區域(即高於已實現的程序存儲器上邊界)將導致地址錯誤陷阱。
矢量區域
向量區從程序存儲空間的起始位置 000000h 開始。 它包含用於所有已實現硬件中斷的主復位向量、硬件陷阱向量和中斷向量表 (IVT)。
由於體系結構差異和 IVT 的大小,矢量區域在不同的設備系列中佔用不同的內存量。 對於 PIC24 器件,向量區域擴展到 0000FEh。 對於 dsPIC33 器件,向量區擴展到 0001FEh。 圖 2-2 顯示了不同設備的 IVT 之間的差異。 無論設備系列如何,硬件中斷向量始終從 000014h 開始,中斷向量為 0。
向量區域大致對應於 CodeGuard™ 安全實現中的向量段 (VS)。 根據安全配置,向量區可能被視為引導段 (BS) 或通用段 (GS) 的一部分。
備用向量中斷表
所有 dsPIC33 和 PIC24 器件都提供備用 IVT (AIVT) 的實現,它可用於高安全性代碼應用程序和備用異常處理。 與這些系列中的早期器件不同,AIVT 不會永久分配在固定地址範圍內的程序存儲器中。 相反,AIVT 僅在以下情況下出現:
- CodeGuard 安全配置用於大小至少為兩頁的引導段(由 FBSLIM 配置寄存器設置),並且
- AIVT 通過將 AIVTDIS 配置位編程為“0”來啟用。
當AIVT使能時,它位於從BS最後一頁開始的地址範圍; 每個向量都位於距頁面邊界固定的偏移量處。 AIVT 的總大小和內容(即矢量順序)反映了 IVT 的那些。

代碼區
代碼區是包含用戶應用程序代碼的用戶程序存儲器區域。 它從向量區的結尾延伸到閃存配置字的開頭。 如果實現了引導段,它會從向量區域的末尾開始並擴展到預定範圍。 不在引導段中的代碼區部分對應於 CodeGuard 安全系統中的通用段 (GS)。 除了已實現存儲器末尾的閃存配置字外,如下所述,整個區域都可用於應用程序代碼。
閃存配置數據
已實現閃存程序存儲器末尾的區域(通常是最後一行)保留用於閃存配置數據。 在器件復位時,此配置信息被複製到適當的器件配置寄存器中,用戶無法訪問這些寄存器。 器件配置數據只能通過編程閃存配置字中的所需值來編程。
配置位的數量、順序和組織因器件架構和同一架構內的器件系列而異。 一些器件將配置位組織為 16 位配置字,它們通常按功能術語分組。 其他設備根據可單獨尋址的配置字節來組織配置位。 圖 2-3 顯示了為配置字組織的區域。 有關特定於系列的信息,請參閱器件數據手冊。
對於具有雙分區功能的器件,FBTSEQ 配置字通常是倒數第二個配置字,位於已實現程序存儲器的末尾。
內存組織
程序存儲空間被組織為可字尋址的塊。 雖然它被視為 24 位寬,但將程序存儲器的每個地址視為低位字和高位字更合適,高位字的高位字節未實現。 低位字始終具有偶地址,而高位字具有奇地址(圖 2-4)。 程序存儲器地址和 PC 始終在低位字上進行字對齊(即,最低有效位 (LSb) 始終為“0”)。 地址在代碼執行期間遞增或遞減 XNUMX。
尋址程序存儲器
對於正常的代碼執行,用於執行的有效地址 (EA) 由程序計數器 (PC) 提供。 PC 為 23 位寬,允許直接訪問用戶程序空間中的任何位置。 PC[0] 固定為“0”以保持程序指令對齊。 通過遞增 PC[1],將 PC 遞增到下一個順序地址,從而使 PC 的值增加 XNUMX。
對於表讀取和表寫入操作,EA 是通過將來自 W 寄存器之一的 16 位地址與來自 TBLPAG 寄存器的 8 位地址連接起來創建的。 這允許表操作訪問用戶和配置空間。 表操作的地址生成在第 4.2.1 節“表操作的地址生成”中有更詳細的討論。
對於擴展數據空間(EDS)和程序空間可見性(PSV)操作,EA 是通過將 W 寄存器的低 15 位與來自 DSRPAG/DSWPAG (dsPIC8) 或 PSVPAG (PIC33F) 的 24 位地址連接起來創建的寄存器。 “dsPIC33/PIC24 系列參考手冊”、“數據存儲器”(dsPIC33、DS70595)和/或“數據存儲器”(PIC24、DS30009717)中討論了擴展數據空間和程序空間可見性操作。
程序存儲器分區閃存操作
對於具有雙分區閃存功能的器件,通過對 FBOOT 配置字中的 BTMODE[1:0] 位進行編程來選擇雙分區程序存儲器模式。 與其他配置字不同,FBOOT 位於配置存儲空間中,與所有其他閃存配置寄存器不同。 確切的地址是特定於體系結構的(即 PIC24 或 dsPIC33),並且可能因器件系列而異。 表 3-1 列出了可能的閃存分區選項,這些選項將在以下部分中討論。
首次通過在線串行編程™ (ICSP™) 對器件進行編程時,程序員應對 FBOOT 進行編程以正確設置器件閃存分區模式。 請注意,無法使用運行時自編程 (RTSP) 在運行時重新編程 FBOOT。 FBOOT 位必須由程序員配置為 ICSP 模式。 這是因為閃存配置字的位置從標準分區模式更改為雙分區模式,這可能會導致意外的設備操作。
表 3-1:閃存分區選項
| 藍牙模式[1:0] | 分區選項 |
| 11 | 標準模式(單分區,默認) |
| 10 | 雙分區模式 |
| 01 | 受保護的雙分區模式 |
| 00 | 特權雙分區模式(1) |
註1: 未在所有雙分區設備上實現。
標準(單分區)模式
標準模式,也稱為單一分區或標準分區模式,是程序存儲器的默認操作模式。 當 BTMODEx 配置位為“11”(它們的未編程配置)時選擇它。 這也是所有以前的 dsPIC33 和 PIC24 器件可用的單一程序存儲器工作模式。 在標準模式下,整個用戶程序存儲器被映射為平坦、連續的存儲器空間,範圍從 000000h 到已實現閃存的上限。 對於前amp例如,具有 256 KB 閃存的器件的程序存儲器地址範圍為 000000h 至 02AFFFh,高於此範圍的地址未實現。 整個已實現的存儲器範圍(不包括為複位向量、IVT 和閃存配置字保留的空間)可供用戶應用使用。 在具有分段代碼安全性的設備中,也可以實現引導段。
雙分區模式
當 BTMODEx 配置位被編程為 11 以外的值時,該器件以三種雙分區模式之一運行。 在所有這些模式中,實現的閃存被對稱地分成兩個區域:一個活動分區,從 000000h 開始,一個非活動分區,從 400000h 開始。 對於之前的設備amp例如,256 KB 閃存將被實現為兩個區域,每個區域為 128 KB,地址範圍從 000000h 到 0157FFh 和 400000h 到 4157FFh。 兩個區域之間的地址未實現(見圖 3-1)。
在雙分區模式下,可以將兩個獨立的應用程序編程到器件中,兩個閃存分區(稱為分區 1 和分區 2)中的每一個。當器件初始化時,其中一個被動態映射到活動分區和執行。 另一個映射到非活動分區,它仍然可用於程序內存操作。 將分區分配給活動分區或非活動分區由稱為引導序列號的代碼簽名自動確定。 代碼分區也可以在運行時在軟件控制下在活動分區和非活動分區之間交換。
雙分區模式允許活動分區的應用程序訪問(但不執行)非活動分區中的程序數據或重新編程非活動分區。 寫入非活動分區中的閃存不需要 CPU 在閃存寫入發生時停止。 這允許 LiveUpdate 功能,其中關鍵控制功能的執行或對時間敏感的通信可以與應用程序更新同時發生。 某些雙分區模式對進程施加了額外的限制,以幫助確保代碼安全性和操作的穩健性。 代碼映射到 Inactive Partition 時無法執行。 分區可以交換,但只能執行活動分區中的代碼。
- 雙分區模式
最簡單的雙分區模式對從活動分區到分區 1 或分區 2 中的代碼的操作沒有任何限制。不同分區中代碼段之間交互的任何限制由增強的安全功能配置決定。 - 受保護的雙分區模式
受保護的雙分區模式保護默認代碼段(分區 1)免受任何閃存寫入或擦除操作。 這允許通過允許將故障安全備份映像存儲在分區 1 中來實現“出廠默認”模式。當使用受保護的雙分區模式時,分區 1 不能通過閃存操作寫入或擦除,而它處於非活動分區。 如果分區 1 也通過配置位設置被寫保護,則它在任何時候都不能被擦除或寫入。 相反,分區 2 可以通過來自任一分區的操作進行擦除或寫入。 這允許將故障安全引導加載程序與故障安全備份代碼映像一起放置在分區 1 中。 然後可以默認執行此代碼映像,並在閃存更新失敗時用於重寫分區 2。 - 特權雙分區模式
在應用程序可能具有由不同作者編寫的代碼段並且需要更高級別的安全性來保護其中一個代碼段的知識產權的情況下,特權雙分區模式實施額外的安全保護。 一個前任ample 將是一個系統,其中大部分代碼由硬件的應用程序開發人員編寫,但包括專有的第三方庫。 此模式旨在與選定設備中增強的安全功能配合使用,這些功能可以選擇性地保護程序存儲空間中的不同代碼段。
特權雙分區模式與標準雙分區模式的不同之處在於為兩個分區的 BSLIMx 配置位添加了特殊保護。 這種保護有效地鎖定位,並防止更改引導段和通用段的大小。 通過適當的安全設置,這可以確保在運行時不會更改或意外讀取任何段。
特權雙分區模式並未在所有具有雙分區功能的設備上實現。 有關詳細信息,請參閱具體的器件數據手冊。

- 選擇代碼分區
在雙分區模式下,有兩種方法可以確定將哪個分區映射到活動分區並執行:引導序列號和 BOOTSWP 指令。 P2ACTIV 位 (NVMCON[10]) 可用於確定哪個物理分區是活動分區。 如果 P2ACTIV = 1,則分區 2 處於活動狀態; 如果 P2ACTIV = 0,則分區 1 處於活動狀態。 引導序列號是一個 12 位值,用於在設備復位時自動確定活動分區。 每個分區都應該有一個唯一的引導序列號,它存儲在 FBTSEQ 閃存配置字中。 BOOTSWP 指令用於在沒有設備復位的情況下交換活動和非活動分區。- 引導序列號
12 位引導序列號存儲在 FBTSEQ 閃存配置字中,它始終位於用戶程序存儲器的最後一個位置,在其他閃存配置字之上(見圖 3-2)。 與僅使用程序存儲器字的低 16 位的其他配置寄存器不同,FBTSEQ 是完整的 24 位寬。 在正常操作條件下,每個分區應具有不同的 FBTSEQ 值。 當不使用雙分區模式時,忽略 FBTSEQ 的值。
Boot Sequence Number 存儲在兩部分中:位域中的實際值,BSEQx
(FBTSEQ[11:0]),以及 IBSEQx 位域中值的補碼
(FBTSEQ[23:12])。 在器件復位時讀取引導序列號時,會自動比較 BSEQx 和 IBSEQx 的值。 如果這兩個值互不互補,則Boot Sequence Number 被認為是無效的。 補值不是由硬件自動創建的,也不是由硬件在編程時驗證的。 應用程序必須計算和編程適當的值。
在設備重置時,比較兩個分區中的引導序列號。 具有較低 BSEQx 值的分區是映射到活動分區並執行其代碼的分區。 如果其中一個 Boot Sequence Number 無效,設備將選擇具有有效 Boot Sequence Number 的分區作為 Active Partition,無論哪個 Boot Sequence Number 較低。 如果兩個引導序列號均無效,則默認選擇分區 1 作為活動分區。
通過將非活動分區的引導序列號重新編程為具有較低的值,可以準備在運行時交換分區。 執行重置時,具有較低值的分區現在變為活動狀態。 當非活動分區已更新並在重置後映射到活動分區時使用此方法。
FBTSEQ 的位置允許它很容易地從閃存程序存儲器的校驗和或其他驗證中排除。 因為 FBTSEQ 值很可能在運行時確定(基於其他分區的 BSEQx),所以它通常不能包含在校驗和中,例如 CRC。
圖 3-3 頂部的序列顯示了在更改引導序列號和執行器件復位時代碼分區之間的關係。
- BOOTSWP指令
BOOTSWP 指令是 PIC24 和 dsPIC33 指令集的擴展。 它支持代碼 LiveUpdate,允許在活動分區和非活動分區之間交換代碼段,而無需設備重置。 使用 BOOTSWP 指令的分區交換稱為“軟交換”。 要執行 BOOTSWP 指令,必須清除配置位 BTSWP (FIDC[25])。 如果在設置了 BTSWP 的情況下嘗試執行 BOOTSWP 指令,則會產生 NOP 指令。
BOOTSWP 指令後面必須始終跟有寫入 PC 的單字指令(例如,GOTO W、CALL W 或 BRA W); 指令的目標必須位於距當前地址 32 KB 以內的地址。 執行時,活動分區和非活動分區交換位置,PC 指向新活動分區中 GOTO 指令指定的位置。
筆記: 如果從使用 LNK 指令創建新堆棧幀的函數中執行 BOOTSWP 指令,則必須在 BOOTSWP 之後使用 CALL 而不是 GOTO; 否則,設備將產生堆棧錯誤陷阱。- 執行 BOOTSWP 指令後,SFTSWP 位 (NVMCON[11]) 被置位。 該位向固件表明 BOOTSWP 指令正確發生,並且當前活動分區是通過 BOOTSWP 而不是通過設備復位進入的。 還可以讀取狀態位 P2ACTIV (NVMCON[10]) 以驗證哪個分區處於活動狀態。
- 重要的是要注意,在分區交換之後,之前啟用的所有外圍設備和中斷仍保持啟用狀態。 此外,RAM 和堆棧在交換後保持其狀態。 強烈建議使用軟交換的應用程序跳轉到重新初始化設備的例程,以確保應用程序繼續按預期運行。
- 為了操作的穩健性,有必要在執行 BOOTSWP 指令之前執行標準 NVM 解鎖序列(分兩個連續步驟將 55h 和 AAh 寫入 NVMKEY 寄存器;有關更多信息,請參見第 4.1 節“寄存器”)。 在執行解鎖序列之前禁用中斷也很重要。 如果未執行解鎖序列,則 BOOTSWP 將作為強制 NOP 執行。 BOOTSWP 後面的 GOTO 指令仍然執行,使 PC 跳轉到當前運行分區的那個位置。 同樣,BOOTSWP 在標準分區模式下也沒有作用。
- 圖 3-3 底部的序列顯示了執行 BOOTSWP 指令時分區之間的關係。 請注意,BOOTSWP 分區更改是暫時的; 在隨後的設備復位後,具有較低引導序列號的分區將重新分配給活動分區。

- 引導序列號
閃存編程
可以通過以下三種方法中的任何一種對 PIC24 和 dsPIC33 器件進行編程:
- 運行時自編程 (RTSP)
- 在線串行編程™ (ICSP™)
- 增強型在線串行編程 (EICSP)
RTSP 由應用軟件在執行期間執行,而 ICSP 和 EICSP 由外部編程器使用與設備的串行數據連接執行。 ICSP 和 EICSP 的編程時間比 RTSP 快得多。 本節介紹 RTSP 技術。 ICSP 和 EICSP 協議在相應器件的編程規範文檔中定義,可從 Microchip 下載 web網站(www.microchip.com).
暫存器
編程操作由六個寄存器控制。 NVMCON 和 NVMKEY 寄存器用於啟用和選擇所有操作。 其餘四個寄存器定義數據和地址指針。
筆記: 並非所有器件都實現數據 RAM 緩衝區編程。 有關詳細信息,請參閱具體器件數據手冊。
控制寄存器
NVMCON 寄存器(寄存器 4-1)控制所有閃存編程操作。 NVMOP[3:0] 位 (NVMCOM[3:0]) 選擇要執行的特定寫入或擦除操作。 WR 位 (NVMCOM[15]) 觸發適當的操作; 它保持設置狀態直到操作完成,然後由硬件清除。 WREN 位 (NVMCOM[14]) 啟用或禁用寫入和擦除操作。 當 WREN 清零時,不能設置 WR 位來觸發操作。
NVMKEY 寄存器(寄存器 4-2)是一個只寫寄存器,用於防止意外寫入可能損壞閃存的 NVMCON。 解鎖後,允許在一個指令周期內寫入 NVMCON,在此期間可以設置 WR 位以調用擦除或編程例程。 鑑於時序要求,需要禁用中斷。
要啟動擦除或編程序列,請使用以下步驟:
- 禁用中斷。
- 將 0x55 寫入 NVMKEY。
- 將 0xAA 寫入 NVMKEY。
- 通過設置 WR 位 (NVMCON[15]) 啟動編程寫週期。
- 執行兩條 NOP 指令。
- 恢復中斷。
Example 4-1 顯示了解鎖序列是如何執行的。
禁用中斷
所有閃存操作都需要禁用中斷以確保成功。 如果在 NVMKEY 解鎖序列期間發生中斷,它會阻止寫入 WR 位。 NVMKEY 解鎖序列必須不間斷地執行,如第 3.2 節“雙分區模式”中所述。 可以通過以下兩種方法之一禁用中斷,即禁用全局中斷啟用(GIE 位)或使用 DISI 指令。 DISI 指令只能禁止優先級為6 或以下的中斷,因此不推薦使用,應使用全局中斷使能方式。
在影響代碼流之前,CPU 寫入 GIE 需要兩個指令周期。 之後需要兩條 NOP 指令,或者可以用任何其他有用的工作指令代替,例如加載 NMVKEY; 這適用於設置和清除操作。 重新啟用中斷時應小心,以便 NVM 目標例程在先前調用的函數因其他原因禁用中斷時不允許中斷。 為了在彙編中解決這個問題,可以使用堆棧推送和彈出來保留 GIE 位的狀態。 在 C 中,RAM 中的一個變量可用於在清除 GIE 之前存儲 INTCON2。
應使用以下序列來禁用中斷:
- 將 INTCON2 壓入堆棧。
- 清除 GIE 位。
- 兩次 NOP 或寫入 NVMKEY。
- 通過設置 WR 位 (NVMCON[15]) 來啟動編程週期。
- 通過 INTCON2 的 POP 恢復 GIE 狀態。
Example 4-1 提供了彙編中的語法。
地址寄存器
NVMADRL 和 NVMADRH 寄存器定義寫操作的起始地址指針。 兩種類型的程序存儲器寫入(基於鎖存器和 RAM 緩衝)都使用這些寄存器來設置目標地址。 NVMSRCADRL 和 NVMSRCADRH 寄存器定義了使用 RAM 緩衝編程時源數據在數據 RAM 中的起始地址。 NVMSRCADRH 寄存器用於具有擴展數據空間 (EDS) 的設備,以指向擴展數據空間存儲器中的地址。
寄存器 4-1: NVMCON:閃存編程控制寄存器
| R/S-0(1) | 遙控-0 | 遙控-0 | 讀/寫-0 | 遙控-0 | R-0 | 讀/寫-0 | 遙控-0 |
| WR | 鷦 | WRRR | 非VMPIDL(5) | SFTSWP | P2激活 | RPDF(2) | 尤雷爾(2) |
| 位 15 | 位 8 | ||||||
| U-0 | U-0 | U-0 | U-0 | 讀/寫-0 | 讀/寫-0 | 讀/寫-0 | 讀/寫-0 |
| — | — | — | — | NVMOP[3:0] | |||
| 位 7 | 位 0 | ||||||
| 傳奇: | S = 僅可設置位 | C = 僅可清除位 |
| R = 可讀位 | W = 可寫位 | U = 未實現位,讀為“0” |
| -n = POR 時的值 | '1' = 位已設置 | '0' = 位已清除 x = 位未知 |

筆記
- 該位也會在欠壓復位 (BOR) 時復位。
- RAM 緩衝區行操作並非在所有設備上都可用; 在這些情況下,這些位未實現並讀為“0”。
- 選擇這些選項將設置 WRERR 位並清除 WR 位。
- 雙字程序操作需要兩個相鄰的指令字(每個 24 位),在四指令字邊界上對齊。
- 僅在部分設備中實施; 有關詳細信息,請參閱具體的器件數據手冊。

筆記
- 該位也會在欠壓復位 (BOR) 時復位。
- RAM 緩衝區行操作並非在所有設備上都可用; 在這些情況下,這些位未實現並讀為“0”。
- 選擇這些選項將設置 WRERR 位並清除 WR 位。
- 雙字程序操作需要兩個相鄰的指令字(每個 24 位),在四指令字邊界上對齊。
- 僅在部分設備中實施; 有關詳細信息,請參閱具體的器件數據手冊。
寄存器 4-2: NVMKEY:非易失性存儲器密鑰寄存器
| U-0 | U-0 | U-0 | U-0 | U-0 | U-0 | U-0 | U-0 |
| — | — | — | — | — | — | — | — |
| 位 15 | 位 8 |
| W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 |
| NVMKEY[7:0] |
| 位 7 位 0 |
| 傳奇: | ||
| R = 可讀位 | W = 可寫位 | U = 未實現位,讀為“0” |
| -n = POR 時的值 | '1' = 位已設置 | '0' = 位已清除 x = 位未知 |
表格操作說明
表指令提供了一種在 PIC24 和 dsPIC33 器件的程序存儲空間與數據存儲空間之間傳輸數據的方法。 本節提供了閃存程序存儲器編程期間使用的表指令的摘要。
有四種基本的表格指令:
- TBLRDL:表讀低
- TBLRDH:表讀高
- TBLWTL:表寫低
- TBLWTH:表寫入高位
TBLRDL 和 TBLWTL 指令用於讀取和寫入程序存儲空間的位 [15:0]。 TBLRDL 和 TBLWTL 可以以字或字節模式訪問程序存儲器。 TBLRDH 和 TBLWTH 指令用於讀取或寫入程序存儲空間的位[23:16]。 TBLRDH 和 TBLWTH 可以以字或字節模式訪問程序存儲器。 由於程序存儲器只有 24 位寬,TBLRDH 和 TBLWTH 指令能夠尋址不存在的程序存儲器的高位字節。 這個字節被稱為“幻影字節”。 對幻象字節的任何讀取都返回 00h; 寫入幻影字節無效。
表操作的地址生成
24 位程序存儲器可以看作是兩個並排的 16 位空間,每個空間共享相同的地址範圍。 因此,TBLRDL 和 TBLWTL 指令訪問“低”程序存儲空間 (PM[15:0])。 TBLRDH 和 TBLWTH 指令訪問“高”程序存儲空間 (PM[31:16])。 對 PM[31:24] 的任何讀取或寫入都將訪問幻像(未實現)字節。 當在字節模式下使用任何表指令時,表地址的 LSb 將用作字節選擇位。 LSb 決定訪問程序存儲空間高位或低位中的哪個字節。
圖 4-1 說明瞭如何使用表指令尋址程序存儲器。 使用 TBLPAG[24:7] 位和 W 寄存器中的有效地址 (EA) 形成 0 位程序存儲器地址,在表指令中指定(顯示 24 位程序計數器以供參考)。 EA 的高 23 位用於選擇程序存儲位置。 對於字節模式表指令,W 寄存器 EA 的 LSb 用於選擇尋址 16 位程序存儲器字的哪個字節。 “1”選擇位 [15:8],“0”選擇位 [7:0]。 對於字模式下的表指令,忽略 W 寄存器 EA 的 LSb。 除了程序存儲器地址之外,表指令還指定 W 寄存器(或指向存儲器位置的 W 指針),它是要寫入的程序存儲器數據的源或程序存儲器讀取的目標。 對於字節模式下的表寫操作,源工作寄存器的位 [15:8] 將被忽略。
低字訪問
TBLRDL 和 TBLWTL 指令用於訪問程序存儲器數據的低 16 位。 對於字寬表訪問,忽略 W 寄存器地址的 LSb。 對於字節範圍的訪問,W 寄存器地址的 LSb 決定讀取哪個字節。 圖 4-2 說明了 TBLRDL 和 TBLWTL 指令訪問的程序存儲器數據區。
高字訪問
TBLRDH 和 TBLWTH 指令用於訪問程序存儲器數據的高 0 位。 這些指令還支持正交性的字或字節訪問模式,但程序存儲器數據的高字節將始終返回“4”,如圖 3-XNUMX 所示。
程序存儲器中的數據存儲
假定對於大多數應用,高字節 (PM[23:16]) 不會用於數據,使程序存儲器顯示為 16 位寬用於數據存儲。 建議將程序數據的高字節編程為 NOP(00h 或 FFh)或非法操作碼 (3Fh) 值,以防止設備意外執行存儲的數據。 TBLRDH 和 TBLWTH 指令主要用於陣列編程/驗證目的,以及那些需要壓縮數據存儲的應用程序。
程序存儲器位行為
閃存程序存儲器中的位只能從“1”編程為“0”,隨後可以擦除為“1”。 嘗試使用編程序列設置一位將不會有任何效果。
使用表格閱讀說明
表讀取需要兩個步驟。 首先,使用 TBLPAG 寄存器和其中一個 W 寄存器設置地址指針。 然後,可以讀取地址位置處的程序存儲器內容。
代碼前ampEx中的文件ample 4-2 和 Examp圖 4-3 演示瞭如何在字模式下使用表指令讀取程序存儲器的一個字。
筆記: tblpage() 和 tbloffset() 偽指令由 Microchip 彙編器為 dsPIC33 和 PIC24 器件提供。 這些偽指令從程序存儲器地址值中為表指令選擇適當的 TBLPAG 和 W 寄存器值。 更多信息,請參見“MPLAB® Assembler, Linker and Utilities for PIC24 MCUs and dsPIC® DSCs User's Guide”(DS51317)。
表寫保持鎖存器
寫表指令不會直接寫入閃存程序陣列。 相反,這些指令導致數據被編程為首先加載到保持鎖存器中。 這些鎖存器在配置存儲空間中進行內存映射,通常從 FA0000h 開始,並且只能使用寫表指令訪問。 當所有的保持鎖存器都被加載後,實際的內存編程操作通過執行一個特殊的指令序列開始。
不同的器件根據特定的程序陣列設計(即行編程大小和行編程算法)實現不同數量的保持鎖存器。 請參閱特定器件數據手冊和/或編程規範以了解更多詳細信息。
執行雙字寫入
使用一對 TBLWTH 和 TBLWTL 指令一次對兩個字執行字寫入。 Ex中的代碼序列ample 4-4 或 Example 4-5(等效 C 語言)可用於寫入兩個程序存儲器鎖存位置,以使用字寫入模式將其編程到閃存中。
運行時自編程 (RTSP)
RTSP 允許用戶代碼修改閃存程序存儲器的內容。 RTSP 是使用 TBLRD(讀表)和 TBLWT(寫表)指令以及 NVM 控制寄存器完成的。 PIC24 和 dsPIC33 器件支持以下閃存編程操作:
- 閃存頁面擦除
- 行編程(基於鎖存器或基於 RAM)
- 文字編程
通過 RTSP 執行閃存編程,或者使用稱為行的內存塊,或者使用兩個字的閃存。 在編程之前,必須擦除存儲位置。 擦除操作在內存塊上執行,稱為頁面,由多行組成。 行的大小因設備而異; 有關詳細信息,請參閱器件數據手冊。 通常,對於 dsPIC33 和 PIC24 器件,一頁定義為八 (8) 行。 本文檔使用 examp每行 64 條指令的文件(每頁 512 條指令)。
使用寫保持鎖存器進行行編程
如第 4.2.7 節“表寫入保持鎖存器”中所述,實現基於鎖存器的行編程的器件具有包含編程數據的保持鎖存器。 在實際編程操作之前,寫入數據必須通過 TBLWT 指令按順序加載到鎖存器中。 執行行寫入時,指令字必須作為整行加載到鎖存器中。
RTSP 編程的基本順序是設置一個表指針,然後執行一系列 TBLWT 指令來加載緩衝區。 通過設置 NVMCON 寄存器中的控制位來執行編程。 對於前amp例如,在具有 64 條指令行的設備上,一個編程週期將包括 64 條 TBLWTL 和 64 條 TBLWTH 指令以加載寫鎖存器,然後是解鎖 NVMCON 和設置 WR 位的編程序列。 前任ample 4-6 顯示前任amp過程的樂。
使用 RAM 緩衝區的行編程
選擇 dsPIC33 和 PIC24 器件允許直接從數據 RAM 中的緩衝區空間執行行編程,而不是通過保持鎖存器使用 TBLWT 指令傳輸數據。 RAM 緩衝區的位置由 NVMSRCADR 寄存器確定,這些寄存器加載了包含要寫入的程序數據的第一個字的數據 RAM 地址。
在執行編程操作之前,RAM 中的緩衝區空間必須加載要編程的數據行。 RAM 可以壓縮(打包)或未壓縮格式加載。 壓縮存儲使用一個數據字來存儲兩個相鄰程序數據字的最高有效字節 (MSB)。 未壓縮格式為每個程序數據字使用兩個數據字,每隔一個字的高位字節為 00h。 與未壓縮格式相比,壓縮格式使用大約 3/4 的數據 RAM 空間。 另一方面,未壓縮格式模仿 24 位程序數據字的結構,並帶有高位虛擬字節。 數據格式由 RPDF 位 (NVMCON[9]) 選擇。 這兩種格式如圖 4-4 所示。
加載 RAM 緩衝區後,閃存地址指針 NVMADRL 和 NVMADRH 將加載要寫入的閃存行的 24 位起始地址。 與對寫鎖存器編程一樣,該過程通過寫入 NVM 解鎖序列啟動,然後設置 WR 位。 啟動後,設備會自動加載正確的鎖存器並遞增 NVM 地址寄存器,直到所有字節都已編程。 前任ample 4-7 顯示前任amp過程的樂。 如果 NVMSRCADR 設置的值導致數據欠載錯誤情況發生,則 URERR 位 (NVMCON[8]) 將被設置以指示該情況。 實現 RAM 緩衝區行編程的設備也實現了一個或兩個寫鎖存器。 這些是使用 TBLWT 指令加載的,用於執行字編程操作。
通用閃存編程算法
閃存編程操作使用以下非易失性存儲器 (NVM) 控制寄存器進行控制:
- 非易失性存儲器控制器
- 非易失性存儲器密鑰
- NVMADRL/H
- NVMSRCADRL/H(某些設備)
在 RTSP 模式下編程或擦除內部閃存需要一個完整的編程序列。 設置 WR 位 (NVMCON[15]) 開始操作,操作完成後 WR 位自動清零。
在活動分區上執行閃存編程操作時(特別是在標準分區模式下),CPU 將停止直到操作完成。 對非活動分區進行編程時,CPU 可以繼續運行而不會停止。 以下部分概述了出現 CPU 停頓和未停頓的編程算法。
擦除程序存儲器(活動分區)
- 將 NVMOPx 位 (NVMCOM[3:0]) 設置為“0011”以配置頁擦除並設置 WREN 位 (NVMCOM[14])。
- 將要擦除的塊的起始地址寫入 NVMADRL/H 寄存器。
- 禁用中斷。
- 將 55h 寫入 NVMKEY。
- 將 AAh 寫入 NVMKEY。
- 設置 WR 位 (NVMCOM[15]) 以啟動擦除週期。
- 執行兩條 NOP 指令。
- 恢復中斷(可選)。
擦除完成後,WR 位自動清零
行編程(活動分區,標準分區模式)
用戶一次可以對一行程序閃存進行編程。 為此,必須擦除包含所需行的頁面。 行編程到Active Partition的一般流程是:
- 讀取八行程序存儲器(512 條指令)並存儲在數據 RAM 中。
- 用所需的新數據更新 RAM 中的程序數據。
- 擦除塊:
- a) 將 NVMOPx 位 (NVMCOM[3:0]) 設置為“0011”以配置頁擦除並設置 WREN 位 (NVMCOM[14])。
- b) 將要擦除的塊的起始地址寫入 NVMADRL/H 寄存器。
- c) 禁用中斷。
- d) 將 55h 寫入 NVMKEY。
- e) 將 AAh 寫入 NVMKEY。
- f) 設置 WR 位 (NVMCOM[15])。 擦除週期開始,CPU 在擦除週期期間停止。 擦除完成後,WR 位自動清零。
- g) 恢復中斷(可選)。
- 將數據 RAM 中的前 64 條指令寫入程序存儲器緩衝區(參見第 4.2.7 節“表寫入保持鎖存器”)或將 RAM 中存儲的數據的起始地址寫入 NVMSRCADR 寄存器。
- 將程序塊寫入閃存:
- a) 將 NVMOPx 位設置為“0010”以配置行編程並設置 WREN 位。
- b) 禁用中斷。
- c) 將 55h 寫入 NVMKEY。
- d) 將 AAh 寫入 NVMKEY。
- e) 設置 WR 位。 編程週期開始,CPU 在寫週期期間停止。 閃存寫入完成後,WR 位自動清零。
- f) 恢復中斷(可選)。
- 通過遞增 NVMADRL/H 中的地址,使用數據 RAM 中塊中下一個可用的 4 條指令重複步驟 5 和 64,直到將所有 512 條指令寫回閃存。
筆記: 並非所有設備都會在寫入或擦除週期中出現 CPU 停頓。 為避免停頓,建議避免應用程序對正在擦除或寫入的行進行讀取或寫入。
為了防止意外操作,在任何擦除或編程操作之前需要 NVMKEY 的寫入啟動序列。 編程命令執行後,用戶必須等待編程時間,直到編程完成。 編程序列開始後的兩條指令應該是 NOP。
筆記
- 行、塊和保持鎖存器的數量可能因設備而異; 實際數量請參考具體器件數據手冊,以及Flash存儲器編程的完整參考代碼。
- 對於具有單個保持鎖存器的器件,閃存程序存儲器必須通過字編程寫入。
在非活動分區中編程頁面(雙分區模式)
在雙分區模式下編程需要特殊考慮。 因為 CPU 能夠在對非活動分區進行編程時繼續執行指令,所以不會發生 CPU 停頓。
在雙分區模式之一中擦除和重新編程一頁數據的算法如下:
- 擦除塊:
- a) 將 NVMOPx 位 (NVMCOM[3:0]) 設置為“0011”以配置頁面擦除。
- b) 設置 WREN 位 (NVMCOM[14])。
- c) 將要擦除的塊的起始地址寫入 NVMADR 寄存器
頁面地址。 - d) 禁用中斷。
- e) 將 55h 寫入 NVMKEY。
- f) 將 AAh 寫入 NVMKEY。
- g) 設置 WR 位 (NVMCOM[15])。 擦除週期開始,CPU 將保持運行。
- h) 擦除完成後,WR 位自動清零,NVM 寫完成中斷標誌 (NVMIF) 將發生。
- i) 恢復中斷(可選)。
- 通過填充RAM緩衝區來準備要編程的數據; 或者,使用 TBLWT 指令將第一行存儲器(64 條指令)的數據加載到寫鎖存器中。
- 編程塊:
- a) 將 NVMOPx 位 (NVMCON[3:0]) 設置為“0010”以配置行編程。
- b) 設置 WREN (NVMCON[14]) 位。
- c) 將要寫入的塊的起始地址與行起始地址一起寫入 NVMADR 寄存器。
- d) 禁用中斷。
- e) 將 55h 寫入 NVMKEY。
- f) 將 AAh 寫入 NVMKEY。
- g) 設置 WR 位 (NVMCOM[15])。 寫週期開始,CPU 將保持運行。
- h) 擦除完成後,WR 位自動清零,NVM 寫完成中斷標誌 (NVMIF) 將發生。
- i) 恢復中斷(可選)。
- 重複第 2 步和第 3 步,對已擦除頁中剩餘的每一行數據進行編程。
對整個非活動分區進行編程(雙分區模式)
要完全更新非活動分區中的代碼:
- 擦除非活動分區:
- a) 將 NVMOPx 位 (NVMCOM[3:0]) 設置為“0100”以配置非活動分區擦除。
- b) 設置 WREN 位 (NVMCOM[14])。
- c) 禁用中斷。
- d) 將 55h 寫入 NVMKEY。
- e) 將 AAh 寫入 NVMKEY。
- f) 設置 WR 位 (NVMCOM[15])。 擦除週期開始,CPU 將在周期內保持運行。
- g) 擦除完成後,WR 位自動清零,並出現 NVM 寫完成中斷標誌 (NVMIF)。
- h) 恢復中斷(可選)。
- 如第 4.4.3 節“對非活動分區中的頁面編程(雙分區模式)”中所述,使用頁面寫入來寫入非活動分區的每一頁。
- 驗證寫入的數據。 一種建議的方法是對要寫入的數據執行 CRC,並在整個分區上驗證 CRC 值,以確保數據被正確寫入。
使用引導加載程序更新活動分區
- 如第 4.4.4 節“編程整個非活動分區(雙分區模式)”中所述,擦除和編程整個非活動分區。
- 讀取活動分區的 FBTSEQ 配置寄存器。
- 將該值減一併寫入非活動分區的 FBTSEQ。
- 強制分區交換:
- a) 如果 CPU 停頓不是問題,請執行設備復位。 由於 Inactive Partition 具有較低的 Boot Sequence Number,因此在 Reset 後它將成為 Active Partition。
- b) 如果不能接受 CPU 停頓,則執行 BOOTSWP 指令。
程序空間可見性和擴展數據空間(PSV 和 EDS)
對於所有 dsPIC33 和 PIC24 器件,表指令(見第 4.2 節“表操作指令”)可用於訪問程序存儲空間內的數據。 這在只需要讀取或寫入數據時很有用,一次一個字節或一個字。 也可以將程序存儲空間的 16K 字頁映射到數據地址空間的高 32 KB。 這允許有效地擴展數據空間,使其超出其正常的 64 KB 尋址限制,以及在不使用表指令的情況下進行透明訪問。 所有 dsPIC33 和 PIC24 器件都能夠將已實現的程序存儲空間中的任何頁映射到數據空間。 此功能稱為程序空間可見性 (PSV)。 一些設備通過將某些外設內存映射到特定範圍的虛擬程序內存頁面來擴展 PSV。 此功能對於外設特別有用,例如具有高數據吞吐量要求的高級圖形控制器。 PSV 的這種擴展稱為擴展數據空間 (EDS)。
PSV 和 EDS 作為數據存儲器的功能實現。 對於 dsPIC33 和 PIC24 器件,它們的實現方式不同。 有關詳細說明,請參見《dsPIC33/PIC24 系列參考手冊》中的“數據存儲器”。 (dsPIC33、DS70595)和/或“數據存儲器”(PIC24、DS30009717)。
PSV 和指令檔位
有關使用 PSV 的指令停頓的更多信息,請參見“dsPIC33/PIC24 系列參考手冊”,“dsPIC33E 增強型 CPU”(DS70005158)。
寄存器映射
表 6-1 中提供了與雙分區閃存程序存儲器相關的 SFR 匯總。
表 6-1:與閃存程序存儲器相關的特殊功能寄存器 (1)
| File 姓名 | 位元 15 | 位元 14 | 位元 13 | 位元 12 | 位元 11 | 位元 10 | 位元 9 | 位元 8 | 位元 7 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 位元 0 | 所有重置(2) |
| TBLPAG | — | — | — | — | — | — | — | — | 表頁地址指針 | 0000 | |||||||
| 非易失性存儲器控制器 | WR | 鷦 | WRRR | 非VMPIDL | SFTSWP | P2激活 | RPDF | 尤雷爾 | — | — | — | — | NVMOP[3:0] | 0000 | |||
| 非易失性存儲器密鑰 | — | — | — | — | — | — | — | — | NVMKEY[7:0] | 0000 | |||||||
| NVMSRCADRL | 數據 RAM 編程緩衝區起始地址 | 0000 | |||||||||||||||
| NVMSRCADRH | 數據 RAM 編程緩衝區地址(僅限 EDS 操作) | 0000 | |||||||||||||||
| NVMAADRL | 閃存程序存儲器目標地址,低字節 (ADDR[15:0]) | 0000 | |||||||||||||||
| NVADRH | — | — | — | — | — | — | — | — | 閃存程序存儲器目標地址,高字節 (ADDR[23:16]) | 0000 | |||||||
本節列出了與本手冊這一部分相關的應用筆記。 這些應用筆記可能不是專門為 PIC24 或 dsPIC33 產品系列編寫的,但概念是相關的,可以在修改和可能的限制下使用。 當前與雙分區閃存程序存儲器相關的應用筆記有:
筆記: 請訪問微芯 web網站(www.microchip.com)額外的應用筆記和代碼前ampPIC24 和 dsPIC33 系列器件的文件。
修訂歷史
- 修訂版 A(2014 年 XNUMX 月)
本文檔的原始版本。 - 修訂版 B(2015 年 XNUMX 月)
將標題和短語的所有實例“雙引導閃存程序存儲器”更改為“雙分區閃存程序存儲器”或“雙分區閃存”。 - 修訂版 C(2021 年 XNUMX 月)
添加了第 4.1.1.1 節“禁止中斷”。
更新了第 4.1.1 節“控制寄存器”、第 4.4.2 節“行編程(活動分區、標準分區模式)”、第 4.4.3 節“在非活動分區中對頁面進行編程(雙分區模式)”和第 4.4.4 節“對整個分區進行編程”非活動分區(雙分區模式)”。 更新前amp樂 4-5,前ample 4-6 和 Examp樂 4-7。
請注意 Microchip 產品上代碼保護功能的以下詳細資訊:
- Microchip 產品符合其特定 Microchip 資料表中所包含的規格。
- Microchip 相信,其產品系列在按預期方式、符合操作規範和正常條件下使用時是安全的。
- Microchip 重視並積極保護其知識產權。 嚴禁嘗試違反 Microchip 產品的代碼保護功能,這可能違反《數字千年版權法》。
- Microchip 或任何其他半導體製造商都無法保證其程式碼的安全性。代碼保護並不意味著我們保證產品「牢不可破」。代碼保護不斷發展。 Microchip 致力於不斷改進我們產品的程式碼保護功能。
本出版物及其信息僅可用於 Microchip 產品,包括設計、測試 Microchip 產品並將其與您的應用程序集成。 以任何其他方式使用此信息均違反這些條款。 有關設備應用程序的信息僅為您提供方便而提供,可能會被更新所取代。 您有責任確保您的應用程序符合您的規範。 如需更多支持,請聯繫您當地的 Microchip 銷售辦事處,或通過以下網址獲取更多支持 https://www.microchip.com/en-us/support/design-help/client-supportservices.
此信息由 MICROCHIP“按原樣”提供。 MICROCHIP 不作任何與信息相關的明示或暗示、書面或口頭、法定或其他形式的陳述或保證,包括但不限於對非侵權、適銷性和特定用途適用性的任何默示保證,或相關保證它的狀況、質量或性能。 在任何情況下,MICROCHIP 均不對與信息或其使用相關的任何類型的任何間接、特殊、懲罰性、偶然或後果性損失、損害、成本或費用負責,即使 MICROCHIP 已被告知可能性或損害是可預見的。 在法律允許的最大範圍內,MICROCHIP 對以任何方式與信息或其使用相關的所有索賠的全部責任將不超過您為信息直接向 MICROCHIP 支付的費用金額(如果有)。
在生命維持和/或安全應用中使用 Microchip 設備的風險完全由買方承擔,買方同意為 Microchip 辯護、賠償並使 Microchip 免受因此類使用而造成的任何及所有損害、索賠、訴訟或費用。除非另有說明,否則任何 Microchip 智慧財產權均不會以暗示或其他方式授予任何授權。
AMBA、Arm、Arm7、Arm7TDMI、Arm9、Arm11、Artisan、big.LITTLE、Cordio、CoreLink、CoreSight、Cortex、DesignStart、DynamIQ、Jazelle、Keil、Mali、Mbed、Mbed Enabled、NEON、POP、RealView、SecurCore、Socrates、Thumb、TrustZone、ULINK、ULINK2、ULINK-ME、ULINK-PLUS、ULINKpro、μVision、Versatile 是 Arm Limited(或其子公司)在美國和/或其他地方的商標或註冊商標。
有關 Microchip 品質管理系統的信息,請訪問 www.microchip.com/quality.
商標
Microchip 名稱和徽標、Microchip 徽標、Adaptec、AnyRate、AVR、AVR 徽標、AVR Freaks、BesTime、BitCloud、CryptoMemory、CryptoRF、dsPIC、flexPWR、HELDO、IGLOO、JukeBlox、KeeLoq、Kleer、LANCheck、LinkMD、maXStylus、 maXTouch、MediaLB、megaAVR、Microsemi、Microsemi 徽標、MOST、MOST 徽標、MPLAB、OptoLyzer、PIC、picoPower、PICSTART、PIC32 徽標、PolarFire、Prochip Designer、QTouch、SAM-BA、SenGenuity、SpyNIC、SST、SST 徽標、SuperFlash 、Symmetricom、SyncServer、Tachyon、TimeSource、tinyAVR、UNI/O、Vectron 和 XMEGA 是 Microchip Technology Incorporated 在美國和其他國家/地區的註冊商標。 AgileSwitch、APT、ClockWorks、嵌入式控制解決方案公司、EtherSynch、Flashtec、Hyper Speed Control、HyperLight Load、IntelliMOS、Libero、motorBench、mTouch、Powermite 3、Precision Edge、ProASIC、ProASIC Plus、ProASIC Plus 徽標、Quiet-Wire、 SmartFusion、SyncWorld、Temux、TimeCesium、TimeHub、TimePictra、TimeProvider、TrueTime、WinPath 和 ZL 是 Microchip Technology Incorporated 在美國的註冊商標
相鄰密鑰抑制、AKS、模擬數字時代、任何電容器、AnyIn、AnyOut、增強開關、BlueSky、BodyCom、CodeGuard、CryptoAuthentication、CryptoAutomotive、CryptoCompanion、CryptoController、dsPICDEM、dsPICDEM.net、動態平均匹配、DAM , ECAN, Espresso T1S, EtherGREEN, GridTime, IdealBridge, 在線串行編程, ICSP, INICnet, 智能並行, 芯片間連接, JitterBlocker, Knob-on-Display, maxCrypto, maxView, memBrain, Mindi, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, NVM Express, NVMe, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, PowerSmart, PureSilicon, QMatrix, REAL ICE , Ripple Blocker, RTAX, RTG4, SAM-ICE, Serial Quad I/O, simpleMAP, SimpliPHY, SmartBuffer, SmartHLS, SMART-IS, storClad, SQI, SuperSwitcher, SuperSwitcher II, Switchtec, SynchroPHY, Total Endurance, TSHARC, USBCheck, VariSense、VectorBlox、VeriPHY、 ViewSpan、WiperLock、XpressConnect 和 ZENA 是 Microchip Technology Incorporated 在美國和其他國家的商標。
SQTP 是美國 Microchip Technology Incorporated 的服務商標
Adaptec 徽標、Frequency on Demand、Silicon Storage Technology、Symmcom 和 Trusted Time 是 Microchip Technology Inc. 在其他國家/地區的註冊商標。
GestIC 是 Microchip Technology Inc. 的子公司 Microchip Technology German II GmbH & Co. KG 在其他國家的註冊商標。
本文提及的所有其他商標均為其各自公司的財產。
© 2014-2021,Microchip Technology Incorporated 及其子公司。
全球銷售和服務
美洲
- 公司辦公室
西錢德勒大道 2355 號
亞利桑那州錢德勒 85224-6199
電話: 480-792-7200
傳真: 480-792-7277
技術支援: http://www.microchip.com/support
Web 地址: www.microchip.com - 亞特蘭大
喬治亞州德盧斯
電話: 678-957-9614
傳真: 678-957-1455 - 德州奧斯汀
電話: 512-257-3370 - 波士頓
馬薩諸塞州韋斯特伯勒
電話: 774-760-0087
傳真: 774-760-0088 - 芝加哥
伊利諾伊州艾塔斯卡
電話: 630-285-0071
傳真: 630-285-0075 - 達拉斯
德克薩斯州艾迪生
電話: 972-818-7423
傳真: 972-818-2924 - 底特律
密西根州諾維
電話: 248-848-4000 - 德州休士頓
電話: 281-894-5983 - 印第安納波利斯
印第安納州諾布爾斯維爾
電話: 317-773-8323
傳真: 317-773-5453
電話: 317-536-2380 - 洛杉磯
加州米申維耶霍
電話: 949-462-9523
傳真: 949-462-9608
電話: 951-273-7800 - 北卡羅來納州羅利
電話: 919-844-7510 - 紐約州紐約市
電話: 631-435-6000 - 加州聖荷西
電話: 408-735-9110
電話: 408-436-4270 - 加拿大 – 多倫多
電話: 905-695-1980
傳真: 905-695-2078
亞太
- 澳洲 – 雪梨
電話: 61-2-9868-6733 - 中國 – 北京
電話: 86-10-8569-7000 - 中國 – 成都
電話: 86-28-8665-5511 - 中國 – 重慶
電話: 86-23-8980-9588 - 中國 – 東莞
電話: 86-769-8702-9880 - 中國 – 廣州
電話: 86-20-8755-8029 - 中國 – 杭州
電話: 86-571-8792-8115 - 中國 - 香港特別行政區
電話: 852-2943-5100 - 中國 – 南京
電話: 86-25-8473-2460 - 中國 – 青島
電話: 86-532-8502-7355 - 中國 – 上海
電話: 86-21-3326-8000 - 中國 – 沉陽
電話: 86-24-2334-2829 - 中國 – 深圳
電話: 86-755-8864-2200 - 中國 – 蘇州
電話:86-186-6233-1526 - 中國 – 武漢
電話: 86-27-5980-5300 - 中國 – 西安
電話: 86-29-8833-7252 - 中國 – 廈門
電話: 86-592-2388138 - 中國 – 珠海
電話: 86-756-3210040 - 印度 – 班加羅爾
電話: 91-80-3090-4444 - 印度 - 新德里
電話: 91-11-4160-8631 - 印度 – 浦那
電話: 91-20-4121-0141 - 日本 - 大阪
電話: 81-6-6152-7160 - 日本 – 東京
電話: 81-3-6880-3770 - 韓國——大邱
電話: 82-53-744-4301 - 韓國 – 首爾
電話: 82-2-554-7200 - 馬來西亞–吉隆坡
電話: 60-3-7651-7906 - 馬來西亞 – 檳城
電話: 60-4-227-8870 - 菲律賓 – 馬尼拉
電話: 63-2-634-9065 - 新加坡
電話: 65-6334-8870 - 台灣 – 新竹
電話: 886-3-577-8366 - 台灣 – 高雄
電話: 886-7-213-7830 - 台灣 – 台北
電話: 886-2-2508-8600 - 泰國 – 曼谷
電話: 66-2-694-1351 - 越南——胡志明
電話: 84-28-5448-2100
歐洲
- 奧地利 - 韋爾斯
電話: 43-7242-2244-39
傳真: 43-7242-2244-393 - 丹麥 – 哥本哈根
電話: 45-4485-5910
傳真: 45-4485-2829 - 芬蘭 – 埃斯波
電話: 358-9-4520-820 - 法國 – 巴黎
電話: 33-1-69-53-63-20
傳真: 33-1-69-30-90-79 - 德國 – 加興
電話: 49-8931-9700 - 德國 – 漢
電話: 49-2129-3766400 - 德國 – 海爾布隆
電話: 49-7131-72400 - 德國——卡爾斯魯厄
電話: 49-721-625370 - 德國 – 慕尼黑
電話: 49-89-627-144-0
傳真: 49-89-627-144-44 - 德國——羅森海姆
電話: 49-8031-354-560 - 意大利——米蘭
電話: 39-0331-742611
傳真: 39-0331-466781 - 意大利——帕多瓦
電話: 39-049-7625286 - 荷蘭 – Drunen
電話: 31-416-690399
傳真: 31-416-690340 - 挪威 – 特隆赫姆
電話: 47-7288-4388 - 波蘭 – 華沙
電話: 48-22-3325737 - 羅馬尼亞 – 布加勒斯特
電話: 40-21-407-87-50 - 西班牙 – 馬德里
電話: 34-91-708-08-90
傳真: 34-91-708-08-91 - 瑞典——哥德堡
電話: 46-31-704-60-40 - 瑞典 – 斯德哥爾摩
電話: 46-8-5090-4654 - 英國 – 沃金厄姆
電話: 44-118-921-5800
傳真: 44-118-921-5820
筆記: 該系列參考手冊部分旨在作為對器件數據表的補充。 本文檔適用於所有 dsPIC33/PIC24 器件。 請查閱當前器件數據手冊中“雙分區閃存程序存儲器”一章開頭的註釋,以檢查該文檔是否支持您正在使用的器件。 器件數據表和系列參考手冊部分可從 Microchip Worldwide 下載 Web網站位於: http://www.microchip.com.
文件/資源
![]() |
MICROCHIP PIC24 雙分區閃存程序存儲器 [pdf] 使用者指南 PIC24 雙分區閃存程序存儲器,PIC24,雙分區閃存程序存儲器,閃存程序存儲器,程序存儲器 |





