dsPIC30F系列數字信號控制器編程規范詳解
在電子工程領域,數字信號控制器(DSCs)的應用越來越廣泛。Microchip的dsPIC30F系列DSCs以其高性能和靈活性受到眾多開發者的青睞。今天,我們就來詳細探討一下dsPIC30F的編程規范。
一、概述
這份編程規范文檔主要是為第三方工具開發者編寫的,用于指導他們對dsPIC30F設備進行編程。對于使用dsPIC30F設備的客戶,建議使用已經支持設備編程的開發工具。文檔涵蓋了dsPIC30F多個型號的編程規范,包括dsPIC30F2010/2011/2012等。
二、編程概述
2.1 片上內存與編程執行器
dsPIC30F系列DSCs包含一個片上內存區域,用于簡化設備編程。這個區域可以存儲編程執行器,使得dsPIC30F的編程速度比傳統方法更快。外部編程器(如Microchip的MPLAB? ICD 2、MPLAB PM3等)將編程執行器存儲到內存后,它可以與外部編程器交互,高效地對設備進行編程。編程器和編程執行器之間是主從關系,編程器是主設備,編程執行器是從設備。
2.2 編程方法
有兩種方法可用于對用戶系統中的芯片進行編程:
- Enhanced ICSP協議:使用更快的高壓方法,利用編程執行器。編程執行器通過一個小命令集提供擦除、編程和驗證芯片的所有必要功能,使編程器無需處理芯片的底層編程協議。
- ICSP協議:不使用編程執行器,提供原生的底層編程能力來擦除、編程和驗證芯片。但這種方法速度明顯較慢,因為它使用控制代碼在dsPIC30F設備上串行執行指令。
三、硬件要求與引腳使用
3.1 硬件要求
在ICSP或Enhanced ICSP模式下,dsPIC30F需要兩個可編程電源,分別為VDD和MCLR供電。對于擦除代碼保護位所需的批量擦除編程,VDD必須大于4.5伏。
3.2 編程引腳
| 編程時使用的引腳如下: | Pin Name | Pin Type | Pin Description |
|---|---|---|---|
| MCLR/V PP | P | Programming Enable | |
| V DD | P | Power Supply | |
| V SS | P | Ground | |
| PGC | I | Serial Clock | |
| PGD | I/O | Serial Data |
四、內存映射
4.1 程序內存映射
| 程序內存空間從0x0到0xFFFFFE,代碼存儲位于內存映射的底部,支持高達144 Kbytes(48K指令字)。代碼存儲在三個48 Kbyte的內存面板中。不同型號的設備代碼內存和數據EEPROM的位置和大小不同,具體如下表所示: | Device | Code Memory map (Size in Instruction Words) | Data EEPROM Memory Map (Size in Bytes) |
|---|---|---|---|
| dsPIC30F2010 | 0x000000 - 0x001FFE (4K) | 0x7FFC00 - 0x7FFFFE (1K) | |
| dsPIC30F2011 | 0x000000 - 0x001FFE (4K) | None (0K) | |
| ... | ... | ... |
4.2 數據EEPROM內存
數據EEPROM陣列支持高達4 Kbytes的數據,位于一個內存面板中,映射在程序內存空間的用戶內存空間末尾。
五、編程執行器應用
5.1 編程執行器概述
編程執行器位于執行內存中,在進入Enhanced ICSP編程模式時執行。它通過一個簡單的命令集和通信協議,為編程器提供對dsPIC30F進行編程和驗證的機制。其功能包括讀取內存、擦除內存、編程內存和查詢等。
5.2 編程執行器代碼內存和數據RAM
編程執行器存儲在執行代碼內存中,執行時不需要用戶代碼內存或數據EEPROM的資源。它使用設備的數據RAM進行變量存儲和程序執行,運行后數據RAM的內容不可預測。
六、確認執行內存內容
在開始編程之前,編程器必須確認編程執行器是否存儲在執行內存中。具體步驟是先進入ICSP模式,讀取執行內存中存儲的唯一應用ID字。如果該字為0xBB,則表示編程執行器已駐留在內存中,可以正常編程;否則,需要使用特定方法將編程執行器編程到執行代碼內存中。
七、設備編程
7.1 編程流程概述
確認編程執行器在內存中(如果不存在則加載)后,可以使用一系列命令對dsPIC30F進行編程。編程過程包括進入Enhanced ICSP模式、進行芯片擦除、驗證芯片擦除、編程代碼內存、數據Flash和配置位,最后退出Enhanced ICSP模式。如果驗證失敗,需要從芯片擦除步驟重新開始。
7.2 各部分編程詳細步驟
7.2.1 進入Enhanced ICSP模式
通過將PGC和PGD保持為高電平,然后將MCLR/VPP升高到VIHH(高電壓)來進入該模式。在此模式下,可以使用編程執行器命令通過PGC和PGD串行傳輸來高效編程代碼內存、數據EEPROM和配置位。
7.2.2 芯片擦除
使用Bulk Erase命令(ERASEB)擦除芯片,將所有代碼內存、數據EEPROM和代碼保護配置位設置為‘1’。非代碼保護配置位需要手動設置為‘1’。如果啟用了高級安全功能,則需要根據需要執行單個段擦除操作。
7.2.3 空白檢查
使用QBLANK命令驗證設備是否已成功擦除,確保所有實現的代碼內存、數據EEPROM和配置位都為空白。如果設備未空白,則需要先進行擦除操作。
7.2.4 代碼內存編程
使用PROGP命令對代碼內存進行編程,每次編程一行。編程行數取決于設備的代碼內存大小。編程完成后,可以使用READP命令讀取代碼內存進行驗證,也可以使用校驗和計算進行驗證。
7.2.5 數據EEPROM編程
使用PROGD命令對數據EEPROM進行編程,每次編程一行。編程行數取決于設備的數據EEPROM大小。編程完成后,可以使用READD命令讀取數據EEPROM進行驗證,也可以使用校驗和計算進行驗證。
7.2.6 配置位編程
配置位存儲在七個16位寄存器中,分為系統操作位和代碼保護位。使用PROGC命令每次編程一個配置字,編程后使用READD命令讀取配置位進行驗證。需要注意的是,系統操作位不能被擦除,應始終編程到所需設置;代碼保護位在編程和驗證設備時必須為‘1’,只有在設備編程和驗證完成后才能將其編程為‘0’。
7.2.7 退出Enhanced ICSP模式
通過移除設備電源或將MCLR設置為VIL來退出該模式,下次進入正常用戶模式時,使用Enhanced ICSP存儲的程序將執行。
八、其他編程特性
8.1 擦除內存
使用ERASEB、ERASED或ERASEP命令擦除內存。ERASEB提供多種批量擦除選項,可擦除整個芯片、所有代碼內存或數據EEPROM,或按段擦除。
8.2 修改內存
可以使用ERASEP和ERASED分別擦除代碼內存和數據EEPROM的選擇性行,然后使用PROGP和PROGD命令對修改的行進行重新編程。對于高級代碼保護位的修改,可能需要先使用ERASEB命令擦除整個芯片。
8.3 讀取內存
使用READD命令讀取數據EEPROM、配置位和設備ID,使用READP命令讀取代碼內存。
8.4 編程執行器軟件版本
使用QVER命令查詢編程執行器軟件的版本。
8.5 十六進制文件信息
編程器應從十六進制文件中讀取數據EEPROM和配置信息,保存十六進制文件時應包含這些信息。
8.6 單元ID
dsPIC30F設備包含32條單元ID指令,位于地址0x8005C0至0x8005FF。批量擦除不會擦除單元ID位置,可以使用特定步驟擦除執行內存并與編程執行器一起編程單元ID。
8.7 校驗和計算
dsPIC30F的校驗和為16位,是代碼內存位置內容和配置寄存器內容的總和。校驗和計算方法根據代碼保護設置不同而有所不同。
九、編程器與編程執行器通信
9.1 通信概述
編程器和編程執行器是主從關系,編程器發起通信,每次只能發送一個命令,編程執行器處理命令后返回一個響應。
9.2 通信接口和協議
Enhanced ICSP接口是一個使用PGC和PGD引腳實現的2線SPI接口。PGC作為時鐘輸入引腳,PGD用于發送命令數據和接收響應數據。數據在PGC的下降沿傳輸,在上升沿鎖存,使用16位模式,先傳輸最高有效位。
9.3 SPI速率
在Enhanced ICSP模式下,dsPIC30F使用快速內部RC振蕩器,有效系統時鐘頻率為1.84 MHz。由于SPI模塊工作在從模式,編程器必須將SPI時鐘速率限制在不超過1 MHz。
9.4 超時處理
編程執行器在向編程器發送響應時不使用看門狗定時器或超時機制。編程器應遵循通信協議,使用命令超時設置,若超時則重置編程執行器并重新開始編程。
十、ICSP模式
10.1 ICSP模式概述
ICSP模式是一種特殊的編程協議,允許對dsPIC30F編程執行器進行讀寫操作。它通過PGC和PGD引腳串行應用控制代碼和指令來實現。
10.2 ICSP操作
進入ICSP模式后,CPU處于空閑狀態,由內部狀態機控制執行。使用4位控制代碼(SIX和REGOUT)來命令CPU執行指令或讀取數據。
10.3 進入ICSP模式
通過將PGC和PGD保持為低電平,將MCLR/VPP升高到VIHH(高電壓),并執行額外步驟進入ICSP模式。
10.4 閃存內存編程
在ICSP模式下,閃存內存的寫和擦除操作由NVMCON寄存器控制。編程前需要解鎖NVMCON寄存器,設置WR控制位啟動編程周期,完成后清除WR控制位。
10.5 不同電壓系統下的內存擦除
- 正常電壓系統(VDD在4.5 - 5.5伏之間):使用NVMCON設置為0x407F進行批量擦除。
- 低電壓系統(VDD在2.5 - 4.5伏之間):需要逐行擦除代碼內存、執行內存和數據內存。
10.6 配置內存、代碼內存和數據EEPROM的讀寫
在ICSP模式下,通過一系列指令和操作對配置內存、代碼內存和數據EEPROM進行讀寫操作。
10.7 讀取應用ID字
讀取執行代碼內存中地址0x8005BE處的應用ID字,根據其值判斷編程執行器是否駐留在內存中。
10.8 退出ICSP模式
確認編程執行器駐留在內存中或加載編程執行器后,通過移除設備電源或將MCLR設置為VIL退出ICSP模式,然后按照設備編程流程進行編程。
十一、編程執行器編程到內存
11.1 概述
如果編程執行器不在執行內存中,需要使用ICSP和ICSP模式下的技術將其編程到執行內存中。先擦除執行內存,然后每次編程32個字。
11.2 編程驗證
編程完成后,通過讀取執行內存的內容并與編程器中存儲的編程執行器映像進行比較來驗證編程是否成功。
十二、AC/DC特性和時序要求
文檔提供了dsPIC30F在編程過程中的AC/DC特性和時序要求,包括電壓、電流、時鐘周期等參數,開發者在編程時需要遵循這些要求以確保編程的正確性。
十三、附錄
13.1 校驗和計算
詳細說明了不同型號設備在不同代碼保護狀態下的校驗和計算方法。
13.2 特定設備編程注意事項
對于dsPIC30F5011和dsPIC30F5013處理器,在芯片擦除前需要使用特定命令對FBS和FSS寄存器進行編程。
13.3 十六進制文件格式
介紹了Microchip開發工具使用的標準HEX格式(Intel? HEX 32 Format),以及文件中各部分的含義和處理方法。
13.4 修訂歷史
記錄了文檔的修訂信息,方便開發者了解文檔的更新情況。
通過以上詳細的編程規范,開發者可以更好地對dsPIC30F系列數字信號控制器進行編程操作。在實際應用中,我們還需要根據具體的設備和需求,靈活運用這些知識,確保編程的準確性和高效性。你在使用dsPIC30F進行開發時遇到過哪些問題呢?歡迎在評論區分享你的經驗和見解。
-
dsPIC30F
+關注
關注
1文章
71瀏覽量
24489 -
編程規范
+關注
關注
0文章
7瀏覽量
9025 -
數字信號控制器
+關注
關注
0文章
97瀏覽量
13850
發布評論請先 登錄
dsPIC30F系列數字信號控制器編程規范詳解
評論