Microchip PIC18F2XXX/4XXX 系列閃存微控制器編程指南
在電子設計領域,微控制器的編程是一項關鍵工作。今天,我們就來深入探討一下 Microchip 的 PIC18F2XXX/4XXX 系列閃存微控制器的編程規范。
文件下載:PIC18F4321-I P.pdf
一、器件概述
該文檔涵蓋了眾多型號的編程規范,包括 PIC18F2221、PIC18F2321 等一系列 2XXX 和 4XXX 家族的器件。這些器件具有不同的封裝類型,為不同的應用場景提供了多樣化的選擇。
二、編程概述
(一)編程方法
PIC18F2XXX/4XXX 系列器件可以使用高壓在線串行編程(High - Voltage In - Circuit Serial Programming?,ICSP?)方法或低壓 ICSP 方法進行編程。這兩種方法都可以在用戶系統中對器件進行操作,但低壓 ICSP 方法與高壓方法略有不同。
(二)硬件要求
- 高壓 ICSP 模式:在此模式下,器件需要兩個可編程電源,分別為 VDD 和 MCLR/VPP/RE3 供電,且兩個電源的最小分辨率應為 0.25V。
- 低壓 ICSP 模式:在該模式下,器件可以使用處于工作范圍內的 VDD 源進行編程,MCLR/VPP/RE3 可以保持在正常工作電壓。
(三)引腳圖
不同封裝類型的器件有不同的引腳圖,如 28 引腳的 SPDIP、PDIP、SOIC、SSOP、QFN 封裝,以及 40 引腳的 PDIP 封裝和 44 引腳的 TQFP、QFN 封裝等。了解這些引腳圖對于正確連接和編程器件至關重要。
(四)內存映射
不同型號的器件代碼內存空間大小和分布不同。例如,PIC18FX6X0 器件的代碼內存空間從 0000h 到 0FFFFh(64 Kbytes),分為四個 16 - Kbyte 塊;PIC18FX5X5 器件的代碼內存空間從 0000h 到 0BFFFFh(48 Kbytes),分為三個 16 - Kbyte 塊。同時,部分器件的 Boot Block 大小可以通過配置寄存器中的 BBSIZ 位進行調整。
(五)編程流程概述
編程過程包括批量擦除(Bulk Erase)、對代碼內存、ID 位置和數據 EEPROM(部分器件)進行編程,然后進行驗證,最后對配置位進行編程和驗證。
(六)進出編程驗證模式
- 高壓 ICSP 模式:進入該模式時,需將 PGC 和 PGD 保持低電平,然后將 MCLR/VPP/RE3 升高到 VIHH(高電壓)。退出時則按相應的退出序列操作。
- 低壓 ICSP 模式:當 LVP 配置位為‘1’時,可通過將 PGC 和 PGD 保持低電平,PGM 置為高電平,然后將 MCLR/VPP/RE3 升高到 VIH 進入該模式。
(七)串行編程驗證操作
- 4 位命令:所有指令為 20 位,由 4 位命令和 16 位操作數組成。不同的 4 位命令用于不同的操作,如核心指令、表讀取、表寫入等。
- 核心指令:用于向 CPU 核心傳遞 16 位指令以執行,為其他命令的使用設置合適的寄存器。
(八)專用 ICSP/ICD 端口(僅 44 引腳 TQFP)
PIC18F4455/4458/4550/4553 等 44 引腳 TQFP 器件支持專用 ICSP/ICD 端口,可提供另一種在線調試和 ICSP 選項。但 ICPRT 配置位只能通過默認 ICSP 端口進行編程,且不同封裝類型的器件對該位的設置有不同要求。
三、器件編程
(一)ICSP 擦除
- 高壓 ICSP 批量擦除:通過配置位于 3C0004h 和 3C0005h 的兩個批量擦除控制寄存器來實現代碼或數據 EEPROM 的擦除。擦除操作會清除相關內存塊的代碼保護設置。
- 低壓 ICSP 批量擦除:執行批量擦除時,器件需由參數 D111 指定的電壓供電。若電源電壓低于批量擦除限制,可參考行擦除或修改代碼內存的方法。
- ICSP 行擦除:無論使用高壓還是低壓 ICSP,只要塊未被代碼或寫保護,就可以擦除一行(64 字節數據)。行擦除的持續時間由 PGC 外部定時控制。
(二)代碼內存編程
編程代碼內存時,先將數據加載到寫緩沖區,然后啟動編程序列。不同型號器件的寫緩沖區和擦除緩沖區大小不同,編程持續時間也由 PGC 外部定時控制。
(三)數據 EEPROM 編程
數據 EEPROM 通過地址指針(EEADRH:EEADR)和數據鎖存器(EEDATA)逐字節訪問。編程時需正確配置 EECON1 寄存器,寫入時會自動擦除原位置并寫入新數據。
(四)ID 位置編程
ID 位置的編程與代碼內存類似,用戶只需填充寫緩沖區的前 8 個字節即可寫入 ID 位置。若要修改 ID 位置,需先進行擦除操作。
(五)Boot 塊編程
使用與代碼內存編程類似的代碼序列,但地址范圍在 000000h 到 0007FFh 之間。
(六)配置位編程
配置位逐字節編程,使用“Table Write, Begin Programming”4 位命令(‘1111’),但每次只寫入 16 位有效負載中的 8 位。
四、讀取器件
(一)讀取代碼內存、ID 位置和配置位
通過 4 位命令‘1001’(表讀取,后遞增)逐字節訪問代碼內存,讀取的內容通過 PGD 串行輸出。該方法也適用于讀取 ID 和配置寄存器。
(二)驗證代碼內存和 ID 位置
驗證時,將代碼內存空間的內容讀回并與編程器緩沖區中的副本進行比較。對于 ID 位置,需手動將表指針設置為 200000h。
(三)驗證配置位
通過 4 位命令‘1001’讀取配置地址并輸出到 PGD,然后與編程器內存中的相應配置數據進行比較。
(四)讀取數據 EEPROM 內存
通過地址指針和數據鎖存器逐字節訪問數據 EEPROM,讀取的數據通過 4 位命令‘0010’輸出到 PGD。
(五)驗證數據 EEPROM
讀取數據 EEPROM 地址并輸出到 PGD,然后與編程器內存中的相應數據進行比較。
(六)空白檢查
空白檢查是驗證器件是否沒有已編程的內存單元,需對代碼內存、數據 EEPROM、ID 位置和配置位進行驗證,但忽略設備 ID 寄存器。
五、配置字
(一)配置字概述
PIC18F2XXX/4XXX 系列器件有多個配置字,可通過設置或清除這些位來選擇不同的器件配置。所有其他內存區域應在設置配置字之前進行編程和驗證。
(二)ID 位置
用戶可以在 200000h:200007h 的 8 個 ID 位置存儲識別信息,建議每個 ID 的最高半字節為 Fh。
(三)設備 ID 字
設備 ID 字位于 3FFFFEh:3FFFFFh,可用于識別正在編程的設備類型,即使在代碼或讀保護后也能正常讀取。
(四)單電源 ICSP 編程
配置寄存器 CONFIG4L 中的 LVP 位啟用單電源(低壓)ICSP 編程。該位默認從工廠設置為‘1’(啟用),若將其編程為‘0’,則只能使用高壓 ICSP 模式。
(五)在 HEX 文件中嵌入配置字和數據 EEPROM 信息
為了實現代碼的可移植性,編程器需要從 hex 文件中讀取配置字和數據 EEPROM 信息。在保存 hex 文件時,應包含這些信息,也可提供不包含這些信息的選項。
(六)校驗和計算
校驗和通過對所有代碼內存位置的內容、配置字(適當屏蔽)和 ID 位置(如果任何塊被代碼保護)進行求和得到,取該和的最低 16 位作為校驗和。
六、AC/DC 特性和時序要求
文檔給出了編程/驗證測試模式下的標準操作條件,包括各種電壓、電流、時間參數的要求,如高電壓編程電壓、低電壓編程電壓、編程電流、輸入輸出電壓等,這些參數對于正確編程和驗證器件至關重要。
在實際應用中,我們需要根據具體的器件型號和應用場景,仔細選擇合適的編程方法和參數,嚴格按照編程規范進行操作,以確保器件的正常工作。同時,對于代碼保護等功能,要充分了解其原理和限制,以保護我們的知識產權。大家在編程過程中遇到過哪些問題呢?歡迎留言討論。
發布評論請先 登錄
Cypress semiconductor 的CY7C63xxx USB微控制器系列的固件討論
XMC4xxx SWD在線編程參考手冊
ST32F3xxx和STM32F4xxx微控制器的內核Crotex-M4的編程手冊
STM32F10XXX的閃存編程手冊資料免費下載
STM32F4xxx系列微控制器的中文參考手冊免費下載
基于高級ARM的STM32F76xxx和STM32F77xxx
基于ARM內核的32位高級MCU STM32F75xxx和STM32F74xxx
AN4660_從STM32F42xxx、STM32F43xxx到STM32F74xxx、STM32F75xxx的微控制器應用移植
從STM32F42xxx/STM32F43xxx到STM32F74xxx/STM32F75xxx的微控制器應用移植
STM32F10xxx微控制器的閃存存儲器燒寫手冊
PIC18F16Q20 Curiosity Nano開發板技術解析與應用指南
Microchip PIC18F2XXX/4XXX 系列閃存微控制器編程指南
評論