![汽車嵌入式系統(tǒng)設計 課件 第二章 S12XE微控制器的結構與組織_第1頁](http://file4.renrendoc.com/view/cb36f4d994e3af4a044ea006d17ed434/cb36f4d994e3af4a044ea006d17ed4341.gif)
![汽車嵌入式系統(tǒng)設計 課件 第二章 S12XE微控制器的結構與組織_第2頁](http://file4.renrendoc.com/view/cb36f4d994e3af4a044ea006d17ed434/cb36f4d994e3af4a044ea006d17ed4342.gif)
![汽車嵌入式系統(tǒng)設計 課件 第二章 S12XE微控制器的結構與組織_第3頁](http://file4.renrendoc.com/view/cb36f4d994e3af4a044ea006d17ed434/cb36f4d994e3af4a044ea006d17ed4343.gif)
![汽車嵌入式系統(tǒng)設計 課件 第二章 S12XE微控制器的結構與組織_第4頁](http://file4.renrendoc.com/view/cb36f4d994e3af4a044ea006d17ed434/cb36f4d994e3af4a044ea006d17ed4344.gif)
![汽車嵌入式系統(tǒng)設計 課件 第二章 S12XE微控制器的結構與組織_第5頁](http://file4.renrendoc.com/view/cb36f4d994e3af4a044ea006d17ed434/cb36f4d994e3af4a044ea006d17ed4345.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第2章S12XE系列微控制器的結構與組織以典型車用MCU為例講解MCU內(nèi)部架構、外部引腳功能2023/11/28汽車嵌入式系統(tǒng)設計1S12XE是汽車電子系統(tǒng)中有較多運用的MCU,具有速度快、功能強、成本低、功耗低等特點。本章系統(tǒng)介紹了S12XE系列MCU的特點和系統(tǒng)架構,重點闡述了S12XE的存儲器組織、中斷系統(tǒng)、指令系統(tǒng)。圍繞S12XE的應用開發(fā),介紹了以S12XE為核心的嵌入式系統(tǒng)最小系統(tǒng)硬件。2023/11/28汽車嵌入式系統(tǒng)設計22.1S12XE系列MCU介紹2.1.1S12XE系列MCU介紹S12XE是NXP恩智浦半導體有限公司(原飛思卡爾半導體公司的產(chǎn)品)針對汽車電子市場推出的高性能16位微控制器,具有低成本、低功耗、EMC和代碼效率高等優(yōu)點,甚至能達到許多32位MCU的性能,特別適用于汽車電子領域,該芯片廣泛用于車身控制、乘客舒適性應用、發(fā)動機管理、排氣系統(tǒng)管理等領域。2023/11/28汽車嵌入式系統(tǒng)設計3S12XE系列微控制器的主要功能特性如下:1)S12XE的核心。16位CPU,最高50MHz總線速率,向上兼容S12X指令集;增強指令集,增強型索引尋址;通過頁面方式訪問大數(shù)據(jù)段,尋址8MB存儲空間;16位條件碼寄存器(CCRW=CCRH:CCRL)。2)中斷控制管理模塊(INT)。支持8層嵌套中斷,每層中斷源可靈活分配;不可屏蔽外部中斷(XIRQ)高優(yōu)先級;內(nèi)部不可屏蔽的高優(yōu)先級存儲器保護單元中斷;支持部分外設和端口的喚醒中斷;多達24腳(端口J、H、P)的可編程上升沿或下降沿觸發(fā)中斷。3)模塊映射控制(MMC)、運行監(jiān)視調(diào)試(DBG)、單線背景調(diào)試模式(BDM)。4)存儲器保護單元(MPU)。每個存儲器操作任務最多可以定義8個地址區(qū)間,地址范圍間隔低至8個字節(jié),禁寫禁執(zhí)行保護,出錯產(chǎn)生不可屏蔽中斷。2023/11/28汽車嵌入式系統(tǒng)設計45)XGATE協(xié)處理器。XGATE是可編程高性能的I/O協(xié)處理模塊,最大總線頻率100MHz,無需CPU介入或等待,即可完成RAM與各接口間的數(shù)據(jù)傳送,執(zhí)行數(shù)據(jù)的邏輯、移位、算術、位等運算。數(shù)據(jù)傳送完成觸發(fā)中斷,可由任何硬件模塊觸發(fā),兩級中斷滿足高優(yōu)先級的任務。6)時鐘。低噪聲、低功耗皮爾斯振蕩器,晶振頻率可在4MHz~16MHz內(nèi)多選選擇。7)鎖相環(huán)。內(nèi)部數(shù)字濾波頻率調(diào)制的鎖相環(huán)(PLL),通過程序設置總線運行頻率。8)復位發(fā)生器(CRG)??撮T狗(COPwatchdog);實時中斷;時鐘監(jiān)視器;從STOP模式快速喚醒。2023/11/28汽車嵌入式系統(tǒng)設計59)存儲器選項(Memory)。Flash:128KB、256KB、384KB、512KB、768KB、1MB字節(jié);模擬EEPROM:2KB、4K字節(jié)B;RAM:12KB、16KB、24KB、32KB、48KB、64K字節(jié)B。Flash具有以下特點:64數(shù)據(jù)位+8位ECC(ErrorCorrectionCode)實現(xiàn)1位出錯修正和加倍出錯保護;擦除區(qū)大小為1024字節(jié);用于驗證和產(chǎn)生ECC校驗位的自動編程和擦除算法。D-Flash的特點有:多達64KB,按256字節(jié)B劃分區(qū)域;用于D-Flash訪問的專有命令;字讀操作的1位出錯修正和2位出錯保護;用于驗證和產(chǎn)生ECC校驗位的自動編程和擦除算法;快速區(qū)域擦除和按字編程操作;4字編程操作能力。10)2個16通道12位模數(shù)轉換器(ATD)。可配置8、10或12位模數(shù)轉換器(ADC);兩個16選1復用器最多可實現(xiàn)32個通道模擬量輸入;10bit轉換時間為3μs;AD結果可選左、右對齊方式;轉換結果可為有符號或無符號數(shù);外部/內(nèi)部觸發(fā)轉換;連續(xù)轉換模式;在停止模式下內(nèi)部時鐘可實現(xiàn)ATD轉換;支持通過模擬量“>”或“<=”的MCU低能耗模式喚醒。2023/11/28汽車嵌入式系統(tǒng)設計611)5個MSCAN總線模塊(最高波特率1Mbpsit/s,兼容CAN2.0A/B)。5個接收緩沖器,3個發(fā)送緩沖器;4個獨立的中斷通道,分別是發(fā)送中斷、接收中斷、錯誤中斷和喚醒中斷;可編程報文ID低通濾波器功能(2×32bit/4×16bit/8×8bit);低通濾波器喚醒功能;支持自環(huán)測試模式和總線監(jiān)聽模式。12)增強定時器模塊(ECT)。8個16位可編程輸入捕捉或輸出比較通道;16位自由計數(shù)器,8位預分頻器;4個8位或2個16位脈沖累加器。13)周期中斷定時器(PIT)。8個周期溢出定時器;可選的溢出周期1~224個總線時鐘周期;定時溢出和觸發(fā)。2023/11/28汽車嵌入式系統(tǒng)設計714)脈寬調(diào)制模塊(PWM)。8通道8位或4通道16位脈寬調(diào)制通道;每個通道的周期和占空比可編程設定;各通道獨立控制;脈沖在周期內(nèi)中心對稱或左對齊輸出;可編程時鐘選擇邏輯;緊急事件關斷輸入。15)8個異步串行通信接口(SCI)。16)3個同步串行設備接口(SPI)。17)2個IIC接口。18)片上電壓調(diào)節(jié)器。2個并行線性電壓調(diào)節(jié)器;帶低壓中斷(LVI)的低電壓檢測;上電復位電路;低電壓復位;芯片可在電源5V或3.3V下使用。2023/11/28汽車嵌入式系統(tǒng)設計819)低功耗喚醒定時器(API)。20)輸入/輸出端口(I/O)。多達152個通用輸入輸出端口+2個輸入端口;所有輸入端口可配置上下拉電阻;所有輸出端口可配置驅動能力。21)封裝選擇。MAPBGA208腳、LQFP144引腳、LQFP112引腳、QFP80引腳。22)溫度性能:-40℃~125℃寬溫度使用范圍。2023/11/28汽車嵌入式系統(tǒng)設計92.1.2S12XE內(nèi)部結構S12XE系列芯片的內(nèi)部結構如圖2-1所示,由MCU核心、XGATE、MCU外設接口三部分構成,對應圖中的左邊、中間、右邊部分。這里重點介紹S12XE內(nèi)部結構的基礎部分:MCU核心與MCU外設接口。2023/11/28汽車嵌入式系統(tǒng)設計10圖2-1S12XE芯片的內(nèi)部結構圖2023/11/28111.MCU核心S12XE以增強16位CPU12X為基礎,由算術邏輯單元、控制單元和寄存器組構成。此外,還包括MCU的3種存儲器(Flash/RAM/EEPROM)、電壓調(diào)節(jié)器、單線背景調(diào)試接口(BDM)、鎖相環(huán)(PLL)電路、時鐘、復位模塊和運行監(jiān)視、看門狗模塊、程序存儲器的頁面模式控制模塊,具有中斷定時器、中斷管理、讀/寫控制、工作模式等控制功能的系統(tǒng)綜合模塊,可用于通用并行輸入/輸出的8位A口、B口、C口、D口、E口、K口、F口,也可用于實現(xiàn)總線擴展,其中,A口、B口、K口可作為外擴存儲器或接口電路時的超16位地址總線,C口、D口作為擴展時的16位數(shù)據(jù)總線,而E口可作為控制總線,F(xiàn)口產(chǎn)生4個片選、1個IIC和1個SCI通訊接口。2023/11/28汽車嵌入式系統(tǒng)設計122.MCU外設接口S12XE外設接口有:A/D轉換器(ATD0和ATD1)、定時器(ECT和TIM)模塊、PWM/SCI/SPI/CAN/IIC等接口。此外,還有大量的通用并行輸入/輸出口(GPIO),這些GPIO接口大多與外設接口模塊有復用關系。3.S12XE芯片封裝與引腳分類S12XE芯片有4種封裝形式:MAPBGA208腳、LQFP144引腳、LQFP112引腳、QFP80引腳。LQFP是(薄)四方扁平、表面貼焊型封裝。2023/11/28汽車嵌入式系統(tǒng)設計13圖2-2、圖2-3是S12XE系列MCU芯片的兩種常見封裝和引腳定義,不同封裝的芯片對圖中粗體、斜體標注接口引腳做了相應的裁減。圖2-2S12XE系列MCU的LQFP144封裝及引腳定義圖2-3S12XE系列MCU的LQFP112封裝及引腳定義2023/11/28汽車嵌入式系統(tǒng)設計14
2023/11/28汽車嵌入式系統(tǒng)設計15(2)電源類引腳S12XE的電源和電源地所涉及引腳較多,在應用中所有的VSS引腳必須連在一起。1) VDDX[2:1]和VSSX[2:1]:I/O驅動的外部輸入電源和接地引腳。VDDX標稱電壓為5V,所有VDDX在內(nèi)部是連接在一起,所有VSSX在內(nèi)部也連接在一起。2) VDDR:供給內(nèi)部電壓調(diào)節(jié)器的外部電源輸入引腳。標稱電壓為5V。3) VDD和VSS2、VSS3:內(nèi)核工作的電源和接地引腳。VDD標稱電壓為1.8V,來源于內(nèi)部電壓調(diào)節(jié)器,負責給MCU內(nèi)核供電。4) VDDF和VSS1:內(nèi)部非易失存儲器的電源和地引腳。VDDF標稱電壓為2.8V,來源于內(nèi)部電壓調(diào)節(jié)器。2023/11/28汽車嵌入式系統(tǒng)設計165)VDDA和VSSA:模/數(shù)轉換器和電壓調(diào)節(jié)器的電源和接地引腳。VDDA標稱電壓5V。6)VRH和VRL:模/數(shù)轉換器參考電壓輸入引腳。7)VDDPLL和VSSPLL:振蕩器和鎖相環(huán)工作電源引腳和接地。VDDPLL標稱電壓1.8V,來源于內(nèi)部電壓調(diào)節(jié)器。這些引腳不允許懸空,電源應能提供瞬時大電流。上述各電源和地之間應使用高頻旁路電容,并盡可能靠近相應引腳,旁路要求取決于MCU引腳的負載大小,應滿足信號快速上升和濾波的要求。2023/11/28汽車嵌入式系統(tǒng)設計17(3)I/O類引腳S12XE的I/O類引腳眾多,MAPBGA208封裝有152個端口、LQFP144封裝有119個端口、LQFP112封裝有91個端口、QFP80封裝有59個端口。包括AD、A、B、C、D、E、F、H、J、K、L、M、P、R、S、T共16組端口。1)AD口(PAD[31:16],PAD[15:0]):可用做通用輸入/輸出口,也可為模擬量輸入口。2)A、B、C、D、E、K:單片模式下用做通用輸入/輸出口;在擴展運行模式下,擴展為地址總線、數(shù)據(jù)總線、控制總線。其中,E口用做通用輸入/輸出口時,PE0、PE1只能用做輸入口)。3)F口(PF7~PF0):與IIC0、SCI3通信引腳復用。2023/11/28汽車嵌入式系統(tǒng)設計184)H口(PH7~PH0):與SPI1、SPI2通信引腳復用,也可做喚醒中斷輸入。5)J口(PJ7~PJ0):與SCI2、IIC1、CAN4通信引腳復用,也可做喚醒中斷輸入。6)L口(PL7~PL0):與SCI4、SCI5、SCI6、SCI7通信引腳復用。7)M口(PM7~PM0):與CAN0、CAN1、CAN2、CAN3通信引腳復用。8)P口(PP7~PP0):與PWM模塊關聯(lián)作為通信引腳,也可做喚醒中斷輸入。9)R口(PR7~PR0):與TIM模塊復用。10)S口(PS7~PS0):與SCI0、SCI1、SPI0通信引腳復用。11)T口(PT7~PT0):與ECT模塊復用。S12XE的I/O接口在用作通用輸入/輸出時,各口引腳可以獨立設置其輸入/輸出方向、是否啟用上拉或下拉電阻等;P口、H口、J口的引腳具有喚醒中斷輸入功能。2023/11/28汽車嵌入式系統(tǒng)設計194.運行模式S12XE系列微控制器有多種運行模式,以滿足各種用戶的應用需要,具有較強的靈活性和可擴展性。(1)芯片模式的分類1)單片模式:單片運行模式是S12XE最常用的工作模式,此模式下,總線系統(tǒng)在芯片外部不可用。單片運行模式又有兩種模式:普通單片模式和特殊單片模式。普通單片模式是最終產(chǎn)品正常運行程序代碼的工作模式。特殊單片模式是FreescaleMCU在線仿真、調(diào)試、下載程序的工作模式,又稱為背景調(diào)試模式(BDM,BackgroundDebugMode)。用戶使用時往往就在這兩種模式間切換。2023/11/28汽車嵌入式系統(tǒng)設計20BDM硬件調(diào)試器一端通過USB接口接入PC,另一端插頭通過6針連接器與目標板聯(lián)接,6針連接器引腳含義如圖2-4所示。BDM調(diào)試接頭實際只用到了4個引腳。引腳BKGD在MCU內(nèi)部設有上拉電阻,懸空時默認為高電平。當插上BDM連接器,由BDM調(diào)試工具給BKGD提供低電平,使MCU自動進入特殊單片模式(BDM)。若不插BDM連接器,BKGD/MODC為高,則自動進入普通單片模式。2023/11/28汽車嵌入式系統(tǒng)設計21圖2-4BDM調(diào)試器6針連接器引腳定義2)其他模式:包括特殊測試模式、特殊外設測試模式和擴展運行模式。特殊測試模式、特殊外設測試模式:S12XE系列單片機的芯片特殊測試模式和特殊外設測試模式等,用于芯片生產(chǎn)中的測試,在此不作詳述。擴展運行模式:S12XE系列MCU可以支持擴展運行模式,增加了用于更多模式選擇的MODA、MODB引腳功能。擴展模式允許通過CPU外部總線擴展RAM、Flash、I/O等,在此不作詳述。S12XE系列MCU在單片模式下,資源已經(jīng)非常強大,基本不需要擴展功能就可以滿足大多數(shù)應用開發(fā)的需要。2023/11/28汽車嵌入式系統(tǒng)設計22
2023/11/28汽車嵌入式系統(tǒng)設計23(3)低功耗模式S12XE運行時支持4種低功耗模式。1)系統(tǒng)停止模式(SystemSTOP)該模式下通過CPU執(zhí)行STOP指令進入,只有非易失存儲器(NVM)指令還可以被執(zhí)行;該模式下,系統(tǒng)時鐘將繼續(xù)運行,直到系統(tǒng)非易失存儲器操作完成。系統(tǒng)由CLKSEL寄存器中PSTP決定是進入完全停止狀態(tài)還是進入偽停止狀態(tài),當CLKSEL寄存器中PSTP=0時,停止所有的時鐘和晶振,使單片機進入完全的停止狀態(tài)。外部復位或外部中斷才能將S12XE從該模式下喚醒。2023/11/28汽車嵌入式系統(tǒng)設計242)完全停止模式(FullSTOP)。在該模式下,晶振時鐘停止,所有的時鐘和計數(shù)設備將被凍結,自由周期中斷和ATD模塊可以提供自喚醒,快速喚醒模式將支持在不啟動晶振時鐘情況下,通過PLL時鐘成為系統(tǒng)內(nèi)部時鐘。3)偽停止模式(PSEUDO)。當CLKSEL寄存器中PSTP=1時,CPU執(zhí)行STOP指令時S12XE進入偽停止模式。此時時鐘振蕩器仍然工作,實時時鐘和看門狗模塊通過設置也可以繼續(xù)工作,其他的外設接口都關閉。外部復位或外部中斷能將S12XE從該模式下喚醒。4)等待模式(WAIT)。通過CPU執(zhí)行WAIT指令進入等待模式。在這種模式下,CPU不再執(zhí)行指令,CPU內(nèi)部進入完全靜止的狀態(tài),但所有的外設接口保持激活狀態(tài)。外部中斷及外設中斷能激活CPU的繼續(xù)運行。在正常的運行模式(RUN)下,為了降低功耗,未被使用的外設接口應不被使能。2023/11/28汽車嵌入式系統(tǒng)設計25(4)凍結模式當背景調(diào)試模塊處于活動狀態(tài),定時器模塊、脈沖寬度調(diào)制器、模擬數(shù)字轉換器、定時器和周期性中斷提供一個軟件可編程選項的凍結模式狀態(tài)。(5)加密模式MCU的加密模式用于防止未經(jīng)授權的閃存訪問,保護閃存中的程序和數(shù)據(jù)。2023/11/28汽車嵌入式系統(tǒng)設計262.2S12XE系列MCU的存儲器組織2.2.1S12XE存儲器分類嵌入式系統(tǒng)的MCU在芯片內(nèi)部布置一定容量的存儲器,用來存放程序和數(shù)據(jù)。存儲器可分為只讀存儲器(ROM)和隨機存儲器(RAM)兩大類。1.ROMROM也叫程序存儲器,是一種非易失性半導體存儲器(NVM)。ROM掉電能保持數(shù)據(jù),通常用來保存不需要擦除的最終應用程序信息。2023/11/28汽車嵌入式系統(tǒng)設計27ROM進一步可分為以下類型:(1)EPROM可編程的非易失性存儲器。可以用特殊的方法寫入數(shù)據(jù),但當把EPR0M暴露在紫外光線幾分鐘時間,就可以擦除其中的內(nèi)容然后重新編程寫入。(2)EEPROM可編程的非易失性存儲器。與EPROM的區(qū)別是信息的擦除不是用紫外線而是僅使用DC電源就可以方便快捷地編程和擦除,已取代了EPROM。(3)Flash俗稱程序閃存。除具有電擦除、可編程、非易失的特性外,還具有更高速、更方便、容量大的特點,可多次反復擦寫(10萬次以上),并允許在線編程?,F(xiàn)代MCU的程序運行代碼都是寫入Flash。(4)DataFlash簡寫為D-Flash,數(shù)據(jù)閃存,用于存儲數(shù)據(jù)。注:S12XE將Flash分為D-Flash(數(shù)據(jù)存儲器)和P-Flash(程序存儲器)。D-Flash和P-Flash沒有多大差別,只是一次擦寫的扇區(qū)大小不同。2023/11/28汽車嵌入式系統(tǒng)設計282.RAMRAM也叫數(shù)據(jù)存儲器,是可讀/寫存儲器。用于保存需要經(jīng)常改變的數(shù)據(jù)。RAM是易失性存儲器,一旦掉電就會丟失所有的數(shù)據(jù)。采用“隨機訪問”機制,每個地址的訪問時間相等,所以叫隨機存取存儲器。目前,MCU中應用廣泛的存儲器有RAM、Flash、EEPROM。S12XE系列MCU片內(nèi)集成了這3種存儲器,D-Flash也可以取代EEPROM。Flash存儲器用于存放整個程序代碼或者需要高速訪問的參數(shù),例如操作系統(tǒng)核心、應用程序、標準子程序庫、表格數(shù)據(jù)等,F(xiàn)lash允許在現(xiàn)場進行代碼測試和更新。EEPROM或D-Flash一般用來保存定制的標定信息和特定數(shù)據(jù)。2023/11/28汽車嵌入式系統(tǒng)設計29表2-1是S12XE系列不同型號MCU的存儲器資源。S12XE的存儲器采用馮?諾依曼結構,RAM、ROM是統(tǒng)一編址的。S12XE系列MCU的地址線為16位,其邏輯地址空間為64KB(216)地址范圍是0x0000~0xFFFF,被分成多個不同區(qū)段,每個區(qū)段的作用不同。2023/11/28汽車嵌入式系統(tǒng)設計302.2.2S12XE存儲器組織1.本地地址分配及分頁圖2-5為S12XE芯片單片運行模式下的一種典型的存儲空間分配圖。通過頁面擴展機制,S12XE可以管理遠超64KB的存儲器空間。當S12XE的存儲分配出現(xiàn)地址重疊時,MCU內(nèi)部的優(yōu)先級控制邏輯會自動屏蔽級別較低的資源,保留級別最高的資源存儲器的優(yōu)先級,優(yōu)先級按照I/O寄存器、RAM、D-Flash、Flash的順序遞減。2023/11/28汽車嵌入式系統(tǒng)設計31圖2-5S12XE存儲器的地址分配及分頁按圖2-5所示的存儲器地址分配,分為本地存儲區(qū)映射地址區(qū)間及其右側擴展出來的分頁窗口的各邏輯地址空間兩部分,以下是存儲器空間的詳細分配:1)0x0000~0x07FF(2KB):I/O寄存器區(qū)。安排S12XE的眾多不同I/O接口模塊的幾百個寄存器,也有部分空間未被分配使用。例如PORTA的實際地址是0x0000;PWM允許寄存器PWME的實際地址是0x00A0。I/O寄存器區(qū)也可以映射到其他位置,一般情況該區(qū)域地址盡量不要改變。2)0x0800~0x0BFF(1KB):分頁EEPROM區(qū)。通過分頁擴展的方法以達到管理256KB空間的EEPROM,此區(qū)間對應0x00~0xFE共255個頁面窗口,每個頁面為1KB空間,其中本地地址空間固定占用0xFE頁面。2023/11/28汽車嵌入式系統(tǒng)設計323)0x0C00~0x0FF(1KB):固定EEPROM區(qū),固定占用0xFF頁面。4)0x1000~0x1FFF(4KB):分頁RAM區(qū)。通過分頁擴展的方法以達到管理1022KB(1MB-2KB)空間的RAM,此區(qū)間對應0x00~0xFD共254個頁面窗口,每個頁面為4KB空間,其中本地地址空間固定占用0xFD頁面。5)0x2000~0x3FFF(8KB):固定RAM區(qū),固定占用0xFE、0xFF頁面。如果使用復位默認地址分配(0xFD頁面),RAM空間實際為0x1000~0x3FFF,因此,如果要使全部的8KBRAM都可見,就需要將RAM的地址空間映射到0x2000~0x3FFF這個區(qū)域,即需調(diào)整到0xFE頁面開始,才可訪問到實際的連續(xù)8KB。2023/11/28汽車嵌入式系統(tǒng)設計336)0x4000~0xFFFF(48KB):Flash區(qū),分成3塊,每塊16KB。其中0x8000~0xBFFF的16KB區(qū)域是頁面窗口,通過分頁擴展的方法以達到管理超過64KB空間的Falsh。而0x4000~0x7FFF、0xC000~0xFFFF為兩個16KB的固定Flash區(qū),固定占用0xFD、0xFF頁面。7)0xFF00~0xFFFF(256B):中斷向量區(qū)。占用Flash的最后256字節(jié)的空間,BDM模式下能被BDM指令訪問。其中,復位中斷向量地址為0xFFFE,是整個程序的入口地址。前述各個分頁窗口的頁面值是通過對應的頁面管理寄存器進行設定的。2023/11/28汽車嵌入式系統(tǒng)設計342.全局訪問S12XE具有強大的存儲器管理控制模塊,除了可以通過頁面擴展機制實現(xiàn)全局管理8MB存儲區(qū)空間外,還可以通過GPAGE寄存器、采用23位的地址定位和全局存儲器操作指令來管理全局8MB存儲器空間,如圖2-6所示,其中右半部分就是以7位全局頁面寄存器擴展的128個64KB頁面地址空間(128×64KB=8MB),用本地64K空間地址外加全局頁面寄存器值0x00~0x7F表示,那么8MB全局存儲器地址空間就可以連續(xù)地表示為0x00_0000~0x7F_FFFF。這樣,S12XE能支持的容量足夠大的RAM、D-Flash、Flash。2023/11/28汽車嵌入式系統(tǒng)設計352023/11/2836圖2-6S12XE的存儲器全局地址映射分配S12XE總共新增了84條這類全局尋址指令。全局地址[22:0]由CPU本地地址[15:0]和GPAGE寄存器[22:16]聯(lián)合組成。按全局地址方式進行存儲器訪問的可尋址連續(xù)地址空間安排表達如下:1)0x00_0000~0x00_07FF:2KB的I/O寄存器區(qū)。2)0x00_0800~0x0F_FFFF:16×64KB-2KB=1022KB的RAM區(qū)。3)0x10_0000~0x13_FFFF:4×64KB=256KB的D-Flash區(qū)。4)0x14_0000~0x3F_FFFF:44×64KB=2.75MB的保留未用區(qū)。5)0x40_0000~0x7F_FFFF:64×64KB=4MB的Flash區(qū)。2023/11/28汽車嵌入式系統(tǒng)設計37在可以訪問的8M地址空間里:I/O寄存器、RAM空間可以使用全局讀寫指令進行讀寫操作;Flash、D-Flash空間只能使用全局讀指令進行讀取。S12XE嵌入式系統(tǒng)的鏈接文件Project.prm中,定義和劃分了芯片所有可用的內(nèi)存資源,包括程序空間和數(shù)據(jù)空間,可以通過這個文件了解S12XEMCU的存儲器分頁管理。通常本地64KB空間分配的RAM、EEPROM、D-Flash、FLASH容量已足夠滿足一般應用的需求,用戶不要去修改。2023/11/28汽車嵌入式系統(tǒng)設計382.3S12XE系列MCU的中斷系統(tǒng)中斷:指MCU在正常執(zhí)行程序的過程中,由于內(nèi)部/外部事件的發(fā)生或由程序的預先安排,引起CPU暫時停止執(zhí)行當前的程序,轉而執(zhí)行由內(nèi)部/外部事件或預先安排的事件而需要執(zhí)行的中斷服務程序,在中斷服務程序處理完畢后,返回繼續(xù)運行調(diào)用中斷前的程序。中斷源:提出中斷處理請求的來源稱為中斷源。中斷方式與查詢方式相比,可使MCU的程序設計更加高效與靈活,可以提高嵌入式系統(tǒng)的實時處理能力和工作效率,擴大其應用范圍。2023/11/28汽車嵌入式系統(tǒng)設計39中斷系統(tǒng)應具有以下基本功能:1)能實現(xiàn)中斷響應、中斷服務、中斷返回和中斷屏蔽。當出現(xiàn)中斷請求時,MCU能決定是否響應該請求。如果允許響應這個中斷請求,MCU由硬件自動保護斷點,轉而執(zhí)行相應的中斷服務程序。中斷處理完后能自動恢復斷點返回原中斷處繼續(xù)執(zhí)行被中止的程序。2)能實現(xiàn)中斷優(yōu)先級配置。當多個中斷源同時發(fā)出中斷申請時,優(yōu)先級較高的中斷申請首先得到處理。3)能實現(xiàn)中斷嵌套。中斷處理過程中,有優(yōu)先級較高的中斷請求時,MCU能暫停正在執(zhí)行的中斷處理程序,轉去響應與處理優(yōu)先級較高的中斷申請,結束后再返回原先優(yōu)先級較低的中斷處理過程。4)能通過軟件實現(xiàn)模擬中斷,便于中斷的調(diào)試。2023/11/28汽車嵌入式系統(tǒng)設計402023/11/28汽車嵌入式系統(tǒng)設計412.3.1S12XE中斷源S12XE的中斷源可分為3大類:復位中斷、特殊中斷、普通中斷。1.復位中斷S12XE有3個不可屏蔽的復位中斷。S12XE的復位中斷不返回原來的程序,而是程序重新開始運行。(程序重啟)S12XE復位發(fā)生后:一些內(nèi)部資源寄存器(R)恢復到默認狀態(tài)。S12XE的引腳狀態(tài)取決于對應的控制寄存器;內(nèi)部RAM的內(nèi)容不隨復位的發(fā)生而變化;PC指針將根據(jù)復位向量指定的內(nèi)容(地址),跳轉到指定地址開始重新執(zhí)行整個程序。2023/11/28汽車嵌入式系統(tǒng)設計42S12XE的復位向量有3個;觸發(fā)復位的動作有4個,即上電復位、外部復位、時鐘監(jiān)視復位、看門狗定時器溢出復位。3個復位向量:上電復位與外部復位共用一個向量(0xFFFE~0xFFFF);時鐘監(jiān)視復位的向量(0xFFFC~0xFFFD);看門狗定時器溢出復位的向量(0xFFFA~0xFFFB)。寄存器PLLCTL中的位CME=1、SCME=1使能,時鐘失效時產(chǎn)生復位;寄存器COPCTL的位CR[2:0]非零使看門狗定時器溢出時產(chǎn)生復位。2023/11/28汽車嵌入式系統(tǒng)設計432.特殊中斷特殊中斷包含3個不可屏蔽特殊中斷,分別是非法指令陷阱中斷、軟件中斷、非屏蔽的外部中斷。外部中斷可以在系統(tǒng)復位初始化時通過設置CCR寄存器的中斷屏蔽位X來進行屏蔽或開放設置。(1)非法指令陷阱中斷0xFFF8~0xFFF9當MCU執(zhí)行程序時受到干擾或產(chǎn)生混亂時,有可能無法取得正確的操作碼,得到的是無法識別的非法指令,MCU就會自動產(chǎn)生中斷,即為非法指令中斷,其中斷向量為0xFFF8~0xFFF9。用戶可以根據(jù)需要定義相應的中斷服務程序,以防止某些如程序跑飛、死機等軟件錯誤。2023/11/28汽車嵌入式系統(tǒng)設計442023/11/28汽車嵌入式系統(tǒng)設計45
2023/11/28汽車嵌入式系統(tǒng)設計46
2023/11/28汽車嵌入式系統(tǒng)設計47
2023/11/28汽車嵌入式系統(tǒng)設計482023/11/28汽車嵌入式系統(tǒng)設計492023/11/28汽車嵌入式系統(tǒng)設計502023/11/28汽車嵌入式系統(tǒng)設計512023/11/28汽車嵌入式系統(tǒng)設計522023/11/28汽車嵌入式系統(tǒng)設計53S12XE單片機的中斷向量地址也可以通過“基地址+偏移地址”的方式表達,并且基地址可以由用戶改變配置到Flash區(qū)域的任何地址。中斷向量地址=“基地址+偏移地址”可以通過配置中斷向量基址(InterruptVectorBased,IVB)寄存器IVB予以實現(xiàn);S12XE的3個復位中斷源(0xFFFE、0xFFFC、0xFFFA)的基址是固定不變的,基地址為0xFF,見表2-3;中斷源優(yōu)先級是按中斷向量地址遞減順序排列。S12XE復位時基址IVBR的默認值為0xFF,優(yōu)先級最高。2023/11/28汽車嵌入式系統(tǒng)設計542023/11/28汽車嵌入式系統(tǒng)設計552.3.2中斷處理流程、優(yōu)先級與嵌套1.中斷處理流程S12XE中斷處理流程是硬件和軟件編程相結合的處理過程。(1)中斷請求當S12XE的外部設備或者內(nèi)部模塊發(fā)生中斷事件時,首先向CPU發(fā)出中斷請求信號。若該中斷源未被屏蔽,并且中斷允許觸發(fā)器被置位時,成功發(fā)出中斷請求。2023/11/28汽車嵌入式系統(tǒng)設計56(2)中斷響應中斷源的中斷請求是隨機的,S12XE一般會在現(xiàn)行指令執(zhí)行完成時去檢測中斷請求。當檢測到有中斷請求,且滿足中斷響應條件,則S12XE在當前指令執(zhí)行結束時,進入中斷響應周期,通過內(nèi)部硬件自動完成以下3步操作:1)關中斷。即將CCR寄存器I位置1,以禁止其他中斷干擾將要執(zhí)行的中斷服務程序。2)現(xiàn)場保護。即將斷點地址和CCR寄存器內(nèi)容推入堆棧區(qū)。3)跳轉到中斷服務程序的入口地址。即將中斷向量地址的內(nèi)容載入PC。2023/11/28汽車嵌入式系統(tǒng)設計57(3)中斷服務程序處理中斷服務程序一般做如下處理:1)服務中斷。例如清除標志位復制數(shù)據(jù)、保護現(xiàn)場等。2)通過執(zhí)行CLI指令清除CCR中的I位(這樣允許高優(yōu)先級別的中斷清求)。3)處理數(shù)據(jù),完成要處理的功能。通常要求中斷處理程序的設計,應力求簡短。4)通過執(zhí)行RTI指令返回。中斷服務程序的最后一條指令必須是返回指令RTI。S12XE執(zhí)行中斷返回指令時,自動將保存在現(xiàn)行堆棧中的寄存器內(nèi)容和斷點地址彈出,使程序回到中斷前的地址繼續(xù)執(zhí)行,即S12XE從中斷服務程序返回而繼續(xù)執(zhí)行被中止的原來正常運行的程序。2023/11/28汽車嵌入式系統(tǒng)設計582.中斷的現(xiàn)場保護發(fā)生中斷時,所有涉及的寄存器最好都要進行臨時保護,通常保存到堆棧中。堆棧的方向是向低地址增長的。觸發(fā)中斷后,S12XE由硬件自動將CPU寄存器(PC、IY、IX、D、CCR)按順序壓入堆棧,完成內(nèi)部寄存器的保存,但并沒有保存分頁寄存器PPAGE。寄存器內(nèi)容保存后其內(nèi)容保持不變。發(fā)生中斷時一般要等待當前指令完成后才響應中斷,但S12XE有些指令的執(zhí)行周期較長,S12XE可以在這些指令執(zhí)行過程中打斷當前指令,在中斷完成后繼續(xù)進行指令執(zhí)行。但由于中斷過程中曾經(jīng)轉向執(zhí)行別的程序,所以指令隊列中存入的指令將被清空。S12XE中斷發(fā)生后的現(xiàn)場保護的整個過程都由硬件自動完成,用戶不需要編寫任何代碼。2023/11/28汽車嵌入式系統(tǒng)設計593.中斷服務程序中斷發(fā)生并進行現(xiàn)場斷點保護后,CPU將打斷當前的操作,進入中斷處理程序。S12XE從中斷向量地址讀取中斷處理程序的入口地址,載入PC指針,繼而跳轉到中斷處理程序。S12XE每個中斷向量指向的處理程序可以是64KB地址空間的任何值,這就意味著中斷程序可以放在RAM、EEPROM或D-Flash、Flash的任何位置中。一般大部分程序設計只需要將中斷服務處理程序放入常規(guī)的不分頁Flash區(qū)域中。中斷處理程序要盡量簡潔,條件苛刻時還需要使用匯編語言進行編寫,以盡量把占用時間較多的程序放在主程序中完成。2023/11/28汽車嵌入式系統(tǒng)設計604.中斷優(yōu)先級與嵌套處理S12XE每個可屏蔽中斷請求有一個可配置的優(yōu)先級,并可選定由CPU或XGATE處理??善帘沃袛嗾埱罂梢郧短祝@取決于優(yōu)先級。優(yōu)先級的作用只有在多個中斷源同時請求中斷時才能體現(xiàn)。默認情況下,可屏蔽中斷請求不能被另一個可屏蔽中斷請求所中斷。為了使一個中斷服務程序(ISR,InterruptServiceRouting)可以被中斷,ISR必須明確地清除CCR中的I位。清理了I位后,具有更高優(yōu)先級的可屏蔽中斷請求中斷當前ISR。每一個可屏蔽中斷可分為8個優(yōu)先級,支持靈活的優(yōu)先級控制。對于那些被CPU處理的中斷請求,優(yōu)先級可以用于處理嵌套中斷,如果一個高優(yōu)先級的中斷正在進行,優(yōu)先級低的中斷會被自動阻斷。由XGATE??焯幚砼渲玫闹袛嗾埱笫遣荒鼙磺短椎?,因為XGATE在運行時不能被中斷。2023/11/28汽車嵌入式系統(tǒng)設計61系統(tǒng)復位后,向量地址不大于向量基地地址+0x00F2的中斷請求被使能且優(yōu)先級設定為1,并可以由CPU處理。不過有一例外,地址為(向量基地地址+0x0010)的偽中斷向量不能被禁止,它的優(yōu)先級總是為8,且總是由CPU處理這個虛假的異常中斷請求。若優(yōu)先級為0,則禁用相關的中斷請求;如果不止一個中斷請求被配置為相同的中斷優(yōu)先級,向量地址高的中斷請求獲得了優(yōu)先權。滿足下列條件之一,可屏蔽中斷請求必須進行處理:1)外設模塊中的中斷使能位必須被置位。2)相應的中斷請求通道的配置寄存器的設置,必須符合:①XGATE使能位必須是0,中斷請求由CPU處理;②優(yōu)先級必須為非零;③優(yōu)先級必須大于CPU中條件碼寄存器CCR當前的中斷級別。3)CPU中條件碼寄存器CCR的I位必須被清零。4)沒有SWI、TRAP和XIRQ中斷在等待。2023/11/28汽車嵌入式系統(tǒng)設計62需要注意:所有的非屏蔽中斷請求總是比可屏蔽中斷請求的優(yōu)先級更高。如果一個可屏蔽中斷請求被一個非屏蔽中斷請求所中斷,中斷處理級別IPL不受影響。非屏蔽中斷請求是可以被嵌套的。當前的中斷處理級別IPL是存儲在CPU的條件碼寄存器CCR中。這樣,當前的IPL自動被標準中斷堆棧程序壓入堆棧,新的IPL從具有最高優(yōu)先級的中斷請求通道復制到CCR,該中斷請求通道是由CPU處理的。復制動作是在中斷向量到達時發(fā)生的,先前的IPL通過執(zhí)行RTI的指令而自動恢復。2023/11/28汽車嵌入式系統(tǒng)設計632.3.3中斷的使用和配置S12XE的中斷系統(tǒng)支持以下4種運行模式:1)運行模式。這是基本的工作模式。2)等待模式。在等待模式,XINT模塊被凍結。不過,如果中斷發(fā)生或XGATE請求發(fā)生,CPU將被喚醒。3)停止模式。在停止模式,XINT模塊被凍結。不過,如果中斷發(fā)生或XGATE請求發(fā)生,CPU將被喚醒。4)凍結模式(BDM啟用)。在凍結模式,中斷向量基址寄存器是全局控制的。S12XE的中斷除了CPU遇到軟件中斷SWI指令后必須執(zhí)行、遇到非法指令立即中斷不能禁止以及XIRQ只能一次性打開不能關閉(復位默認為關閉)外,其余各種中斷在實際應用時根據(jù)需要進行相應的啟用和配置,即進行中斷初始化。2023/11/28汽車嵌入式系統(tǒng)設計641.中斷屏蔽S12XE中CCR寄存器(CPU內(nèi)部的條件碼寄存器)中有兩個控制位與中斷控制有關。中斷屏蔽位X位專門用來控制非屏蔽中斷XIRQ的打開與關閉。中斷屏敝I位專門用來控制可屏蔽中斷的打開與關閉,I位設為0相當于打開總中斷。2.中斷優(yōu)先級控制在MCU應用系統(tǒng)中,外部端口的某些變化會比其他中斷重要得多,比如復位信號時鐘異常信號等。在S12XE的優(yōu)先級處理中,不可屏敝中斷總體要比可屏敝中斷優(yōu)先級高。實際上6個不可屏蔽中斷也有優(yōu)先級之分,高優(yōu)先級中斷將被優(yōu)先處理。比如復位信號來臨時,S12XE都將立即響應復位信號。2023/11/28汽車嵌入式系統(tǒng)設計65
2023/11/28汽車嵌入式系統(tǒng)設計663.中斷使能及方式控制S12XE有關中斷全局管理的相關寄存器如前所述,它們占據(jù)寄存器地址區(qū)域的0x0120~0x012F地址,在需要改變中斷的向量地址、使能、優(yōu)先級時可進行初始化配置。簡單應用情況下使用復位默認配置即可。MCU的諸多資源模塊都有事件型中斷功能,合理使用各個模塊的中斷,可以使程序更加高效、簡潔。MCU的各個模塊除了實現(xiàn)具體的功能外,一般都可以通過一個標志位使能中斷,具體參見各個功能模塊的寄存器設置。2023/11/28汽車嵌入式系統(tǒng)設計672023/11/28汽車嵌入式系統(tǒng)設計68
2.4S12XE系列MCU的內(nèi)核2.4.1S12XE系列MCU內(nèi)核S12XE系列MCU是16位微控制器,內(nèi)部有高速16位中央處理器CPU12X和6個寄存器。其內(nèi)核具有以下特點:1)16位數(shù)據(jù)寬度支持高效算術運算和高速數(shù)學計算。2)支持多字節(jié)指令,包括大量單字節(jié)指令,能更有效利用ROM空間。3)CPU12X指令運行效率更高。CPU12X能夠在指令隊列緩沖區(qū)中立即存取至少3個字節(jié)的機器碼。4)強大的變址尋址能力。包括:堆棧指針作為變址寄存器尋址;程序計數(shù)器作為變址寄存器尋址;A、B或D累加器偏移量尋址;自動先遞增或先遞減、后遞增或后遞減變址尋址。2023/11/28汽車嵌入式系統(tǒng)設計69S12XE系列MCU內(nèi)核的內(nèi)部寄存器如圖2-7所示。2023/11/28汽車嵌入式系統(tǒng)設計70S12XE的內(nèi)核寄存器包括:1.累加器A、B(Accumulator)或16位累加器D累加器A、B是8位通用寄存器,用于存放操作數(shù)和運算結果。讀取數(shù)據(jù)時,累加器A、B用于存放從存儲器讀出的數(shù)據(jù);寫入數(shù)據(jù)時,累加器A、B用于存放準備寫入存儲器的數(shù)據(jù)。執(zhí)行算術、邏輯操作時,累加器首先存放一個操作數(shù);執(zhí)行完畢時,累加器存放操作結果。累加器A、B是指令系統(tǒng)中最靈活的寄存器,各種尋址方式均可對其尋址。復位時,累加器中的內(nèi)容不受影響。有些指令將累加器A、B組合為一個16位累加器D使用。絕大多數(shù)指令都可使用累加器A或B,但也有些特殊指令A和B不能交換使用(如ABA、SBA、CBA和DAA等),必須使用指定的累加器。2023/11/28汽車嵌入式系統(tǒng)設計712.變址寄存器X、Y(IndexRegister)S12XE內(nèi)核有兩個16位地址寄存器X和Y,稱為間接尋址寄存器,簡稱間址寄存器或變址寄存器。一般情況下作為指針寄存器,用于多種尋址方式下的地址計算,也可用于臨時存放數(shù)據(jù)或參與一些運算,只能按照16位方式訪問。這兩個變址寄存器可交替使用,而不會降低執(zhí)行速度或增加程序長度。匯編語言中,數(shù)據(jù)塊傳送時,X和Y寄存器都可自動加、減1~16,X寄存器常作為源地址指針,Y寄存器常作為目的地址指針,故X和Y寄存器有時也稱做指針寄存器。當指令具有一個以上16位數(shù)值作為其結果時,變址寄存器也可當做累加器使用。由于S12XE內(nèi)核的通用數(shù)據(jù)寄存器較少,因此,乘法運算時需要X參與,除法運算時需要X、Y同時參與。僅有的兩條特殊的8位與16位相加指令為B與X或Y相加,結果分別放在X、Y中,實際上它們已經(jīng)演變成有效地址加載指令。此外,X、Y不再參與其他的算術運算。例如,不存在X、Y與存儲器字之間的加、減法運算,也沒有X、Y與A或D之間的加、減法運算。復位時,X、Y均為0x0000。2023/11/28汽車嵌入式系統(tǒng)設計723.堆棧指針SP(StackPointer)堆棧是在內(nèi)存中專門開辟出來的、按照“先進后出,后進先出”原則進行存取的區(qū)域。堆棧指針SP是指向下一個棧地址的16位寄存器。堆棧指針作為8位或者16位的偏移量尋址中,SP充當變址寄存器功能,CPU利用SP的內(nèi)容來確定操作數(shù)的地址。4.程序計數(shù)器PC(ProgramCounter)16位程序計數(shù)器的內(nèi)容決定了程序的執(zhí)行順序,用戶可以讀取,但不能直接寫入。復位后PC自動回到默認狀態(tài)。S12XE工作時,PC始終指向指令序列中下一條要執(zhí)行的指令,分支、調(diào)用或轉移指令均能改變PC值。PC是特殊寄存器,決定S12XE內(nèi)核的取指地址,不能挪作他用。PC主要為S12XE內(nèi)核的CPU服務,不能參與任何運算,但可輔助進行變址尋址操作。2023/11/28汽車嵌入式系統(tǒng)設計735.條件碼寄存器CCR(ConditionCodeRegister)CCR寄存器中的低8位包括兩部分:5個算術標志位H、N、Z、V、C,反映上一條指令執(zhí)行結果的特征(狀態(tài));3個MCU控制位,即中斷屏蔽位X和I以及STOP指令控制位,通常由軟件設定,以控制S12XE內(nèi)核行為,復位后,X、I均為1,即屏蔽系統(tǒng)中斷。除C、H位,其他各位不參與運算。上述各位含義如下:1)C:進位/借位標志。當加法運算產(chǎn)生進位或減法運算產(chǎn)生借位時,則C=1,否則,C=0。此外,乘法、除法、移位操作或C語言相關指令也會改變C的值。2)V:溢出標志。算術運算后,若出現(xiàn)補碼運算溢出時,則V=1;若無溢出,V=0。2023/11/28汽車嵌入式系統(tǒng)設計743)Z:零標志。算術運算、邏輯運算、比較、加載、存入等指令執(zhí)行后,若操作結果為0時,Z=1。否則,Z=0。4)N:符號位標志。當運算結果為負時,則N=1。N位表示運算結果最高位,算術或邏輯運算后,或者比較、加載、存入操作后,將N置為最高位。N位主要用在二進制補碼運算中,負數(shù)的最高位是1,正數(shù)的最高位是0。當運算結果最高位是1時,則N=1。5)H:輔助進位(半進位)標志。加法過程中,若累加器A中的第3位向第4位產(chǎn)生進位,則H=1;否則,H=0。H位僅僅由累加器A和B的加法指令ABA、不帶進位加法指令ADD和帶進位加法指令等改變。H標志位主要用于BCD碼運算,十進制調(diào)整指令DAA利用H標志位將累加器A中的結果調(diào)整為BCD碼。2023/11/28汽車嵌入式系統(tǒng)設計756)I:可屏蔽中斷位。I位是全局中斷屏蔽控制位,用于禁止或允許所有可屏蔽中斷源,這些中斷源包括外部中斷和片內(nèi)中斷請求。當I=1時,禁止可屏蔽中斷請求;當I=0時,允許可屏蔽中斷請求。7)X:非屏蔽中斷位。X位用于屏蔽來自引腳的外部中斷請求。當X=1時,禁止外部中斷請求;當X=0時,允許外部中斷請求。8)S:STOP指令屏蔽位。當S=1時,禁止執(zhí)行STOP指令;當S=0時,允許執(zhí)行STOP指令。STOP指令將關閉MCU時鐘信號,振蕩器停止工作,MCU處于低功耗工作模式。若該位置1,若遇到STOP指令,則作為NOP指令處理。復位時S=1。2023/11/28汽車嵌入式系統(tǒng)設計762.4.2S12XE的尋址方式、指令集和匯編語言程序設計尋址方式是指CPU在執(zhí)行指令時確定操作數(shù)所在的單元地址的方式。在MCU中,指令是對數(shù)據(jù)的操作,通常把指令中所要操作的數(shù)據(jù)稱為操作數(shù),CPU所需的操作數(shù)可能來自寄存器、指令代碼或存儲單元,CPU在執(zhí)行指令時(NOP指令除外),都要先找到操作數(shù)的地址,從中得到內(nèi)容,然后再完成相應的動作。顯然,尋址方式越多,指令系統(tǒng)的功能就越強、靈活性越大。S12XECPU指令共可綜合為9種尋址方式。2023/11/28汽車嵌入式系統(tǒng)設計771.隱含尋址指令本身已經(jīng)隱含了操作數(shù)所在地址的尋址方式,指令的操作數(shù)隱含在助記符中或無需操作數(shù),這類指令一般為單字節(jié)指令。例如ROLA、PSHB、INX等指令,操作數(shù)隱含分別是CPU寄存器A、B、X中;NOP指令無需操作數(shù)。2.立即尋址指令的操作數(shù)在指令中立即給出,在匯編語言中用“#”號代表一個立即數(shù)。立即尋址類指令常用于給寄存器賦值。如:LDDA#$BF;將十六進制數(shù)BF立即裝載到A中LDX#1234;將十進制數(shù)1234立即裝載到X中2023/11/28汽車嵌入式系統(tǒng)設計783.直接尋址直接尋址又叫零頁尋址,指令中直接給出操作數(shù)的地址。這種方式可以直接訪問存儲器空間中$0000~$00FF段的256個單元,直接尋址方式默認的地址高8位為$00,指令中只需給出單字節(jié)地址。在S12X單片機默認的存儲器地址分配中,這一段是I/O寄存器地址,因此訪問這些I/O寄存器可以使用直接尋址。如:LDAA$55;將8位地址$0055單元的內(nèi)容裝載到A中4.擴展尋址擴展尋址與直接尋址類似,指令中給出操作數(shù)地址,只是這時的地址是16位地址,可以尋址整個64K地址空間,尋址范圍遠大于立即尋址方式。如:LDAA$200A;將16位地址$200A單元的內(nèi)容裝載到A中2023/11/28汽車嵌入式系統(tǒng)設計795.相對尋址相對尋址只用于轉移指令,用于程序跳轉和子程序調(diào)用。在程序中寫出需要跳轉的目的地址的標號,匯編語言程序會自動計算出相對轉移地址并完成跳轉。如:BRALABEL ;無條件跳轉到LABEL標號的地址處BRA* ;無條件跳轉到當前地址(*),此語句實現(xiàn)原地等待BCCDONE ;如果C標志為0,則跳轉到DONE標號的地址處2023/11/28汽車嵌入式系統(tǒng)設計806.變址尋址變址尋址方式以變址寄存器X、Y或者SP、PC寄存器的內(nèi)容為基址,再加上或減去一個偏移量,作為操作數(shù)的最終地址。這個偏移量可以是5位(-16~15)、9位(-256~255,IDX1)或16位(-32768~32767,IDX2)常數(shù),也可以是0,對應指令的占用字節(jié)數(shù)分別為2字節(jié)、3字節(jié)和4字節(jié),功能相同。如:STD7,X ;5位常數(shù)偏移量,偏移量為7;X寄存器內(nèi)容加上7作為地址,2字節(jié)的D內(nèi)容存儲到這里;其中,低地址字節(jié)存D的A,高地址字節(jié)內(nèi)容存D的B2023/11/28汽車嵌入式系統(tǒng)設計81LDAA0,X ;5位常數(shù)偏移量,偏移量為0;X寄存器內(nèi)容作為地址,其所指向單元的內(nèi)容裝載到ALDAB-$FA,PC;9位常數(shù)偏移量,偏移量為-$FA;PC寄存器內(nèi)容減去$FA作為地址,其所指向單元的內(nèi)容裝載到BLDAA1000,X;16位常數(shù)偏移量,偏移量為1000;X寄存器內(nèi)容加1000作為地址,其所指向單元的內(nèi)容裝載到A2023/11/28汽車嵌入式系統(tǒng)設計827.累加器變址尋址累加器變址尋址也簡稱IDX,這種變址尋址的偏移量來自累加器A、B或D,基址寄存器內(nèi)容加上這個無符號偏移量構成操作數(shù)的地址。如:LDAAD,X ;將X值加上D值作為地址,其所指向單元的字節(jié)內(nèi)容裝載到ALDADA,Y ;將Y值加上A值作為地址,其所指向的連續(xù)兩個單元的字內(nèi)容裝載到D2023/11/28汽車嵌入式系統(tǒng)設計838.自加自減的變址尋址有附帶功能的變址尋址,這種尋址方式提供4種方式(先加、先減、后加、后減)去自動改變變址寄存器值,加、減數(shù)值的范圍是1~8,然后確定操作數(shù)的地址。變址寄存器可以是X、Y和SP,這種變址尋址對于連續(xù)數(shù)據(jù)塊的操作十分方便,適合字節(jié)、字、雙字、四字變量的快速定位。如:STAA1,-SP;SP寄存器先減l,然后將A內(nèi)容存儲到SP指向的單元;等效于入棧指令PSHALDX2,SP+;SP指向的字內(nèi)容先裝載到X寄存器,然后SP寄存器加2;等效于出棧指令PULXMOVW2,X+,4,+Y;X寄存器內(nèi)容指向的字數(shù)據(jù)傳送到Y+4指向的地址單元;傳送后X自動后加2,傳送前Y已經(jīng)自動先加42023/11/28汽車嵌入式系統(tǒng)設計849.間接變址尋址該尋址方式將變址寄存器的值加上一個16位偏移量或累加器D的值,形成一個地址,該地址中內(nèi)容并不是實際操作數(shù),該地址中所存放的內(nèi)容才是最終操作數(shù)的有效地址。如:LDAA[1000,X];((1000+X))→A;X+1000的地址單元內(nèi)容作為地址,其指向內(nèi)容裝載到ALDAA[D,Y];((D+Y))→A;Y+D的地址單元內(nèi)容作為地址,其指向內(nèi)容裝載到A2023/11/28汽車嵌入式系統(tǒng)設計85以上尋址方式中:變址尋址相當于C語言中的指針操作;間接變址尋址則相當于C語言中的“指針的指針”。變址尋址方式的通常表象是:如果指令操作碼后面跟的操作數(shù)是變址寄存器X、Y或者SP、PC寄存器,那么該指令的尋址方式就是變址尋址(LEA指令除外),X、Y、SP、PC用作指針。此外,如果把一個16位數(shù)寫入存儲器,則高8位在存儲器低地址處,低8位在存儲器高地址處。Freescale公司的CPU對于16位、32位數(shù)據(jù)與存儲器字節(jié)的對應關系都是規(guī)定為高位低地址、低位高地址,這和Intel公司的規(guī)定正好相反,Intel公司CPU系列使用高位高地址、低位低地址的方式。2023/11/28汽車嵌入式系統(tǒng)設計86補充:S12XECPU的常用指令按照操作類別大致可以分為數(shù)據(jù)傳送類指令、算術運算類指令、邏輯運算類指令、程序控制類指令、CPU控制類指令、中斷類指令、全局讀寫指令和其他指令。每一類別中又有很多小類和多種指令,指令條數(shù)繁多,還涉及各種尋址方式,難以一一盡述??紤]到S12XE嵌入式系統(tǒng)實際應用,大都采用C語言編程開發(fā),使用者也并不需要完全掌握指令集。但對于需要采用匯編語言進行S12XE的應用程序開發(fā)的程序員,則需要全面掌握S12XE的指令集、以及各指令的功能、特點和使用方法。2023/11/28汽車嵌入式系統(tǒng)設計872.4.3關于PRM文件1.PRM文件組成結構按所含的信息PRM文件有五個組成部分:(1)NAMES……END部分用以指定在連接時加入除本項目文件列表之外的額外的目標代碼模塊文件,這些文件都是事先經(jīng)C編譯器或匯編器編譯好的機器碼目標文件而不是源代碼文件。(2)SEGMENTS……END部分定義和劃分芯片所有可用的內(nèi)存資源,包括程序空間和數(shù)據(jù)空間。一般我們將程序空間定義成ROM,把數(shù)據(jù)空間劃分成第0頁的.Z_RAM.和普通區(qū)域的.RAM.,但實際上這些名字都不是系統(tǒng)保留的關鍵詞,可以由用戶隨意修改。用戶也可以把內(nèi)存空間按地址和屬性隨意分割成大小不同的塊,每塊可以自由命名。2023/11/28汽車嵌入式系統(tǒng)設計88(3)PLACEMENT……END部分將指派源程序中所定義的各種段,例如數(shù)據(jù)段DATA_SEG、CONST_SEG和代碼段CODE_SEG被具體放置到哪一個內(nèi)存塊中,它是將源程序中的定義描述和實際物理內(nèi)存掛鉤的橋梁。(4)STACKSIZE定義系統(tǒng)堆棧長度,其后給出的長度字節(jié)數(shù)可以根據(jù)實際應用需要進行修改。堆棧的實際定位取決于RAM內(nèi)存的劃分和使用情況。在常見的RAM線性劃分變量連續(xù)分配的情況下,堆棧將緊挨在用戶所定義的所有變量區(qū)域的高端。但如果你將RAM區(qū)分成幾個不同的塊,應確保其中至少有一個塊能容納已經(jīng)定義的堆棧長度。(5)VECTOR定義中斷向量入口地址。模板在生成PRM文件時已經(jīng)定義了復位向量的入口地址。對于各類中斷向量用戶必須自己按向量編號和中斷服務函數(shù)名相關聯(lián),如果中斷函數(shù)的定義是用interrupt加上向量號,則無需在此重復定義。2023/11/28汽車嵌入式系統(tǒng)設計892.內(nèi)存劃分的具體方式由SEGMENTS開始到END為止,中間可以添加任意多行內(nèi)存劃分的定義,每一行用分號結尾。定義行的語法型式為:[塊名]=[屬性][起始地址]TO[結束地址];其中:塊名的定義和C語言變量定義相同,是以英文字母開頭的一個字符串。屬性可以有三種不同的類型。對于只讀的Flash-ROM區(qū)屬性一定是READ_ONLY,對于可讀寫的RAM區(qū)屬性可以是READ_WRITE,也可以是NO_INIT。它們兩者的關鍵區(qū)別是ANSI-C的初始化代碼會把定位在READ_WRITE塊中的所有全局和靜態(tài)變量自動清零,而NO_INIT塊中的變量將不會被自動清零。對于MCU系統(tǒng),變量在復位時不被自動清零這一特性有時是很關鍵的。起始地址和結束地址決定了一內(nèi)存塊的物理位置,用16進制表示。2023/11/28汽車嵌入式系統(tǒng)設計903.PRM文件實例2023/11/28汽車嵌入式系統(tǒng)設計912.5S12XE最小系統(tǒng)硬件設計2.5.1S12XEP100最小系統(tǒng)S12XEP100芯片的最小系統(tǒng)包括:電源電路;復位電路;晶振電路;BDM調(diào)試接口電路;PLL電路等。如圖2-8所示,圖中也給出了外圍元器件的參考取值,以及一個連接在PK4口上的LED指示燈。2023/11/28汽車嵌入式系統(tǒng)設計922023/11/2893圖2-8S12XEP100最小系統(tǒng)硬件電路圖
2023/11/28汽車嵌入式系統(tǒng)設計94片內(nèi)的鎖相環(huán)PLL電路兼有頻率放大和信號提純的功能,使系統(tǒng)可以以較低的外部時鐘信號獲得較高的系統(tǒng)工作頻率,以降低因高速開關時鐘所造成的高頻噪聲。VDDPLL引腳由單片內(nèi)部提供1.8V電壓。為使系統(tǒng)的電磁兼容性得到保證,必須:1)晶振應盡量靠近MCU時鐘輸入引腳,晶振外殼要接地;2)盡量讓時鐘信號回路周圍電場趨近于零。用地線將時鐘區(qū)圈起來,時鐘線要盡量短;3)晶振、以及對噪聲特別敏感的器件下面不要走線;4)鎖相環(huán)PLL的濾波電路要盡量靠近MCU;5)每個電源端和接地端都要至少接一個去耦電容,并盡量靠近MCU對應引腳。2023/11/28汽車嵌入式系統(tǒng)設計952.5.2振蕩器和時鐘電路系統(tǒng)時鐘是MCU工作的基礎,S12XE的系統(tǒng)時鐘信號由時鐘振蕩電路產(chǎn)生,并由時鐘和復位發(fā)生器(CRG)模塊管理,形成內(nèi)核和外設所需的各種內(nèi)部時鐘信號,其產(chǎn)生與供給情況如圖2-9所示。系統(tǒng)時鐘將決定或影響整個MCU的工作頻率,MCU內(nèi)部的所有時鐘信號都來源于EXTAL引腳,也為MCU與其他外接芯片之間的通信提供了可靠的同步時鐘信號。2023/11/28汽車嵌入式系統(tǒng)設計96圖2-9S12XE時鐘和復位發(fā)生器(CRG)模塊2023/11/28汽車嵌入式系統(tǒng)設計97
2023/11/28汽車嵌入式系統(tǒng)設計98
S12XE在內(nèi)部集成了完整的振蕩電路,XTAL和EXTAL分別為振蕩器的輸出和輸入引腳,XTAL和EXTAL引腳可接入一個石英晶體或陶瓷振蕩器。如果將S12XE的XTAL引腳懸空,則內(nèi)部振蕩器停止工作,應通過EXTAL引入CMOS兼容的外部時鐘信號,如圖2-12所示。2023/11/28汽車嵌入式系統(tǒng)設計99
總線時鐘(BUSCLK)是整個MCU系統(tǒng)的定時基準和工作同步脈沖,其頻率固定為供給時鐘頻率的1/2。當使用復位默認的時鐘選擇時,MCU時鐘源直接來自外部晶振,此時總線頻率就是晶振時鐘(OSCCLK)頻率的1/2,如:當晶振頻率為16MHz時,總線時鐘頻率為8MHz。MCU總線時鐘還可以選擇使用鎖相環(huán)時鐘(PLLCLK),以獲得更高的總線頻率。2023/11/28汽車嵌入式系統(tǒng)設計1002.5.3系統(tǒng)復位與時鐘選擇1.復位功能S12XE共有5種復位情況,分別是上電復位、低電壓復位、外部復位、時鐘監(jiān)視復位和看門狗復位。系統(tǒng)復位后,MCU各個寄存器和控制位都被預置到默認狀態(tài),也有很多內(nèi)部資源不進行預置,保持復位前一刻的狀態(tài),尤其是內(nèi)部RAM和NVM(Non-VolatileMemory,非易丟失存儲器)不受復位影響。S12XE在響應各種外部或偵測到的內(nèi)部系統(tǒng)故障時可進行系統(tǒng)復位,系統(tǒng)復位的用途是錯誤恢復。2023/11/28汽車嵌入式系統(tǒng)設計101(1)上電復位、低電壓復位當MCU內(nèi)部檢測電路發(fā)現(xiàn)電源端VDD引腳出現(xiàn)正跳變或過低時,MCU自動進入復位過程。S12XE上電時,會引發(fā)一個已知的、確定的復位啟動。(2)外部復位S12XMCU配備一個標記為(RESET)?的低電平有效復位引腳,當該引腳電壓為低時觸發(fā)復位。(3)時鐘監(jiān)視復位S12XE內(nèi)部集成的時鐘監(jiān)視電路,專門負責監(jiān)視系統(tǒng)時鐘是否正常,為MCU限定了一個最低工作頻率,如果系統(tǒng)時鐘頻率低于某個預設值或停止時,將強制觸發(fā)系統(tǒng)復位。如果確實需要在低時鐘頻率下工作,則可以關閉時鐘監(jiān)視功能。(4)看門狗(COP)復位COP系統(tǒng)允許S12XE檢測軟件執(zhí)行故障。通常COP在軟件開發(fā)過程中是關閉的。COP系統(tǒng)包含一個用戶設置的倒計數(shù)定時器,若定時器過期,則觸發(fā)一個系統(tǒng)復位。為了防止定時器過期,執(zhí)行的程序必須在倒計數(shù)定時器失效前向其中順序寫入$55和$AA。若程序陷入一個循環(huán),它將不能發(fā)送上述信息,因此將產(chǎn)生COP復位。2023/11/28汽車嵌入式系統(tǒng)設計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度事故車維修技術與人才輸出合同
- 如何進行有效的員工福利調(diào)研
- 2025年農(nóng)產(chǎn)品害蟲防治合作協(xié)議
- 2025年智能真空斷路器項目立項申請報告模范
- 2025年農(nóng)業(yè)服務項目申請報告模稿
- 2025年紫外固化材料項目立項申請報告
- 2025年角鋼項目提案報告模板
- 2025年腈類項目申請報告模板
- 2025年二手獨立產(chǎn)權房產(chǎn)轉讓協(xié)議書
- 2025年商業(yè)店鋪租賃轉讓協(xié)議
- 復產(chǎn)復工試題含答案
- 湖南省長沙市2023-2024學年八年級下學期入學考試英語試卷(附答案)
- 部編版語文三年級下冊第六單元大單元整體作業(yè)設計
- 售后服務經(jīng)理的競聘演講
- 臨床醫(yī)技科室年度運營發(fā)展報告
- 慢加急性肝衰竭護理查房課件
- 文件丟失應急預案
- 從建設和諧社會角度思考治超限載(十)
- 幼兒園小班開學家長會課件
- 云南華葉投資公司2023年高校畢業(yè)生招聘1人筆試參考題庫(共500題)答案詳解版
- ABB電子時間繼電器CTMVS系列操作與安裝指南
評論
0/150
提交評論