官术网_书友最值得收藏!

第2章 Freescale HCS12和HCS12X系列單片機簡介

目前世界上的單片機或者微控制器的種類繁多,單片機供應商也有很多,例如Freescale、ATMEL、NXP、ST、Microchip、Infineon、TI、NEC等,其中Freescale(飛思卡爾)公司的8位、16位和32位單片機性能穩定、品種齊全,針對不同的應用領域可以選擇不同性能、型號的單片機。本章著重介紹Freescale公司的HCS12系列16位單片機的概況,并和HCS12X系列16位雙核單片機進行簡單比較,最后給出HCS12系列單片機最小系統中各部分的設計方案。

2.1 HCS12系列單片機概述

Freescale公司的16位單片機主要分為HC12系列、HCS12系列以及HCS12X系列。其中HC12系列單片機是在HC11系列的基礎上開發的,其核心是16位高速CPU12核,支持HC11系列所有指令、尋址方式和操作模式。HCS12系列單片機以速度更快的CPU12內核為核心,簡稱為S12系列。相比于HC12的8 MHz總線速度,典型的S12總線速度可以達到25 MHz。

2.1.1 HCS12系列單片機的命名規則

Freescale公司的單片機型號眾多,初次接觸的用戶面對眾多型號,可能不知該如何選擇。首先簡單介紹一下HCS12系列單片機的命名規則,以MC9S12DG128為例進行介紹。

① 表示質量認定狀態。MC表示完全合格產品,XC表示初始產品,PC表示預測試產品。

②表示存儲器類型。無表示片內帶ROM或者片內沒有程序存儲器,7表示片內帶EPROM或一次可編程ROM(OTP ROM),8表示片內帶EEPROM,9表示片內帶Flash存儲器。

③ 表示內核類型。S12表示16位單片機,S08表示8位單片機。

④ 表示系列。DG表示為D系列產品。

⑤ 表示存儲空間大小及版本。128表示128 KB的Flash存儲空間,B為Flash版本。

⑥ 表示工作溫度范圍。無表示工作溫度范圍是0℃~70℃,C表示工作溫度范圍是-40℃~85℃,V表示工作溫度范圍是-40℃~105℃,M表示工作溫度范圍是-40℃~125℃。

⑦ 表示封裝形式。FU表示80引腳QFP封裝,PV表示112引腳LQFP封裝。

⑧ 表示無鉛標志。E表示芯片生產過程無鉛。

2.1.2 HCS12系列單片機簡介

Freescale公司HCS12系列單片機分為很多子系列,各個子系列產品具有不同的特點和應用領域。表2.1列舉了HCS12各個子系列部分單片機的型號、主要特點、資源等基本情況介紹。

表2.1 HCS12系列單片機匯總表

2.2 HCS12X系列單片機概述

2.2.1 HCS12X系列單片機主要特點

Freescale公司于2005年推出HCS12X系列單片機(也稱為MCU),該系列是HCS12系列的增強型產品,基于S12 CPU內核,可以達到25 MHz的HCS12的2~5倍的性能。S12X系列增加了172條指令,可以執行32位運算,總線頻率最高可達40 MHz,并且改進了中斷處理能力。

S12X系列單片機采用復雜指令集計算機(CISC)架構,集成了中斷控制器,具有豐富的尋址方式。中斷有7個優先級,并且內核支持優先級的的調度,最多可以有117個中斷源。

S12X系列單片機的最大特點是增加了一個并行處理的外圍協處理器XGATE模塊,它是一個獨立于主處理器(S12XD)的可編程RISC內核。XGATE可作為一個高效的DMA控制器使用,能夠自主地實現外設與RAM之間的高速數據傳輸,并在數據傳送過程中靈活進行數據處理;XGATE也可作為一個單獨的算法單元完成運算功能,如通信協議的實現;XGATE還可作為虛擬外設使用,如使用通用I/O口模擬串行通信口功能,或對簡單的外設通過軟件包裝實現功能強大的個性化外設功能等。集成XGATE的目的就是在日益復雜的嵌入式系統中,減輕S12XD主處理器的負擔,以增強系統的數據吞吐能力和應用功能設計的靈活性。

S12X系列單片機與S12系列單片機的主要區別如表2.2所示。

表2.2 S12X系列單片機與S12系列單片機的主要區別

XGATE模塊大大提高了MCU處理應用程序的能力。通過承擔中斷源處理功能,從而降低了主處理器的負擔,使得中斷服務程序能夠在XGATE中處理的同時,主處理器可以并行的處理其他應用程序。通過表2.2的比較,可以近似地認為S12X核的性能是S12的5倍。

2.2.2 XGATE協處理器與主處理器的關系

在S12X系列中,中斷控制器硬件產生的中斷可以選擇由XGATE或者S12XD主處理器來處理。XGATE對于任何中斷的處理都會減輕主處理器的中斷負荷,并且XGATE完全有能力響應整個中斷。

從圖2.1中可以看到,一個開關中斷信號可以指向XGATE或者主處理器,如果指向XGATE,它就會執行所響應的中斷服務程序;當程序執行完成后,等待下一個中斷請求。另外有的寄存器可以使XGATE指向特殊的中斷信號,并且中斷優先級的等級可以設置為7個級別之一。如果有2個中斷請求同時產生,則處理器就會根據中斷級別的優先級高低來判斷,優先級高的中斷首先執行。這些中斷等級在S12XD主處理器和XGATE中相同。

圖2.1 使用主處理器或者XGATE的中斷響應過程

XGATE和主處理器完全一樣,是一個支持C編譯器的可編程內核。當中斷源產生時,它開始運行;在完成中斷任務以后,它會中止時鐘工作等待下次事件發生,以降低功耗。

XGATE與主處理器之間可相互中斷以進行同步。XGATE有一個特殊指令SIF,用于向主處理器提交中斷。通常SIF為XGATE線程的最后一條指令,用以觸發主處理器中斷。在默認情況下,此時XGATE的中斷矢量就對應于此前XGATE所處理的中斷,故由SIF所觸發的主處理器的中斷服務程序通常不必查詢中斷源。

XGATE是一個協處理器,它可以直接使用,幾乎可以直接進入所有的存儲空間。XGATE的創新特點就在于它以獨特的方式訪問MCU內部RAM單元,通過交換總線功能,MCU的內部總線允許交叉進入RAM區。當主處理器全速執行時,它訪問RAM只需半個時鐘總線周期,XGATE可以在另外半個時鐘總線周期訪問RAM。若主處理器不進入訪問RAM的周期內,則XGATE訪問RAM的速度就會是主處理器訪問RAM最高速度的2倍。

另外,XGATE有8個軟件中斷源。主處理器通過置位或清除XGATE的軟件觸發寄存器(XGSWT)中相應的位來觸發或清除這8個中斷源。需要注意的是:由于XGSWT屬于片上外設寄存器,所以XGATE也可以通過XGSWT的位設置向自己發出中斷信號。

2.2.3 XGATE的基本特性

XGATE協處理器結構如圖2.2所示,它具有以下基本特征。

圖2.2 XGATE協處理器結構

(1)精簡指令集內核

XGATE是一個16位的精簡指令集內核。內核擁有8個16位通用寄存器R0~R7,1個程序計數器PC,1個4位的條件碼寄存器CCR。其中R0恒為0,可用于對變量的快速清零或置位。R1和R7有額外用途:XGATE響應中斷時,硬件將中斷向量表中對應通道的1個16位字裝載到R1(通常用做數據指針),將棧指針裝載到R7,如圖2.3所示。

圖2.3 XGATE編程模式

(2)XGATE指令集

XGATE共有72條獨立的指令,指令時鐘最高可達100 MHz。XGATE的時鐘速度總是主處理器總線速度的2倍。XGATE的大部分指令是對通用寄存器的操作,為單周期指令。訪問存儲器的指令為雙周期指令。跳轉指令視條件而定可能為1個或2個周期指令。XGATE有一些特殊的比特提取及插入的單周期指令,特別適用于串行通信協議使用。

(3)XGATE訪問空間

S12X的全局存儲空間共有8 MB,XGATE可以訪問其中片內的64 KB空間。這64 KB空間包括2 KB的片上外設寄存器,30 KB的片上閃存和最大32 KB的片內RAM。注意XGATE不能訪問EEPROM空間或片外資源。XGATE的訪問空間完全限制在主處理器內部訪問空間范圍內。地址仲裁的規則是主處理器的優先級總高于XGATE,如圖2.4所示。

圖2.4 XGATE全局地址映射圖

(4)XGATE事件驅動線程

XGATE的代碼執行是由事件驅動的,這里的事件就是指中斷。所謂事件驅動就是指由中斷來觸發XGATE運行。沒有中斷時,XGATE不執行任何指令,從而也沒有功耗。可見XGATE的代碼就是一組中斷服務程序,沒有主程序或空閑時的循環程序。XGATE的中斷服務程序也稱做線程。

(5)互斥信號量

主處理器與XGATE之間常用的通信方式是共享資源。由于這兩個內核可以獨立異步的訪問內存及片上外設,就會產生數據完整性問題。為了保證共享數據的完整性, XGATE集成了8個硬件互斥信號量(Semaphore)。用戶可以通過硬件信號量來同步兩個內核對共享數據的訪問。信號量有3種狀態:釋放、主處理器鎖定和XGATE鎖定。每個內核在訪問共享資源前,應當首先鎖定相應的信號量;在訪問結束后應當釋放相應的信號量。

2.2.4 典型S12X系列單片機簡介

相比于S12系列單片機而言,S12X系列單片機的型號目前還是較少的,S12X系列單片機目前有以下幾個子系列:MC9S12XA系列、MC9S12XD系列、MC9S12XE系列、MC9S12XF系列、MC9S12XH系列和MC9S12XS系列。下面簡要介紹幾個子系列單片機的各自特點。

(1)MC9S12XA、MC9S12XB和MC9S12XD系列

這三個系列的單片機是以低成本和低功耗為目的設計的,具有良好的電磁兼容性和高效的代碼執行效率。MC9S12XA系列主要包括MC9S12XA256和MC9S12XA512兩種型號的單片機,其中MC9S12XA512包含外部總線接口EBI,模塊映像控制MMC功能,中斷控制器INT,用于監控HCS12X CPU和XGATE總線活動的調試模塊DBG和背景調試模式BDM功能,具有2個A/D模塊,每個為12通道10位分辨率,具有4個獨立暫停期限的定時器PIT,暫停期限可以在1~224總線時鐘周期之間選擇,同時還有CRG模塊,具有低噪聲/低功耗皮爾斯(Pierce)振蕩器、PLL、COP監視器、實時中斷、時鐘監控器等功能。

MC9S12XB系列目前主要包括MC9S12XB128和MC9S12XB256兩種型號的單片機。它們的總線頻率均為33 MHz,該系列單片機與MC9S12XD系列單片機完全兼容,相比于S12XD系列而言,S12XB系列單片機精簡了一些功能,并通過降低總線速率來減少成本。

(2)MC9S12XE系列

MC9S12XE系列單片機與MC9S12XD系列單片機完全兼容,同時提高了系統的集成功能。MC9S12XE系列單片機工作頻率為50 MHz,工作電壓為3.3~5.5 V,包括一個存儲器保護單元(MPU),用于防止軟件執行過程中的系統錯誤。此外XGATE也得到了加強,頻率可以達到100 MHz,同時與其他單片機上的XGATE模塊也是兼容的。

(3)MC9S12XF系列

MC9S12XF系列單片機除了包括其他一些S12X的共有功能外,還具有1個符合FlexRay協議V2.1的FlexRay控制器,FlexRay技術的引入使其網絡性能得到大幅提升, FlexRay網絡可用于車身、底盤和安全等領域應用。該系列目前主要包括MC9S12XFE128和MC9S12XFR128兩種型號的單片機,工作頻率可以達到38 MHz。

(4)MC9S12XS系列

MC9S12XS系列單片機是高性能MC9S12XE系列單片機的經濟性、高效性產品的補充,帶有一套為汽車車身和乘客舒適度應用而優化設計的改進型片上外圍設備、存儲器等模塊,可應用于汽車座椅控制模塊、空調控制模塊、各種車身控制模塊等的設計應用。

2.3 MC9S12DG128簡介

2.3.1 MC9S12DG128性能概述

MC9S12DG128只是HCS12家族中的一個成員。該器件包括大量的片上存儲器和外部I/O。MC9S12DG128是一個16位器件,由16位中央處理單元(HCS12 CPU)、128 KB Flash、8 KB RAM、2 KB EEPROM組成片內存儲器。同時還包括2個異步串行通信接口(SCI)、2個串行外設接口(SPI)和一個8通道輸入捕捉/輸出比較(IC/OC)增強型捕捉定時器(ECT)、2個8通道10位A/D轉換器(ADC)和一個8通道PWM。

MC9S12DG128還包括29個獨立的數字I/O口(A、B、K和E),20個獨立的數字I/O口具有中斷和喚醒功能。另外還具有2個CAN 2.0A/B標準兼容模塊(MSCAN12)和一個I2C總線。

MC9S12DG128具有內部16位數據通道,外部總線可以按照8位數據總線窄模式操作,所以可以和8位數據總線的存儲器連接,以降低成本。PLL電路允許根據系統需求調整電源功耗及性能。

MC9S12DG128主要特性包括:

● 16位HCS12 CPU;

● 內部存儲器:

? 128 KB Flash;

? 8 KB RAM;

? 2KB EEPROM。

● 外圍設備:

? 2個增強型串行通信接口(SCI);

? 2個串行外設接口(SPI);

? 2個MSCAN模塊;

? I2C總線接口;

? 2個8通道10位A/D;

? 8通道16位增強型捕捉定時器(ECT);

? 8通道8位或4通道16位PWM。

2.3.2 MC9S12DG128內部結構及引腳

MC9S12DG128有兩種封裝,分別是80引腳封裝和112引腳封裝。圖2.5為MC9S12DG128的內部結構框圖,其中功能模塊是按照112引腳封裝給出的;圖2.6為MC9S12DG128的112引腳封裝引腳圖;圖2.7為MC9S12DG128的80引腳封裝引腳圖。

圖2.5 MC9S12DG128內部結構框圖

圖2.6 MC9S12DG128 LQFP112封裝引腳圖

圖2.7 MC9S12DG128 QFP80封裝引腳圖

2.3.3 MC9S12DG128引腳功能

本節以112引腳MC9S12DG128單片機為例介紹部分引腳功能及參考電路。

1.XTAL和EXTAL(47、46)——振蕩器引腳

XTAL和EXTAL分別是晶體驅動輸出和外部時鐘輸入引腳。EXTAL引腳既可以接晶振,也可以接COMS兼容的時鐘信號,驅動內部時鐘發生電路,器件中所有的時鐘信號都來自該引腳輸入的時鐘。XTAL引腳為晶體驅動輸出,當EXTAL引腳外接時鐘時,該引腳懸空。時鐘電路的幾種接法如圖2.8、圖2.9和圖2.10所示。

圖2.8 Colpitts晶振連接(PE7=0)

圖2.9 Pierce晶振連接(PE7=1)

圖2.10 外部時鐘連接(PE7=0)

關于使用Colpitts時鐘連接電路還是Pierce時鐘連接電路,可以參考表2.3,表中對于兩種時鐘電路進行了比較說明。

表2.3 Colpitts時鐘連接和Pierce時鐘連接性能比較

2.XFC(44)——PLL環路濾波器引腳

PLL環路濾波器連接電路如圖2.11所示,PLL要求3個元件的無源濾波器連接到XFC引腳上。濾波器器件值因應用而異,計算濾波器的公式可以參見用戶指南,也可以簡單地使用Freescale公司提供的PLL濾波器計算器來計算。

圖2.11 PLL環路濾波器連接電路

3.RESET(42)——外部復位引腳

低電平有效的雙向控制信號。該引腳做輸入時,將其拉低,可將MCU初始化成默認狀態;如果時鐘監視器或者COP看門狗檢測到內部故障,該引腳作為開漏輸出引腳對外指示這種狀態。復位究竟是內部還是外部引起,是可以判別的。內部復位首先將該引腳拉低并保持131~134個系統時鐘周期然后釋放該引腳,經過64個系統時鐘周期后采樣該引腳電平,如果該引腳回到高電平,說明復位是由時鐘監視器或者COP看門狗電路引起,CPU獲得時鐘監視器或COP看門狗的復位向量;如果該引腳仍然保持低電平,就確定為外部復位,CPU獲得外部復位向量。為了保證時鐘監視器或者COP看門狗復位向量能夠被復位邏輯所識別,復位引腳上升到3.25 V的時間必須小于64個系統時鐘周期和11 μs,所以為了避免對復位信號的誤判發生,S12的復位電路不要使用簡單的RC復位電路。另外在HCS12 D系列上沒有低電壓復位(Low Voltage Reset,LVR)支持,推薦使用外部LVR電路確保當器件電源VDD下降到4.5 V以下時處于復位狀態。

4.BKGD(23)——背景調試引腳

BKGD采用自定協議接收串行的背景調試命令,并發送命令執行結果,進行實時在線調試。Freescale定義的標準BDM調試插頭如圖2.12所示。

圖2.12 標準BDM調試插頭

5.MODA、MODB、MODC——模式選擇輸入引腳

這三個引腳在單片機復位期間的狀態決定了其運行模式。在復位期間,MODA、MODB具有內部下拉,關于運行模式的討論詳見后文。

6.IRQ/PE1(55)——可屏蔽中斷請求

可屏蔽外部中斷輸入引腳,可以用于從STOP或WAIT模式喚醒單片機。可以通過程序選擇該引腳是否和中斷邏輯連接,以及選擇下降沿還是低電平觸發。復位后,IRQ默認為低電平觸發方式,同時在CCR寄存器中的I位為1,IRQ中斷被屏蔽,可以通過軟件清除或者置位CCR寄存器中的I位來使能或禁止所有可屏蔽中斷。

7.XIRQ/PE0(56)——不可屏蔽中斷請求

不可屏蔽外部中斷輸入引腳,可用于在STOP或WAIT模式下喚醒單片機。在復位階段,CCR寄存器中的X位為1,不可屏蔽中斷被屏蔽。當系統初始化后,可以通過程序清除CCR寄存器中的X位,使能不可屏蔽中斷。注意,X位一旦被清零,就不能再通過軟件的方式置1。不可屏蔽中斷經常用于處理系統掉電或者硬件故障等特殊應用要求。關于中斷及復位的論述,后文相關章節會有詳細的論述。

8.電源相關引腳

MC9S12DG128的電源引腳匯總參見表2.4。

表2.4 MC9S12DG128的電源引腳匯總

(1)VDD1,2和VSS1,2——內部穩壓器輸出電源和地

電源通過VDD和VSS提供給單片機,直接對內部2.5 V穩壓器供電。如果內部穩壓器使能,2.5 V來自于內部穩壓器;如果VREGEN引腳接地,內部穩壓器關閉,這兩對引腳上需要外部提供2.5 V電源。

(2)VDDR和VSSR——外部電源和地

這一組電源提供I/O驅動和內部穩壓器輸入。為了滿足信號的快速上升要求,一般要求電源能提供瞬時大電流,因此要在兩個電源引腳之間放置高頻旁路電容,并且要盡量靠近單片機,具體旁路電容要求取決于單片機引腳負載。

(3)VDDX和VSSX——I/O驅動器電源和地

這一組電源提供I/O驅動的電源和地,要在兩個引腳之間放置旁路電容,并且盡量靠近單片機。

(4)VDDA和VSSA——A/D轉換器模塊工作電源和地

這一組電源供給A/D轉換器,同時為內部穩壓器提供參考電壓,兩個引腳之間需要放置旁路電容。

(5)VRH和VRL——A/D轉換器模塊參考電源和地

這一組電源為A/D轉換器提供參考電壓,其精度和穩定性直接影響轉換結果,因此這一組電源要求品質較高,不能受數字電路部分影響,但功率較小,可以考慮單獨供電。

(6)VDDPLL和VSSPLL——PLL供電電源和地

當內部穩壓器關閉時,這一組電源必須外接2.5 V電源。內部穩壓器工作時,該引腳的電壓由內部穩壓器提供。

(7)VERGEN——內部穩壓器選擇引腳

該引腳接高電平使能內部穩壓器,該引腳接地禁止內部穩壓器。如果該引腳接地,內部穩壓器禁止,VDD1,2和VDDPLL都必須外接2.5 V電源供電。

2.4 MC9S12DG128的運行模式

MC9S12DG128可以通過三個引腳MODC、MODB和MODA來選擇單片機的運行模式。共有普通模式和特殊模式兩大類的運行模式。

MC9S12DG128的模式選擇詳見表2.5。

表2.5 MC9S12DG128的模式選擇表

2.4.1 普通運行模式

普通模式共分三種,都是應用系統開發結束后的最終運行模式,它們都支持背景調試模式(BDM),但對于某些操作必須首先將BDM使能,然后再激活后才能通過BDM命令進行調試。

1.普通單芯片模式

該模式無外部總線,端口A、端口B和端口E被設置成通用I/O接口。端口E的兩個引腳PE1和PE0僅能工作在內部上拉的輸入方式,其他22個引腳均可設置為輸入或輸出,不過復位后它們均被默認設置為高阻輸入方式,另外復位后,端口E的上拉有效,端口A和端口B的上拉被禁止。

2.普通寬擴展模式

端口A和端口B為外部地址和數據總線,其中A15~A8和D15~D8分時使用端口A的8個引腳,A7~A0和D7~D0分時使用端口B的8個引腳。R/W等總線控制信號復位后默認有效。

3.普通窄擴展模式

端口A和端口B為16位外部地址總線,其中端口A輸出高8位(A15~A8),其中端口B輸出低8位(A7~A0),8位外部數據總線D7~D0與高8位地址線分時復用端口A的8個引腳。

2.4.2 特殊運行模式

特殊模式主要用于系統開發和器件測試。

1.特殊單芯片模式

該模式可用于強制MCU激活BDM,以允許通過BKGD引腳進行系統調試。在該模式下,MCU不像在其他模式下那樣取中斷向量,然后執行應用程序代碼等,而是以激活的BDM固件接收來自BKGD引腳的串行命令,并控制CPU的運行。該模式下沒有外部總線,MCU作為一個獨立器件運行,所有程序和數據存儲空間均位于片內,外部接口均可作為通用I/O。

2.單片運行模式

單片運行模式是MC9S12單片及最常用的一種運行模式。系統復位時,CPU檢測到MODA(PE5)和MODB(PE6)引腳為低電平時進入單片運行模式。單片運行模式又分為普通單片模式和特殊單片模式。普通單片模式是正常運行應用程序時應使用的模式,特殊單片模式是指BDM調試模式。進入特殊模式時,要求單片及復位時引腳MODC (BKGD)為低電平。通常,當單片及輸入引腳浮空時,CPU默認高電平,BKGD引腳上的低電平是由BDM調試工具的相應引腳提供的。故可以理解為,當插上BDM頭時,可進入特殊單片模式;當不插BDM頭時,自動進入普通單片模式。

注意:MCU進入單片模式還是擴展模式或者其他模式,是由在復位時復位信號上升沿鎖存MODA、MODB等引腳上的輸入電平狀態到運行模式寄存器(MODE Register)中相應位來實現的,模式寄存器的默認地址為$000B。在運行過程中,應用程序是可以動態地在單片模式和擴展模式之間相互切換的,方法是向運行模式寄存器寫入不同的運行模式控制字。

3.擴展運行模式

80引腳的單片機A、B、K口都沒有引出,故不能使用擴展運行模式。

擴展運行模式又有普通運行模式和特殊運行模式之分,其區別是有些寄存器只能在特殊模式下讀寫。

2.5 MC9S12DG128的存儲器映射

S12系列單片機片內有Flash、RAM和EEPROM,不同型號內置存儲器容量不同。MC9S12DG128單片機內置128 KB Flash、8 KB RAM和2 KB EEPROM。

2.5.1 基本內存空間分配

以CPU12為核心的單片機有多種運行模式,其中單片方式是最典型的應用模式。圖2.13給出了MC9S12DG128單片機在單片模式下的存儲器映射圖。

圖2.13 MC9S12DG128單片模式下存儲器映射

MC9S12DG128復位時,I/O寄存器占用從$0000開始的1 KB地址空間($0000~$03FF),雖然用戶可以將I/O寄存器重新定義到前32 KB地址空間的任何一個2 KB空間的前1 KB,但最好不要這樣做。I/O空間放在$0000開始處,使得讀寫$0000到$00FF這256個I/O寄存器可以使用直接尋址方式,直接尋址方式的指令比擴展尋址方式短1 B,速度會比讀寫其他地址空間快一些。別的存儲器模塊(如EEPROM、RAM和部分Flash)也都可以定義到其他地址空間。如果不是特別必要時,盡量使用系統的默認設置。

從$0400到$1000是EEPROM空間。一些CPU12構成的單片機有4 KB的EEPROM,因為從$0000開始的1 KB空間被I/O寄存器占用了,不重新定義EEPROM的地址的話,實際可以使用的EEPROM只有3 KB。若一定要使用片內的4 KB EEPROM,則要重新將EEPROM定義到其他空間,或者將I/O寄存器移到其他空間。

從$000F到$3FFF是RAM空間,不同型號的CPU12構成的單片機有不同的片內RAM配置。從2 KB、4 KB、8 KB到12 KB。MC9S12DG128默認為$0000到$1FFF(8 KB),可以在程序中將其映射到$2000到$3FFF的8 KB空間。

$4000到$FFFF的48 KB為Flash存儲器空間,分成3個16 KB空間,最后16 KB空間的最后256 B,即$FF00到$FFFF是中斷向量表空間。

CPU12構成的單片機還有一種特殊工作方式(特殊單片方式或特殊擴展方式),被稱為調試方式或BDM方式。在這種方式下,CPU12內部的256 B的ROM將$FE00到$FEFF的前256 B的Flash空間覆蓋。當然,覆蓋的空間在BDM模式下還是可以通過BDM指令訪問的。

2.5.2 內存空間的擴展

CPU12構成的單片機片內Flash可以超過64 KB尋址空間達到128 KB、256 KB或者512 KB,其中MC9S12DG128片內Flash為128 KB,如圖2.14所示。

圖2.14 MC9S12DG128的內存空間擴展

128 KB的Flash先被分成每塊64 KB,共2塊(Block0和Block1);每塊細分為每頁16 KB,共8頁;每頁再細分每段為4 KB、2 KB、1 KB或512 B。

在片內Flash在64 KB及以上的CPU12構成的單片機,有一個存儲器頁面寄存器PPAGE,該寄存器為5位,最多可管理32個16 KB存儲器頁,故CPU12單片機最多可以有512 KB片內Flash。MC9S12DG128的128 KB Flash可分為16 KB存儲器,每個存儲器頁面編號為$38~$3F的某個值。CPU12在64 KB內存的$8000到$BFFF這一段開了一個窗口,永遠只能看到頁面寄存器的某一頁,這里指$38~$3D這6個頁面。128 KB的Flash中,$3F這一頁永遠定位在$C000~$FFFF這一段,$3E頁永遠定位在$4000到$7FFF這一段,另外6頁只能通過$8000~$BFFF這一窗口訪問。Flash的換頁是通過向PPAGE寄存器寫入頁面編號實現的。

Flash存儲器頁面寄存器PPAGE的值$00~$2F留給擴展方式下使用外部存儲器時對外部存儲器分頁使用。

2.5.3 相關寄存器

CPU12的內部寄存器、RAM、EEPROM可以通過設置INITRG、INITRM、INITEE來重新分配它們的位置。這些寄存器只能寫一次,建議在初始化時分配寄存器、RAM、EEPROM的位置。對每個INITxx賦值后,在其指令后需插入一空指令。如果映射有沖突,寄存器具有最高優先級,與其重疊的RAM和EEPROM此時無效。存儲分配優先級從高到低依次為:BDM ROM(激活的情況下)、寄存器區、RAM、EEPROM、Flash和外部擴展存儲器。

以下簡要介紹INITRG、INITRM、INITEE 3個初始化寄存器。

1.內部RAM位置初始化寄存器

內部RAM位置初始化寄存器(Initialization of Internal RAM Position Register, INITRM)如圖2.15所示。

圖2.15 內部RAM位置初始化寄存器

讀:任何時刻。

寫:普通模式和仿真模式下僅可以寫一次,特殊模式下任何時刻可寫操作。

RAM15~RAM11:內部RAM映射位置。RAM的映射是通過修改該寄存器中的5個二進制位來實現的,即指定內部RAM基地地的最高5位。RAM空間可以映射到64 KB空間內的任何16 KB塊中。

RAMHAL:RAM高地址對齊。

● 0表示RAM和內部地址空間最低端對齊;

● 1表示RAM和內部地址空間最高端對齊。

因為MC9S12DG128內部有8 KB的RAM空間,映射區域8 KB,所以RAM12~RAM11位沒有意義,取0或1都可以。配置RAM空間僅僅使用到RAM15~RAM13(即RAM15~RAM13用來決定RAM空間映射到哪個16 KB塊中),復位后RAM默認位置在$0000~$1FFF,如果要將RAM空間定位到$2000~$3FFF,只要將RAM15~RAM13設置為001就可以了,此時INITRM=0×20。

2.內部寄存器位置初始化寄存器

內部寄存器位置初始化寄存器(Initialization of Internal Registers Position Register, INITRG)如圖2.16所示。

圖2.16 內部寄存器位置初始化寄存器

讀:任何時刻。

寫:普通模式和仿真模式下僅可以寫一次,特殊模式下任何時刻可寫操作。

REG14~REG11:內部寄存器映射位置。指定內部寄存器區基地址的最高5位。MC9S12DG128內部有1 KB的寄存器空間,復位后默認首地址為$0000,運行時可以重新映射到系統地址空間前32 KB的任何2 KB空間邊界處,實際使用前面的1KB。可以設置的最小基地址為$0000,最大基地址為$7FFF,而$0000~$00FF這256 B是可以使用直接尋址方式的,所以寄存器默認的地址空間也從$0000開始。

3.內部EEPROM位置初始化寄存器

內部EEPROM位置初始化寄存器(Initialization of Internal EEPROM Position Register, INITEE)如圖2.17所示。

圖2.17 內部EEPROM位置初始化寄存器

讀:任何時刻。

寫:所有器件在任何時刻可以寫EEON位。大多數器件的EE11~EE15位能夠在任何模式下任何時刻寫入。對于某些器件,EE11~EE15位在普通模式和仿真模式下僅一次寫入;特殊模式下任何時刻可寫操作,具體權限請參考相應器件的用戶手冊。

EE15~EE11:內部EEPROM映射位置,指定內部EEPROM基地址的最高5位。

EEON:使能EEPROM。

● 0表示禁用EEPROM;

● 1表示使能EEPROM,地址由EE11~EE15決定。

● 配置INITEE位,當INITEE=0×11時,則EEPROM基地址從$1000開始。

主站蜘蛛池模板: 开封市| 包头市| 石泉县| 巫溪县| 克山县| 佛山市| 于田县| 海兴县| 金坛市| 高邮市| 芦山县| 民勤县| 辛集市| 汤原县| 抚松县| 鸡西市| 峡江县| 昭平县| 沙湾县| 宁南县| 长宁县| 海林市| 皮山县| 衡南县| 贺州市| 扶余县| 西城区| 特克斯县| 巴林左旗| 武强县| 习水县| 普兰县| 泰兴市| 梁平县| 开化县| 蕉岭县| 梅河口市| 永善县| 洞头县| 南岸区| 赤城县|