PIC18FXX20系列閃存微控制器編程全解析
在電子設(shè)計(jì)領(lǐng)域,微控制器的編程是一項(xiàng)基礎(chǔ)且關(guān)鍵的工作。今天我們聚焦Microchip的PIC18FXX20系列閃存微控制器,深入探討其編程規(guī)范和相關(guān)技術(shù)要點(diǎn)。
文件下載:PIC18F8620T-E/PT.pdf
一、器件概述
PIC18FXX20涵蓋了多個(gè)具體型號(hào),像PIC18F6520、PIC18F6620、PIC18F6720、PIC18F8520、PIC18F8620以及PIC18F8720等。這些型號(hào)在不同應(yīng)用場(chǎng)景中都有廣泛的用途,了解它們的編程規(guī)范對(duì)于工程師來說至關(guān)重要。
二、編程概述
(一)編程方法
該系列器件支持兩種編程方式:高壓在線串行編程(High Voltage In-Circuit Serial Programming,簡(jiǎn)稱HV-ICSP)和低壓在線串行編程(Low Voltage In-Circuit Serial Programming,簡(jiǎn)稱LV-ICSP)。這兩種方式都能在用戶系統(tǒng)中對(duì)器件進(jìn)行編程。其中,LV-ICSP方式與HV-ICSP方式略有不同,在實(shí)際應(yīng)用中需根據(jù)具體情況進(jìn)行選擇。
(二)硬件要求
- 高壓ICSP模式:在這種模式下,PIC18FXX20需要兩個(gè)可編程電源,分別為VDD和MCLR/VPP供電,且這兩個(gè)電源的最小分辨率要達(dá)到0.25V。
- 低壓ICSP模式:在此模式下,使用處于工作范圍內(nèi)的VDD電源就能完成編程,意味著MCLR/VPP可保持在正常工作電壓。
(三)引腳圖和引腳描述
| PIC18FXX20系列的引腳圖展示了各引腳在編程時(shí)的布局。不過,引腳描述并未涵蓋器件的全部功能,若需要完整的引腳說明,還得參考相應(yīng)的器件數(shù)據(jù)手冊(cè)。以下是編程時(shí)部分關(guān)鍵引腳的信息: | 引腳名稱 | 引腳類型 | 引腳描述 |
|---|---|---|---|
| MCLR/VPP/RA5 | VPP P | 編程使能 | |
| VDD(2) | VDD P | 電源 | |
| VSS(2) | VSS P | 接地 | |
| AVDD | AVDD P | 模擬電源 | |
| AVSS | AVSS P | 模擬接地 | |
| RB5 | I | 當(dāng)LVP配置位為‘1’時(shí),作為低壓ICSP輸入 | |
| RB6 | I | 串行時(shí)鐘 | |
| RB7 | I/O | 串行數(shù)據(jù) |
(四)內(nèi)存映射
- 代碼內(nèi)存:代碼內(nèi)存空間從0000h延伸到1FFFFh(共128KB),被劃分為八個(gè)16KB的塊。其中,地址0000h到01FFh定義為“Boot Block”區(qū)域,它與Block 1的處理方式不同。不同型號(hào)的器件代碼內(nèi)存大小有所差異:
- PIC18F6520和PIC18F8520:000000h - 007FFFh(32K)
- PIC18F6620和PIC18F8620:000000h - 00FFFFh(64K)
- PIC18F6720和PIC18F8720:000000h - 01FFFFh(128K)
- 配置和ID空間:除了代碼內(nèi)存空間,配置和ID空間中有三個(gè)塊可通過表讀取和表寫入的方式供用戶訪問。用戶可以在八個(gè)ID寄存器中存儲(chǔ)識(shí)別信息,這些ID寄存器映射在地址200000h到200007h。地址300000h到30000Dh用于配置位,3FFFFEh和3FFFFFh用于設(shè)備ID位。
(五)內(nèi)存地址指針
地址空間從0000000h到3FFFFFh的內(nèi)存通過表指針(Table Pointer)進(jìn)行尋址,表指針由三個(gè)指針寄存器組成:
- TBLPTRU(位于RAM地址0FF8h)
- TBLPTRH(位于RAM地址0FF7h)
- TBLPTRL(位于RAM地址0FF6h)
在進(jìn)行許多讀寫操作之前,會(huì)使用4位命令‘0000’(核心指令)來加載表指針。
(六)編程過程概述
編程過程大致如下:首先進(jìn)行批量擦除,接著對(duì)代碼內(nèi)存、ID位置和數(shù)據(jù)EEPROM進(jìn)行編程,然后對(duì)這些內(nèi)存進(jìn)行驗(yàn)證,確保編程成功。若未檢測(cè)到錯(cuò)誤,再對(duì)配置位進(jìn)行編程和驗(yàn)證。
(七)進(jìn)入編程/驗(yàn)證模式
- 高壓ICSP模式:將SCLK和SDATA拉低,然后將MCLR/VPP升高到VIHH(高壓),即可進(jìn)入該模式。在此模式下,可對(duì)代碼內(nèi)存、數(shù)據(jù)EEPROM、ID位置和配置位進(jìn)行串行訪問和編程。
- 低壓ICSP模式:當(dāng)LVP配置位為‘1’時(shí),該模式被啟用。將SCLK和SDATA拉低,PGM置為邏輯高電平,然后將MCLR/VPP升高到VIH,即可進(jìn)入該模式。此時(shí),RB5/PGM引腳專門用于編程功能,不再作為通用I/O引腳。
(八)串行編程/驗(yàn)證操作
| 在串行操作中,SCLK引腳作為時(shí)鐘輸入,SDATA引腳用于輸入命令位和進(jìn)行數(shù)據(jù)的輸入輸出。命令和數(shù)據(jù)在SCLK的上升沿傳輸,在下降沿鎖存,且以最低有效位(LSb)優(yōu)先。所有指令為20位,由一個(gè)4位命令和一個(gè)16位操作數(shù)組成,操作數(shù)根據(jù)執(zhí)行的命令類型而定。以下是一些編程和驗(yàn)證所需的4位命令: | 描述 | 4位命令 |
|---|---|---|
| 核心指令(移入16位指令) | 0000 | |
| 移出TABLAT寄存器 | 0010 | |
| 表讀取 | 1000 | |
| 表讀取,后遞增 | 1001 | |
| 表讀取,后遞減 | 1010 | |
| 表讀取,前遞增 | 1011 | |
| 表寫入 | 1100 | |
| 表寫入,后遞增2 | 1101 | |
| 表寫入,后遞減2 | 1110 | |
| 表寫入,開始編程 | 1111 |
三、器件編程
(一)批量擦除
-
高壓ICSP批量擦除:通過向地址3C0004h寫入“擦除選項(xiàng)”來實(shí)現(xiàn)代碼或數(shù)據(jù)EEPROM的擦除。代碼內(nèi)存可以部分擦除,也可以一次性擦除整個(gè)器件。批量擦除操作還會(huì)清除與被擦除內(nèi)存塊相關(guān)的任何代碼保護(hù)設(shè)置。以下是一些擦除選項(xiàng): 描述 數(shù)據(jù) 芯片擦除 80h 擦除數(shù)據(jù)EEPROM 81h 擦除Boot Block 83h 擦除Block 1 88h 擦除Block 2 89h 擦除Block 3 8Ah 擦除Block 4 8Bh 擦除Block 5 8Ch 擦除Block 6 8Dh 擦除Block 7 8Eh 擦除Block 8 8Fh - 低壓ICSP批量擦除:若要執(zhí)行批量擦除,器件需由參數(shù)#D111指定的電壓供電,其他批量擦除細(xì)節(jié)與高壓ICSP模式相同。
- 多面板單行擦除:無論使用高壓還是低壓ICSP,都能同時(shí)擦除所有面板中的單行(64字節(jié)數(shù)據(jù))。該功能通過對(duì)位于3C0006h的編程控制寄存器進(jìn)行適當(dāng)配置來啟用。
(二)代碼內(nèi)存編程
編程代碼內(nèi)存時(shí),需先將數(shù)據(jù)加載到相應(yīng)的寫緩沖區(qū),然后啟動(dòng)編程序列。代碼內(nèi)存空間中的每個(gè)面板都有一個(gè)8字節(jié)深的寫緩沖區(qū),在啟動(dòng)寫序列之前必須先將其加載。通常采用多面板寫入模式,即所有程序緩沖區(qū)并行寫入。編程持續(xù)時(shí)間由SCLK外部定時(shí)控制,在發(fā)出“開始編程”命令(4位命令‘1111’)后,發(fā)出NOP命令,將第4個(gè)SCLK保持高電平一段時(shí)間P9,之后將SCLK拉低,編程序列終止。
(三)數(shù)據(jù)EEPROM編程
數(shù)據(jù)EEPROM通過地址指針(寄存器對(duì)EEADR:EEADRH)和數(shù)據(jù)鎖存器(EEDATA)逐字節(jié)訪問。寫入時(shí),先將所需內(nèi)存位置加載到EEADR:EEADRH,將數(shù)據(jù)加載到EEDATA,然后通過對(duì)EECON1和EECON2寄存器進(jìn)行適當(dāng)配置來啟動(dòng)內(nèi)存寫入。寫入時(shí)會(huì)自動(dòng)擦除該位置并寫入新數(shù)據(jù)。
(四)ID位置編程
ID位置的編程方式與代碼內(nèi)存類似,但需禁用多面板寫入功能。要寫入的單個(gè)面板將根據(jù)表指針的值自動(dòng)啟用。ID寄存器映射在地址200000h到200007h,即使應(yīng)用了代碼保護(hù),這些位置也能正常讀出。
(五)Boot Block編程
Boot Block段的編程方式與ID位置完全相同,同樣需要禁用多面板寫入功能,確保只寫入地址范圍在0000h到01FFh的數(shù)據(jù)。
(六)配置位編程
與代碼內(nèi)存不同,配置位是逐字節(jié)進(jìn)行編程的。使用“表寫入,開始編程”4位命令(1111),但后續(xù)16位有效負(fù)載中只有8位會(huì)被寫入,LSB寫入偶數(shù)地址,MSB寫入奇數(shù)地址。
四、讀取器件
(一)讀取內(nèi)存
通過4位命令‘1001’(表讀取,后遞增)逐字節(jié)訪問代碼內(nèi)存,將表指針指向的內(nèi)存內(nèi)容加載到表鎖存器,然后通過SDATA串行輸出。這種方法同樣適用于讀取ID和配置寄存器。
(二)驗(yàn)證操作
- 驗(yàn)證代碼內(nèi)存和ID位置:驗(yàn)證過程是將讀取的代碼內(nèi)存空間與編程器緩沖區(qū)中的副本進(jìn)行比較,逐字節(jié)讀取內(nèi)存,需讀取兩個(gè)字節(jié)才能與編程器緩沖區(qū)中的字進(jìn)行比較。驗(yàn)證完代碼內(nèi)存后,需手動(dòng)將表指針設(shè)置為200000h(ID位置的基地址)。
- 驗(yàn)證配置位:通過4位命令‘1001’讀取配置地址并輸出到SDATA,然后將結(jié)果與編程器內(nèi)存中的相應(yīng)配置數(shù)據(jù)進(jìn)行比較。
- 驗(yàn)證數(shù)據(jù)EEPROM:通過一系列核心指令(4位命令‘0000’)讀取數(shù)據(jù)EEPROM地址,然后通過4位命令‘0010’(移出數(shù)據(jù)保持寄存器)將結(jié)果輸出到SDATA,再與編程器內(nèi)存中的相應(yīng)數(shù)據(jù)進(jìn)行比較。
(三)空白檢查
“空白檢查”是指驗(yàn)證器件是否沒有已編程的內(nèi)存單元,需要對(duì)代碼內(nèi)存、數(shù)據(jù)EEPROM、ID位置和配置位進(jìn)行驗(yàn)證,但要忽略設(shè)備ID寄存器(3FFFFEh:3FFFFFh)。空白或已擦除的內(nèi)存單元讀取值為‘1’,因此空白檢查就是驗(yàn)證所有字節(jié)是否讀取為FFh(配置位除外)。
五、配置字
(一)ID位置
用戶可在200000h到200007h映射的八個(gè)ID位置中存儲(chǔ)識(shí)別信息,建議每個(gè)ID的最高有效半字節(jié)為0Fh,這樣可避免用戶代碼意外從ID空間執(zhí)行。
(二)設(shè)備ID字
PIC18FXX20的設(shè)備ID字位于3FFFFEh到3FFFFFh,編程人員可利用這些位來識(shí)別正在編程的設(shè)備類型,即使應(yīng)用了代碼或讀取保護(hù),這些位也能正常讀出。
(三)低壓編程(LVP)位
配置寄存器CONFIG4L中的LVP位用于啟用低壓ICSP編程,出廠時(shí)該位默認(rèn)值為‘1’。若不使用低壓編程模式,可將LVP位編程為‘0’,此時(shí)RB5/PGM將成為數(shù)字I/O引腳。但需注意,LVP位只能通過進(jìn)入高壓ICSP模式進(jìn)行編程,一旦編程為‘0’,就只能使用高壓ICSP模式對(duì)設(shè)備進(jìn)行編程。
(四)嵌入配置字信息和數(shù)據(jù)EEPROM信息
為了實(shí)現(xiàn)代碼的可移植性,PIC18FXX20編程器需要從HEX文件中讀取配置字信息和數(shù)據(jù)EEPROM信息。若這些信息缺失,應(yīng)發(fā)出簡(jiǎn)單的警告消息。保存HEX文件時(shí),必須包含所有配置字信息和數(shù)據(jù)EEPROM信息,也可提供不包含這些信息的選項(xiàng)。
(五)校驗(yàn)和計(jì)算
校驗(yàn)和的計(jì)算方法是將以下內(nèi)容相加:所有代碼內(nèi)存位置的內(nèi)容、經(jīng)過適當(dāng)掩碼處理的配置字以及ID位置。取該和的最低16位作為校驗(yàn)和。不同型號(hào)和代碼保護(hù)設(shè)置下的校驗(yàn)和計(jì)算方法在文檔中有詳細(xì)說明。
六、AC/DC特性和時(shí)序要求
文檔中給出了編程/驗(yàn)證測(cè)試模式下的標(biāo)準(zhǔn)操作條件,包括工作溫度、各種電壓、電流、時(shí)間等參數(shù)的范圍和要求。例如,高壓編程電壓MCLR/VPP的范圍是9.00 - 13.25V,低壓編程電壓范圍是2.00 - 5.50V,供應(yīng)電壓在正常編程時(shí)為2.00 - 5.50V,批量擦除操作時(shí)為4.50 - 5.50V等。
綜上所述,PIC18FXX20系列閃存微控制器的編程涉及多個(gè)方面,從編程方法、硬件要求到內(nèi)存操作、配置字設(shè)置等都需要工程師仔細(xì)研究和掌握。希望通過本文的介紹,能幫助大家更好地理解和應(yīng)用PIC18FXX20的編程技術(shù)。在實(shí)際應(yīng)用中,你是否遇到過關(guān)于這些微控制器編程的難題呢?又有哪些獨(dú)特的解決方案呢?歡迎在評(píng)論區(qū)分享你的經(jīng)驗(yàn)。
-
編程規(guī)范
+關(guān)注
關(guān)注
0文章
10瀏覽量
9025
發(fā)布評(píng)論請(qǐng)先 登錄
深入解析PIC24FJ256GB210系列16位閃存微控制器
PIC32MM0064GPL036 系列 32 位閃存微控制器深度剖析
深入剖析Microchip PIC18F6393/6493/8393/8493系列微控制器
PIC18CXX2高性能微控制器深度解析
PIC18FXX80/XX85 Flash微控制器編程規(guī)范解析
深度剖析Microchip PIC18F2458/2553/4458/4553系列微控制器
PIC18F2XXX/4XXX系列閃存微控制器編程規(guī)范解析
深入解析Microchip PIC16F8X系列微控制器
PIC16C745/765微控制器:功能、特性與應(yīng)用全解析
Microchip PIC16C62X系列微控制器:設(shè)計(jì)與應(yīng)用深度解析
PIC16F716:8位閃存微控制器的全方位解析
PIC18F8723 系列微控制器:高性能與低功耗的完美結(jié)合
Microchip PIC18F2458/2553/4458/4553系列微控制器深度解析
Microchip PIC18F2XXX/4XXX 系列閃存微控制器編程指南
PIC18F16Q20 Curiosity Nano開發(fā)板技術(shù)解析與應(yīng)用指南
PIC18FXX20系列閃存微控制器編程全解析
評(píng)論