- 基于HCS12的嵌入式系統(tǒng)設(shè)計(jì)
- 吳曄 張陽 滕勤編著
- 188字
- 2018-12-27 19:59:20
第2章 Freescale HCS12和HCS12X系列單片機(jī)簡介
目前世界上的單片機(jī)或者微控制器的種類繁多,單片機(jī)供應(yīng)商也有很多,例如Freescale、ATMEL、NXP、ST、Microchip、Infineon、TI、NEC等,其中Freescale(飛思卡爾)公司的8位、16位和32位單片機(jī)性能穩(wěn)定、品種齊全,針對不同的應(yīng)用領(lǐng)域可以選擇不同性能、型號的單片機(jī)。本章著重介紹Freescale公司的HCS12系列16位單片機(jī)的概況,并和HCS12X系列16位雙核單片機(jī)進(jìn)行簡單比較,最后給出HCS12系列單片機(jī)最小系統(tǒng)中各部分的設(shè)計(jì)方案。
2.1 HCS12系列單片機(jī)概述
Freescale公司的16位單片機(jī)主要分為HC12系列、HCS12系列以及HCS12X系列。其中HC12系列單片機(jī)是在HC11系列的基礎(chǔ)上開發(fā)的,其核心是16位高速CPU12核,支持HC11系列所有指令、尋址方式和操作模式。HCS12系列單片機(jī)以速度更快的CPU12內(nèi)核為核心,簡稱為S12系列。相比于HC12的8 MHz總線速度,典型的S12總線速度可以達(dá)到25 MHz。
2.1.1 HCS12系列單片機(jī)的命名規(guī)則
Freescale公司的單片機(jī)型號眾多,初次接觸的用戶面對眾多型號,可能不知該如何選擇。首先簡單介紹一下HCS12系列單片機(jī)的命名規(guī)則,以MC9S12DG128為例進(jìn)行介紹。

① 表示質(zhì)量認(rèn)定狀態(tài)。MC表示完全合格產(chǎn)品,XC表示初始產(chǎn)品,PC表示預(yù)測試產(chǎn)品。
②表示存儲(chǔ)器類型。無表示片內(nèi)帶ROM或者片內(nèi)沒有程序存儲(chǔ)器,7表示片內(nèi)帶EPROM或一次可編程ROM(OTP ROM),8表示片內(nèi)帶EEPROM,9表示片內(nèi)帶Flash存儲(chǔ)器。
③ 表示內(nèi)核類型。S12表示16位單片機(jī),S08表示8位單片機(jī)。
④ 表示系列。DG表示為D系列產(chǎn)品。
⑤ 表示存儲(chǔ)空間大小及版本。128表示128 KB的Flash存儲(chǔ)空間,B為Flash版本。
⑥ 表示工作溫度范圍。無表示工作溫度范圍是0℃~70℃,C表示工作溫度范圍是-40℃~85℃,V表示工作溫度范圍是-40℃~105℃,M表示工作溫度范圍是-40℃~125℃。
⑦ 表示封裝形式。FU表示80引腳QFP封裝,PV表示112引腳LQFP封裝。
⑧ 表示無鉛標(biāo)志。E表示芯片生產(chǎn)過程無鉛。
2.1.2 HCS12系列單片機(jī)簡介
Freescale公司HCS12系列單片機(jī)分為很多子系列,各個(gè)子系列產(chǎn)品具有不同的特點(diǎn)和應(yīng)用領(lǐng)域。表2.1列舉了HCS12各個(gè)子系列部分單片機(jī)的型號、主要特點(diǎn)、資源等基本情況介紹。
表2.1 HCS12系列單片機(jī)匯總表

2.2 HCS12X系列單片機(jī)概述
2.2.1 HCS12X系列單片機(jī)主要特點(diǎn)
Freescale公司于2005年推出HCS12X系列單片機(jī)(也稱為MCU),該系列是HCS12系列的增強(qiáng)型產(chǎn)品,基于S12 CPU內(nèi)核,可以達(dá)到25 MHz的HCS12的2~5倍的性能。S12X系列增加了172條指令,可以執(zhí)行32位運(yùn)算,總線頻率最高可達(dá)40 MHz,并且改進(jìn)了中斷處理能力。
S12X系列單片機(jī)采用復(fù)雜指令集計(jì)算機(jī)(CISC)架構(gòu),集成了中斷控制器,具有豐富的尋址方式。中斷有7個(gè)優(yōu)先級,并且內(nèi)核支持優(yōu)先級的的調(diào)度,最多可以有117個(gè)中斷源。
S12X系列單片機(jī)的最大特點(diǎn)是增加了一個(gè)并行處理的外圍協(xié)處理器XGATE模塊,它是一個(gè)獨(dú)立于主處理器(S12XD)的可編程RISC內(nèi)核。XGATE可作為一個(gè)高效的DMA控制器使用,能夠自主地實(shí)現(xiàn)外設(shè)與RAM之間的高速數(shù)據(jù)傳輸,并在數(shù)據(jù)傳送過程中靈活進(jìn)行數(shù)據(jù)處理;XGATE也可作為一個(gè)單獨(dú)的算法單元完成運(yùn)算功能,如通信協(xié)議的實(shí)現(xiàn);XGATE還可作為虛擬外設(shè)使用,如使用通用I/O口模擬串行通信口功能,或?qū)唵蔚耐庠O(shè)通過軟件包裝實(shí)現(xiàn)功能強(qiáng)大的個(gè)性化外設(shè)功能等。集成XGATE的目的就是在日益復(fù)雜的嵌入式系統(tǒng)中,減輕S12XD主處理器的負(fù)擔(dān),以增強(qiáng)系統(tǒng)的數(shù)據(jù)吞吐能力和應(yīng)用功能設(shè)計(jì)的靈活性。
S12X系列單片機(jī)與S12系列單片機(jī)的主要區(qū)別如表2.2所示。
表2.2 S12X系列單片機(jī)與S12系列單片機(jī)的主要區(qū)別

XGATE模塊大大提高了MCU處理應(yīng)用程序的能力。通過承擔(dān)中斷源處理功能,從而降低了主處理器的負(fù)擔(dān),使得中斷服務(wù)程序能夠在XGATE中處理的同時(shí),主處理器可以并行的處理其他應(yīng)用程序。通過表2.2的比較,可以近似地認(rèn)為S12X核的性能是S12的5倍。
2.2.2 XGATE協(xié)處理器與主處理器的關(guān)系
在S12X系列中,中斷控制器硬件產(chǎn)生的中斷可以選擇由XGATE或者S12XD主處理器來處理。XGATE對于任何中斷的處理都會(huì)減輕主處理器的中斷負(fù)荷,并且XGATE完全有能力響應(yīng)整個(gè)中斷。
從圖2.1中可以看到,一個(gè)開關(guān)中斷信號可以指向XGATE或者主處理器,如果指向XGATE,它就會(huì)執(zhí)行所響應(yīng)的中斷服務(wù)程序;當(dāng)程序執(zhí)行完成后,等待下一個(gè)中斷請求。另外有的寄存器可以使XGATE指向特殊的中斷信號,并且中斷優(yōu)先級的等級可以設(shè)置為7個(gè)級別之一。如果有2個(gè)中斷請求同時(shí)產(chǎn)生,則處理器就會(huì)根據(jù)中斷級別的優(yōu)先級高低來判斷,優(yōu)先級高的中斷首先執(zhí)行。這些中斷等級在S12XD主處理器和XGATE中相同。

圖2.1 使用主處理器或者XGATE的中斷響應(yīng)過程
XGATE和主處理器完全一樣,是一個(gè)支持C編譯器的可編程內(nèi)核。當(dāng)中斷源產(chǎn)生時(shí),它開始運(yùn)行;在完成中斷任務(wù)以后,它會(huì)中止時(shí)鐘工作等待下次事件發(fā)生,以降低功耗。
XGATE與主處理器之間可相互中斷以進(jìn)行同步。XGATE有一個(gè)特殊指令SIF,用于向主處理器提交中斷。通常SIF為XGATE線程的最后一條指令,用以觸發(fā)主處理器中斷。在默認(rèn)情況下,此時(shí)XGATE的中斷矢量就對應(yīng)于此前XGATE所處理的中斷,故由SIF所觸發(fā)的主處理器的中斷服務(wù)程序通常不必查詢中斷源。
XGATE是一個(gè)協(xié)處理器,它可以直接使用,幾乎可以直接進(jìn)入所有的存儲(chǔ)空間。XGATE的創(chuàng)新特點(diǎn)就在于它以獨(dú)特的方式訪問MCU內(nèi)部RAM單元,通過交換總線功能,MCU的內(nèi)部總線允許交叉進(jìn)入RAM區(qū)。當(dāng)主處理器全速執(zhí)行時(shí),它訪問RAM只需半個(gè)時(shí)鐘總線周期,XGATE可以在另外半個(gè)時(shí)鐘總線周期訪問RAM。若主處理器不進(jìn)入訪問RAM的周期內(nèi),則XGATE訪問RAM的速度就會(huì)是主處理器訪問RAM最高速度的2倍。
另外,XGATE有8個(gè)軟件中斷源。主處理器通過置位或清除XGATE的軟件觸發(fā)寄存器(XGSWT)中相應(yīng)的位來觸發(fā)或清除這8個(gè)中斷源。需要注意的是:由于XGSWT屬于片上外設(shè)寄存器,所以XGATE也可以通過XGSWT的位設(shè)置向自己發(fā)出中斷信號。
2.2.3 XGATE的基本特性
XGATE協(xié)處理器結(jié)構(gòu)如圖2.2所示,它具有以下基本特征。

圖2.2 XGATE協(xié)處理器結(jié)構(gòu)
(1)精簡指令集內(nèi)核
XGATE是一個(gè)16位的精簡指令集內(nèi)核。內(nèi)核擁有8個(gè)16位通用寄存器R0~R7,1個(gè)程序計(jì)數(shù)器PC,1個(gè)4位的條件碼寄存器CCR。其中R0恒為0,可用于對變量的快速清零或置位。R1和R7有額外用途:XGATE響應(yīng)中斷時(shí),硬件將中斷向量表中對應(yīng)通道的1個(gè)16位字裝載到R1(通常用做數(shù)據(jù)指針),將棧指針裝載到R7,如圖2.3所示。

圖2.3 XGATE編程模式
(2)XGATE指令集
XGATE共有72條獨(dú)立的指令,指令時(shí)鐘最高可達(dá)100 MHz。XGATE的時(shí)鐘速度總是主處理器總線速度的2倍。XGATE的大部分指令是對通用寄存器的操作,為單周期指令。訪問存儲(chǔ)器的指令為雙周期指令。跳轉(zhuǎn)指令視條件而定可能為1個(gè)或2個(gè)周期指令。XGATE有一些特殊的比特提取及插入的單周期指令,特別適用于串行通信協(xié)議使用。
(3)XGATE訪問空間
S12X的全局存儲(chǔ)空間共有8 MB,XGATE可以訪問其中片內(nèi)的64 KB空間。這64 KB空間包括2 KB的片上外設(shè)寄存器,30 KB的片上閃存和最大32 KB的片內(nèi)RAM。注意XGATE不能訪問EEPROM空間或片外資源。XGATE的訪問空間完全限制在主處理器內(nèi)部訪問空間范圍內(nèi)。地址仲裁的規(guī)則是主處理器的優(yōu)先級總高于XGATE,如圖2.4所示。

圖2.4 XGATE全局地址映射圖
(4)XGATE事件驅(qū)動(dòng)線程
XGATE的代碼執(zhí)行是由事件驅(qū)動(dòng)的,這里的事件就是指中斷。所謂事件驅(qū)動(dòng)就是指由中斷來觸發(fā)XGATE運(yùn)行。沒有中斷時(shí),XGATE不執(zhí)行任何指令,從而也沒有功耗??梢奨GATE的代碼就是一組中斷服務(wù)程序,沒有主程序或空閑時(shí)的循環(huán)程序。XGATE的中斷服務(wù)程序也稱做線程。
(5)互斥信號量
主處理器與XGATE之間常用的通信方式是共享資源。由于這兩個(gè)內(nèi)核可以獨(dú)立異步的訪問內(nèi)存及片上外設(shè),就會(huì)產(chǎn)生數(shù)據(jù)完整性問題。為了保證共享數(shù)據(jù)的完整性, XGATE集成了8個(gè)硬件互斥信號量(Semaphore)。用戶可以通過硬件信號量來同步兩個(gè)內(nèi)核對共享數(shù)據(jù)的訪問。信號量有3種狀態(tài):釋放、主處理器鎖定和XGATE鎖定。每個(gè)內(nèi)核在訪問共享資源前,應(yīng)當(dāng)首先鎖定相應(yīng)的信號量;在訪問結(jié)束后應(yīng)當(dāng)釋放相應(yīng)的信號量。
2.2.4 典型S12X系列單片機(jī)簡介
相比于S12系列單片機(jī)而言,S12X系列單片機(jī)的型號目前還是較少的,S12X系列單片機(jī)目前有以下幾個(gè)子系列:MC9S12XA系列、MC9S12XD系列、MC9S12XE系列、MC9S12XF系列、MC9S12XH系列和MC9S12XS系列。下面簡要介紹幾個(gè)子系列單片機(jī)的各自特點(diǎn)。
(1)MC9S12XA、MC9S12XB和MC9S12XD系列
這三個(gè)系列的單片機(jī)是以低成本和低功耗為目的設(shè)計(jì)的,具有良好的電磁兼容性和高效的代碼執(zhí)行效率。MC9S12XA系列主要包括MC9S12XA256和MC9S12XA512兩種型號的單片機(jī),其中MC9S12XA512包含外部總線接口EBI,模塊映像控制MMC功能,中斷控制器INT,用于監(jiān)控HCS12X CPU和XGATE總線活動(dòng)的調(diào)試模塊DBG和背景調(diào)試模式BDM功能,具有2個(gè)A/D模塊,每個(gè)為12通道10位分辨率,具有4個(gè)獨(dú)立暫停期限的定時(shí)器PIT,暫停期限可以在1~224總線時(shí)鐘周期之間選擇,同時(shí)還有CRG模塊,具有低噪聲/低功耗皮爾斯(Pierce)振蕩器、PLL、COP監(jiān)視器、實(shí)時(shí)中斷、時(shí)鐘監(jiān)控器等功能。
MC9S12XB系列目前主要包括MC9S12XB128和MC9S12XB256兩種型號的單片機(jī)。它們的總線頻率均為33 MHz,該系列單片機(jī)與MC9S12XD系列單片機(jī)完全兼容,相比于S12XD系列而言,S12XB系列單片機(jī)精簡了一些功能,并通過降低總線速率來減少成本。
(2)MC9S12XE系列
MC9S12XE系列單片機(jī)與MC9S12XD系列單片機(jī)完全兼容,同時(shí)提高了系統(tǒng)的集成功能。MC9S12XE系列單片機(jī)工作頻率為50 MHz,工作電壓為3.3~5.5 V,包括一個(gè)存儲(chǔ)器保護(hù)單元(MPU),用于防止軟件執(zhí)行過程中的系統(tǒng)錯(cuò)誤。此外XGATE也得到了加強(qiáng),頻率可以達(dá)到100 MHz,同時(shí)與其他單片機(jī)上的XGATE模塊也是兼容的。
(3)MC9S12XF系列
MC9S12XF系列單片機(jī)除了包括其他一些S12X的共有功能外,還具有1個(gè)符合FlexRay協(xié)議V2.1的FlexRay控制器,F(xiàn)lexRay技術(shù)的引入使其網(wǎng)絡(luò)性能得到大幅提升, FlexRay網(wǎng)絡(luò)可用于車身、底盤和安全等領(lǐng)域應(yīng)用。該系列目前主要包括MC9S12XFE128和MC9S12XFR128兩種型號的單片機(jī),工作頻率可以達(dá)到38 MHz。
(4)MC9S12XS系列
MC9S12XS系列單片機(jī)是高性能MC9S12XE系列單片機(jī)的經(jīng)濟(jì)性、高效性產(chǎn)品的補(bǔ)充,帶有一套為汽車車身和乘客舒適度應(yīng)用而優(yōu)化設(shè)計(jì)的改進(jìn)型片上外圍設(shè)備、存儲(chǔ)器等模塊,可應(yīng)用于汽車座椅控制模塊、空調(diào)控制模塊、各種車身控制模塊等的設(shè)計(jì)應(yīng)用。
2.3 MC9S12DG128簡介
2.3.1 MC9S12DG128性能概述
MC9S12DG128只是HCS12家族中的一個(gè)成員。該器件包括大量的片上存儲(chǔ)器和外部I/O。MC9S12DG128是一個(gè)16位器件,由16位中央處理單元(HCS12 CPU)、128 KB Flash、8 KB RAM、2 KB EEPROM組成片內(nèi)存儲(chǔ)器。同時(shí)還包括2個(gè)異步串行通信接口(SCI)、2個(gè)串行外設(shè)接口(SPI)和一個(gè)8通道輸入捕捉/輸出比較(IC/OC)增強(qiáng)型捕捉定時(shí)器(ECT)、2個(gè)8通道10位A/D轉(zhuǎn)換器(ADC)和一個(gè)8通道PWM。
MC9S12DG128還包括29個(gè)獨(dú)立的數(shù)字I/O口(A、B、K和E),20個(gè)獨(dú)立的數(shù)字I/O口具有中斷和喚醒功能。另外還具有2個(gè)CAN 2.0A/B標(biāo)準(zhǔn)兼容模塊(MSCAN12)和一個(gè)I2C總線。
MC9S12DG128具有內(nèi)部16位數(shù)據(jù)通道,外部總線可以按照8位數(shù)據(jù)總線窄模式操作,所以可以和8位數(shù)據(jù)總線的存儲(chǔ)器連接,以降低成本。PLL電路允許根據(jù)系統(tǒng)需求調(diào)整電源功耗及性能。
MC9S12DG128主要特性包括:
● 16位HCS12 CPU;
● 內(nèi)部存儲(chǔ)器:
? 128 KB Flash;
? 8 KB RAM;
? 2KB EEPROM。
● 外圍設(shè)備:
? 2個(gè)增強(qiáng)型串行通信接口(SCI);
? 2個(gè)串行外設(shè)接口(SPI);
? 2個(gè)MSCAN模塊;
? I2C總線接口;
? 2個(gè)8通道10位A/D;
? 8通道16位增強(qiáng)型捕捉定時(shí)器(ECT);
? 8通道8位或4通道16位PWM。
2.3.2 MC9S12DG128內(nèi)部結(jié)構(gòu)及引腳
MC9S12DG128有兩種封裝,分別是80引腳封裝和112引腳封裝。圖2.5為MC9S12DG128的內(nèi)部結(jié)構(gòu)框圖,其中功能模塊是按照112引腳封裝給出的;圖2.6為MC9S12DG128的112引腳封裝引腳圖;圖2.7為MC9S12DG128的80引腳封裝引腳圖。

圖2.5 MC9S12DG128內(nèi)部結(jié)構(gòu)框圖

圖2.6 MC9S12DG128 LQFP112封裝引腳圖

圖2.7 MC9S12DG128 QFP80封裝引腳圖
2.3.3 MC9S12DG128引腳功能
本節(jié)以112引腳MC9S12DG128單片機(jī)為例介紹部分引腳功能及參考電路。
1.XTAL和EXTAL(47、46)——振蕩器引腳
XTAL和EXTAL分別是晶體驅(qū)動(dòng)輸出和外部時(shí)鐘輸入引腳。EXTAL引腳既可以接晶振,也可以接COMS兼容的時(shí)鐘信號,驅(qū)動(dòng)內(nèi)部時(shí)鐘發(fā)生電路,器件中所有的時(shí)鐘信號都來自該引腳輸入的時(shí)鐘。XTAL引腳為晶體驅(qū)動(dòng)輸出,當(dāng)EXTAL引腳外接時(shí)鐘時(shí),該引腳懸空。時(shí)鐘電路的幾種接法如圖2.8、圖2.9和圖2.10所示。

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

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

圖2.10 外部時(shí)鐘連接(PE7=0)
關(guān)于使用Colpitts時(shí)鐘連接電路還是Pierce時(shí)鐘連接電路,可以參考表2.3,表中對于兩種時(shí)鐘電路進(jìn)行了比較說明。
表2.3 Colpitts時(shí)鐘連接和Pierce時(shí)鐘連接性能比較

2.XFC(44)——PLL環(huán)路濾波器引腳
PLL環(huán)路濾波器連接電路如圖2.11所示,PLL要求3個(gè)元件的無源濾波器連接到XFC引腳上。濾波器器件值因應(yīng)用而異,計(jì)算濾波器的公式可以參見用戶指南,也可以簡單地使用Freescale公司提供的PLL濾波器計(jì)算器來計(jì)算。

圖2.11 PLL環(huán)路濾波器連接電路
3.RESET(42)——外部復(fù)位引腳
低電平有效的雙向控制信號。該引腳做輸入時(shí),將其拉低,可將MCU初始化成默認(rèn)狀態(tài);如果時(shí)鐘監(jiān)視器或者COP看門狗檢測到內(nèi)部故障,該引腳作為開漏輸出引腳對外指示這種狀態(tài)。復(fù)位究竟是內(nèi)部還是外部引起,是可以判別的。內(nèi)部復(fù)位首先將該引腳拉低并保持131~134個(gè)系統(tǒng)時(shí)鐘周期然后釋放該引腳,經(jīng)過64個(gè)系統(tǒng)時(shí)鐘周期后采樣該引腳電平,如果該引腳回到高電平,說明復(fù)位是由時(shí)鐘監(jiān)視器或者COP看門狗電路引起,CPU獲得時(shí)鐘監(jiān)視器或COP看門狗的復(fù)位向量;如果該引腳仍然保持低電平,就確定為外部復(fù)位,CPU獲得外部復(fù)位向量。為了保證時(shí)鐘監(jiān)視器或者COP看門狗復(fù)位向量能夠被復(fù)位邏輯所識(shí)別,復(fù)位引腳上升到3.25 V的時(shí)間必須小于64個(gè)系統(tǒng)時(shí)鐘周期和11 μs,所以為了避免對復(fù)位信號的誤判發(fā)生,S12的復(fù)位電路不要使用簡單的RC復(fù)位電路。另外在HCS12 D系列上沒有低電壓復(fù)位(Low Voltage Reset,LVR)支持,推薦使用外部LVR電路確保當(dāng)器件電源VDD下降到4.5 V以下時(shí)處于復(fù)位狀態(tài)。
4.BKGD(23)——背景調(diào)試引腳
BKGD采用自定協(xié)議接收串行的背景調(diào)試命令,并發(fā)送命令執(zhí)行結(jié)果,進(jìn)行實(shí)時(shí)在線調(diào)試。Freescale定義的標(biāo)準(zhǔn)BDM調(diào)試插頭如圖2.12所示。

圖2.12 標(biāo)準(zhǔn)BDM調(diào)試插頭
5.MODA、MODB、MODC——模式選擇輸入引腳
這三個(gè)引腳在單片機(jī)復(fù)位期間的狀態(tài)決定了其運(yùn)行模式。在復(fù)位期間,MODA、MODB具有內(nèi)部下拉,關(guān)于運(yùn)行模式的討論詳見后文。
6.IRQ/PE1(55)——可屏蔽中斷請求
可屏蔽外部中斷輸入引腳,可以用于從STOP或WAIT模式喚醒單片機(jī)??梢酝ㄟ^程序選擇該引腳是否和中斷邏輯連接,以及選擇下降沿還是低電平觸發(fā)。復(fù)位后,IRQ默認(rèn)為低電平觸發(fā)方式,同時(shí)在CCR寄存器中的I位為1,IRQ中斷被屏蔽,可以通過軟件清除或者置位CCR寄存器中的I位來使能或禁止所有可屏蔽中斷。
7.XIRQ/PE0(56)——不可屏蔽中斷請求
不可屏蔽外部中斷輸入引腳,可用于在STOP或WAIT模式下喚醒單片機(jī)。在復(fù)位階段,CCR寄存器中的X位為1,不可屏蔽中斷被屏蔽。當(dāng)系統(tǒng)初始化后,可以通過程序清除CCR寄存器中的X位,使能不可屏蔽中斷。注意,X位一旦被清零,就不能再通過軟件的方式置1。不可屏蔽中斷經(jīng)常用于處理系統(tǒng)掉電或者硬件故障等特殊應(yīng)用要求。關(guān)于中斷及復(fù)位的論述,后文相關(guān)章節(jié)會(huì)有詳細(xì)的論述。
8.電源相關(guān)引腳
MC9S12DG128的電源引腳匯總參見表2.4。
表2.4 MC9S12DG128的電源引腳匯總

(1)VDD1,2和VSS1,2——內(nèi)部穩(wěn)壓器輸出電源和地
電源通過VDD和VSS提供給單片機(jī),直接對內(nèi)部2.5 V穩(wěn)壓器供電。如果內(nèi)部穩(wěn)壓器使能,2.5 V來自于內(nèi)部穩(wěn)壓器;如果VREGEN引腳接地,內(nèi)部穩(wěn)壓器關(guān)閉,這兩對引腳上需要外部提供2.5 V電源。
(2)VDDR和VSSR——外部電源和地
這一組電源提供I/O驅(qū)動(dòng)和內(nèi)部穩(wěn)壓器輸入。為了滿足信號的快速上升要求,一般要求電源能提供瞬時(shí)大電流,因此要在兩個(gè)電源引腳之間放置高頻旁路電容,并且要盡量靠近單片機(jī),具體旁路電容要求取決于單片機(jī)引腳負(fù)載。
(3)VDDX和VSSX——I/O驅(qū)動(dòng)器電源和地
這一組電源提供I/O驅(qū)動(dòng)的電源和地,要在兩個(gè)引腳之間放置旁路電容,并且盡量靠近單片機(jī)。
(4)VDDA和VSSA——A/D轉(zhuǎn)換器模塊工作電源和地
這一組電源供給A/D轉(zhuǎn)換器,同時(shí)為內(nèi)部穩(wěn)壓器提供參考電壓,兩個(gè)引腳之間需要放置旁路電容。
(5)VRH和VRL——A/D轉(zhuǎn)換器模塊參考電源和地
這一組電源為A/D轉(zhuǎn)換器提供參考電壓,其精度和穩(wěn)定性直接影響轉(zhuǎn)換結(jié)果,因此這一組電源要求品質(zhì)較高,不能受數(shù)字電路部分影響,但功率較小,可以考慮單獨(dú)供電。
(6)VDDPLL和VSSPLL——PLL供電電源和地
當(dāng)內(nèi)部穩(wěn)壓器關(guān)閉時(shí),這一組電源必須外接2.5 V電源。內(nèi)部穩(wěn)壓器工作時(shí),該引腳的電壓由內(nèi)部穩(wěn)壓器提供。
(7)VERGEN——內(nèi)部穩(wěn)壓器選擇引腳
該引腳接高電平使能內(nèi)部穩(wěn)壓器,該引腳接地禁止內(nèi)部穩(wěn)壓器。如果該引腳接地,內(nèi)部穩(wěn)壓器禁止,VDD1,2和VDDPLL都必須外接2.5 V電源供電。
2.4 MC9S12DG128的運(yùn)行模式
MC9S12DG128可以通過三個(gè)引腳MODC、MODB和MODA來選擇單片機(jī)的運(yùn)行模式。共有普通模式和特殊模式兩大類的運(yùn)行模式。
MC9S12DG128的模式選擇詳見表2.5。
表2.5 MC9S12DG128的模式選擇表

2.4.1 普通運(yùn)行模式
普通模式共分三種,都是應(yīng)用系統(tǒng)開發(fā)結(jié)束后的最終運(yùn)行模式,它們都支持背景調(diào)試模式(BDM),但對于某些操作必須首先將BDM使能,然后再激活后才能通過BDM命令進(jìn)行調(diào)試。
1.普通單芯片模式
該模式無外部總線,端口A、端口B和端口E被設(shè)置成通用I/O接口。端口E的兩個(gè)引腳PE1和PE0僅能工作在內(nèi)部上拉的輸入方式,其他22個(gè)引腳均可設(shè)置為輸入或輸出,不過復(fù)位后它們均被默認(rèn)設(shè)置為高阻輸入方式,另外復(fù)位后,端口E的上拉有效,端口A和端口B的上拉被禁止。
2.普通寬擴(kuò)展模式
端口A和端口B為外部地址和數(shù)據(jù)總線,其中A15~A8和D15~D8分時(shí)使用端口A的8個(gè)引腳,A7~A0和D7~D0分時(shí)使用端口B的8個(gè)引腳。R/W等總線控制信號復(fù)位后默認(rèn)有效。
3.普通窄擴(kuò)展模式
端口A和端口B為16位外部地址總線,其中端口A輸出高8位(A15~A8),其中端口B輸出低8位(A7~A0),8位外部數(shù)據(jù)總線D7~D0與高8位地址線分時(shí)復(fù)用端口A的8個(gè)引腳。
2.4.2 特殊運(yùn)行模式
特殊模式主要用于系統(tǒng)開發(fā)和器件測試。
1.特殊單芯片模式
該模式可用于強(qiáng)制MCU激活BDM,以允許通過BKGD引腳進(jìn)行系統(tǒng)調(diào)試。在該模式下,MCU不像在其他模式下那樣取中斷向量,然后執(zhí)行應(yīng)用程序代碼等,而是以激活的BDM固件接收來自BKGD引腳的串行命令,并控制CPU的運(yùn)行。該模式下沒有外部總線,MCU作為一個(gè)獨(dú)立器件運(yùn)行,所有程序和數(shù)據(jù)存儲(chǔ)空間均位于片內(nèi),外部接口均可作為通用I/O。
2.單片運(yùn)行模式
單片運(yùn)行模式是MC9S12單片及最常用的一種運(yùn)行模式。系統(tǒng)復(fù)位時(shí),CPU檢測到MODA(PE5)和MODB(PE6)引腳為低電平時(shí)進(jìn)入單片運(yùn)行模式。單片運(yùn)行模式又分為普通單片模式和特殊單片模式。普通單片模式是正常運(yùn)行應(yīng)用程序時(shí)應(yīng)使用的模式,特殊單片模式是指BDM調(diào)試模式。進(jìn)入特殊模式時(shí),要求單片及復(fù)位時(shí)引腳MODC (BKGD)為低電平。通常,當(dāng)單片及輸入引腳浮空時(shí),CPU默認(rèn)高電平,BKGD引腳上的低電平是由BDM調(diào)試工具的相應(yīng)引腳提供的。故可以理解為,當(dāng)插上BDM頭時(shí),可進(jìn)入特殊單片模式;當(dāng)不插BDM頭時(shí),自動(dòng)進(jìn)入普通單片模式。
注意:MCU進(jìn)入單片模式還是擴(kuò)展模式或者其他模式,是由在復(fù)位時(shí)復(fù)位信號上升沿鎖存MODA、MODB等引腳上的輸入電平狀態(tài)到運(yùn)行模式寄存器(MODE Register)中相應(yīng)位來實(shí)現(xiàn)的,模式寄存器的默認(rèn)地址為$000B。在運(yùn)行過程中,應(yīng)用程序是可以動(dòng)態(tài)地在單片模式和擴(kuò)展模式之間相互切換的,方法是向運(yùn)行模式寄存器寫入不同的運(yùn)行模式控制字。
3.擴(kuò)展運(yùn)行模式
80引腳的單片機(jī)A、B、K口都沒有引出,故不能使用擴(kuò)展運(yùn)行模式。
擴(kuò)展運(yùn)行模式又有普通運(yùn)行模式和特殊運(yùn)行模式之分,其區(qū)別是有些寄存器只能在特殊模式下讀寫。
2.5 MC9S12DG128的存儲(chǔ)器映射
S12系列單片機(jī)片內(nèi)有Flash、RAM和EEPROM,不同型號內(nèi)置存儲(chǔ)器容量不同。MC9S12DG128單片機(jī)內(nèi)置128 KB Flash、8 KB RAM和2 KB EEPROM。
2.5.1 基本內(nèi)存空間分配
以CPU12為核心的單片機(jī)有多種運(yùn)行模式,其中單片方式是最典型的應(yīng)用模式。圖2.13給出了MC9S12DG128單片機(jī)在單片模式下的存儲(chǔ)器映射圖。

圖2.13 MC9S12DG128單片模式下存儲(chǔ)器映射
MC9S12DG128復(fù)位時(shí),I/O寄存器占用從$0000開始的1 KB地址空間($0000~$03FF),雖然用戶可以將I/O寄存器重新定義到前32 KB地址空間的任何一個(gè)2 KB空間的前1 KB,但最好不要這樣做。I/O空間放在$0000開始處,使得讀寫$0000到$00FF這256個(gè)I/O寄存器可以使用直接尋址方式,直接尋址方式的指令比擴(kuò)展尋址方式短1 B,速度會(huì)比讀寫其他地址空間快一些。別的存儲(chǔ)器模塊(如EEPROM、RAM和部分Flash)也都可以定義到其他地址空間。如果不是特別必要時(shí),盡量使用系統(tǒng)的默認(rèn)設(shè)置。
從$0400到$1000是EEPROM空間。一些CPU12構(gòu)成的單片機(jī)有4 KB的EEPROM,因?yàn)閺?0000開始的1 KB空間被I/O寄存器占用了,不重新定義EEPROM的地址的話,實(shí)際可以使用的EEPROM只有3 KB。若一定要使用片內(nèi)的4 KB EEPROM,則要重新將EEPROM定義到其他空間,或者將I/O寄存器移到其他空間。
從$000F到$3FFF是RAM空間,不同型號的CPU12構(gòu)成的單片機(jī)有不同的片內(nèi)RAM配置。從2 KB、4 KB、8 KB到12 KB。MC9S12DG128默認(rèn)為$0000到$1FFF(8 KB),可以在程序中將其映射到$2000到$3FFF的8 KB空間。
$4000到$FFFF的48 KB為Flash存儲(chǔ)器空間,分成3個(gè)16 KB空間,最后16 KB空間的最后256 B,即$FF00到$FFFF是中斷向量表空間。
CPU12構(gòu)成的單片機(jī)還有一種特殊工作方式(特殊單片方式或特殊擴(kuò)展方式),被稱為調(diào)試方式或BDM方式。在這種方式下,CPU12內(nèi)部的256 B的ROM將$FE00到$FEFF的前256 B的Flash空間覆蓋。當(dāng)然,覆蓋的空間在BDM模式下還是可以通過BDM指令訪問的。
2.5.2 內(nèi)存空間的擴(kuò)展
CPU12構(gòu)成的單片機(jī)片內(nèi)Flash可以超過64 KB尋址空間達(dá)到128 KB、256 KB或者512 KB,其中MC9S12DG128片內(nèi)Flash為128 KB,如圖2.14所示。

圖2.14 MC9S12DG128的內(nèi)存空間擴(kuò)展
128 KB的Flash先被分成每塊64 KB,共2塊(Block0和Block1);每塊細(xì)分為每頁16 KB,共8頁;每頁再細(xì)分每段為4 KB、2 KB、1 KB或512 B。
在片內(nèi)Flash在64 KB及以上的CPU12構(gòu)成的單片機(jī),有一個(gè)存儲(chǔ)器頁面寄存器PPAGE,該寄存器為5位,最多可管理32個(gè)16 KB存儲(chǔ)器頁,故CPU12單片機(jī)最多可以有512 KB片內(nèi)Flash。MC9S12DG128的128 KB Flash可分為16 KB存儲(chǔ)器,每個(gè)存儲(chǔ)器頁面編號為$38~$3F的某個(gè)值。CPU12在64 KB內(nèi)存的$8000到$BFFF這一段開了一個(gè)窗口,永遠(yuǎn)只能看到頁面寄存器的某一頁,這里指$38~$3D這6個(gè)頁面。128 KB的Flash中,$3F這一頁永遠(yuǎn)定位在$C000~$FFFF這一段,$3E頁永遠(yuǎn)定位在$4000到$7FFF這一段,另外6頁只能通過$8000~$BFFF這一窗口訪問。Flash的換頁是通過向PPAGE寄存器寫入頁面編號實(shí)現(xiàn)的。
Flash存儲(chǔ)器頁面寄存器PPAGE的值$00~$2F留給擴(kuò)展方式下使用外部存儲(chǔ)器時(shí)對外部存儲(chǔ)器分頁使用。
2.5.3 相關(guān)寄存器
CPU12的內(nèi)部寄存器、RAM、EEPROM可以通過設(shè)置INITRG、INITRM、INITEE來重新分配它們的位置。這些寄存器只能寫一次,建議在初始化時(shí)分配寄存器、RAM、EEPROM的位置。對每個(gè)INITxx賦值后,在其指令后需插入一空指令。如果映射有沖突,寄存器具有最高優(yōu)先級,與其重疊的RAM和EEPROM此時(shí)無效。存儲(chǔ)分配優(yōu)先級從高到低依次為:BDM ROM(激活的情況下)、寄存器區(qū)、RAM、EEPROM、Flash和外部擴(kuò)展存儲(chǔ)器。
以下簡要介紹INITRG、INITRM、INITEE 3個(gè)初始化寄存器。
1.內(nèi)部RAM位置初始化寄存器
內(nèi)部RAM位置初始化寄存器(Initialization of Internal RAM Position Register, INITRM)如圖2.15所示。

圖2.15 內(nèi)部RAM位置初始化寄存器
讀:任何時(shí)刻。
寫:普通模式和仿真模式下僅可以寫一次,特殊模式下任何時(shí)刻可寫操作。
RAM15~RAM11:內(nèi)部RAM映射位置。RAM的映射是通過修改該寄存器中的5個(gè)二進(jìn)制位來實(shí)現(xiàn)的,即指定內(nèi)部RAM基地地的最高5位。RAM空間可以映射到64 KB空間內(nèi)的任何16 KB塊中。
RAMHAL:RAM高地址對齊。
● 0表示RAM和內(nèi)部地址空間最低端對齊;
● 1表示RAM和內(nèi)部地址空間最高端對齊。
因?yàn)镸C9S12DG128內(nèi)部有8 KB的RAM空間,映射區(qū)域8 KB,所以RAM12~RAM11位沒有意義,取0或1都可以。配置RAM空間僅僅使用到RAM15~RAM13(即RAM15~RAM13用來決定RAM空間映射到哪個(gè)16 KB塊中),復(fù)位后RAM默認(rèn)位置在$0000~$1FFF,如果要將RAM空間定位到$2000~$3FFF,只要將RAM15~RAM13設(shè)置為001就可以了,此時(shí)INITRM=0×20。
2.內(nèi)部寄存器位置初始化寄存器
內(nèi)部寄存器位置初始化寄存器(Initialization of Internal Registers Position Register, INITRG)如圖2.16所示。

圖2.16 內(nèi)部寄存器位置初始化寄存器
讀:任何時(shí)刻。
寫:普通模式和仿真模式下僅可以寫一次,特殊模式下任何時(shí)刻可寫操作。
REG14~REG11:內(nèi)部寄存器映射位置。指定內(nèi)部寄存器區(qū)基地址的最高5位。MC9S12DG128內(nèi)部有1 KB的寄存器空間,復(fù)位后默認(rèn)首地址為$0000,運(yùn)行時(shí)可以重新映射到系統(tǒng)地址空間前32 KB的任何2 KB空間邊界處,實(shí)際使用前面的1KB。可以設(shè)置的最小基地址為$0000,最大基地址為$7FFF,而$0000~$00FF這256 B是可以使用直接尋址方式的,所以寄存器默認(rèn)的地址空間也從$0000開始。
3.內(nèi)部EEPROM位置初始化寄存器
內(nèi)部EEPROM位置初始化寄存器(Initialization of Internal EEPROM Position Register, INITEE)如圖2.17所示。

圖2.17 內(nèi)部EEPROM位置初始化寄存器
讀:任何時(shí)刻。
寫:所有器件在任何時(shí)刻可以寫EEON位。大多數(shù)器件的EE11~EE15位能夠在任何模式下任何時(shí)刻寫入。對于某些器件,EE11~EE15位在普通模式和仿真模式下僅一次寫入;特殊模式下任何時(shí)刻可寫操作,具體權(quán)限請參考相應(yīng)器件的用戶手冊。
EE15~EE11:內(nèi)部EEPROM映射位置,指定內(nèi)部EEPROM基地址的最高5位。
EEON:使能EEPROM。
● 0表示禁用EEPROM;
● 1表示使能EEPROM,地址由EE11~EE15決定。
● 配置INITEE位,當(dāng)INITEE=0×11時(shí),則EEPROM基地址從$1000開始。
- ANSYS Workbench基礎(chǔ)教程與工程分析詳解
- FPGA嵌入式項(xiàng)目開發(fā)三位一體實(shí)戰(zhàn)精講
- 嵌入式Linux接口開發(fā)技術(shù)
- STM32單片機(jī)全案例開發(fā)實(shí)戰(zhàn)
- 零起點(diǎn)學(xué)Proteus單片機(jī)仿真技術(shù)
- AVR單片機(jī)實(shí)用程序設(shè)計(jì)
- 嵌入式Linux與物聯(lián)網(wǎng)軟件開發(fā):ARM處理器開發(fā)自學(xué)教程
- 單片機(jī)原理與接口技術(shù)
- 零基礎(chǔ)學(xué)51單片機(jī)(C語言版)
- 單片機(jī)原理與工程應(yīng)用
- AVR單片機(jī)很簡單:C語言快速入門及開發(fā)實(shí)例
- 高分辨率遙感影像變化檢測
- 零基礎(chǔ)學(xué)西門子S7- 200 SMART PLC編程及應(yīng)用
- PLC原理及應(yīng)用
- AVR單片機(jī)與傳感器基礎(chǔ)