MC9S12XS模塊及其應(yīng)用實例_第1頁
MC9S12XS模塊及其應(yīng)用實例_第2頁
MC9S12XS模塊及其應(yīng)用實例_第3頁
MC9S12XS模塊及其應(yīng)用實例_第4頁
MC9S12XS模塊及其應(yīng)用實例_第5頁
已閱讀5頁,還剩237頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

通用I/O口通過配置相應(yīng)存放器位,可以設(shè)置輸入/輸出端口、驅(qū)動能力、內(nèi)置上拉/下拉電阻使用、中斷輸入方式等多種功能。通過對DDR、I/O、RDR、PE、PS和IE等存放器的設(shè)置,用戶可以獲得通用I/O口的不同工作方式。其中,DDR〔數(shù)據(jù)方向存放器〕設(shè)定I/O口為輸入/輸出端口。數(shù)據(jù)存放器〔I/O存放器〕用于設(shè)定I/O口的上下電平。RDR〔驅(qū)動控制存放器〕用于設(shè)定I/O口的輸出驅(qū)動能力。PE〔上拉/下拉使能存放器〕用于當(dāng)I/O口為輸入口時使能內(nèi)置上拉電阻或下拉電阻的使用。PS〔上拉/下拉選擇存放器〕當(dāng)中斷允許位置位時,用于選擇上升沿觸發(fā)或下降沿觸發(fā)中斷;當(dāng)使能內(nèi)置上拉/下拉電阻時,用于選擇使用上拉電阻或下拉電阻。IE〔中斷使能存放器〕用于使能I/O口的中斷功能。 1.?dāng)?shù)據(jù)存放器〔Px〕 數(shù)據(jù)存放器Px中的8位對應(yīng)每個端口中的相應(yīng)引腳,如果某端口的引腳被定義為輸出時,寫入數(shù)據(jù)存放器Px中的數(shù)值,那么從對應(yīng)引腳輸出;如果某端口的引腳被定義為輸入時,可以讀取數(shù)據(jù)存放器Px對應(yīng)引腳的電平值。需要注意PORTE端口是一個特例,它的最低兩位只能為輸入口,所以PORTE端口的數(shù)據(jù)存放器最低兩位是只讀位。 2.?dāng)?shù)據(jù)方向存放器〔DDRx〕 DDRx決定對應(yīng)引腳配置為輸出口還是輸入口,如果某位為“0”,那么對應(yīng)引腳設(shè)定為輸入口;如果某位為“1”,那么對應(yīng)引腳設(shè)定為輸出口。MCU復(fù)位后,DDRx值為0x00,引腳默認(rèn)為輸入口。 需要注意的是,PORTE端口是一個特例,它的最低兩位只能為輸入口,所以PORTE端口的數(shù)據(jù)方向存放器最低兩位是只讀位,讀取這兩位始終返回“0”。 3.上拉電阻控制存放器〔PUCR〕 PORTA、PORTB、PORTE和PORTK端口都有內(nèi)置上拉電阻,PUCR有4位分別配置4個端口選擇使用內(nèi)置上拉電阻,即第7、4、1和0位分別設(shè)置K、E、B和A端口。當(dāng)控制位為“1”時,設(shè)定對應(yīng)端口使用上拉電阻;當(dāng)控制位為“0”時,禁止對應(yīng)端口使用上拉電阻。MCU復(fù)位后,設(shè)定PORTK和PORTE端口使用上拉電阻,PORTB和PORTA端口禁用上拉電阻。

PUCR第6位設(shè)置BKGD引腳使用上拉電阻。當(dāng)該位為“1”時,設(shè)定該端口使用上拉電阻;當(dāng)控制位為“0”時,禁止該端口使用上拉電阻。MCU復(fù)位后,該位為“1”,引腳默認(rèn)為使用內(nèi)置上拉電阻。 4.驅(qū)動控制存放器〔RDR〕

如果PORTA、PORTB、PORTE和PORTK端口為輸出口時,每個端口都可以設(shè)置其輸出驅(qū)動能力,RDR有4位分別設(shè)定4個端口輸出驅(qū)動能力,即第7、4、1和0位分別設(shè)置K、E、B和A端口。如果某個控制位為“1”時,設(shè)定對應(yīng)端口輸出驅(qū)動能力降低;如果某個控制位為“0”時,設(shè)定對應(yīng)端口為正常驅(qū)動輸出方式。 1.?dāng)?shù)據(jù)存放器〔PTx〕 如果數(shù)據(jù)方向存放器DDRx的對應(yīng)位為“0”,即對應(yīng)引腳定義為輸入時,讀取數(shù)據(jù)存放器PTx的對應(yīng)位,那么為對應(yīng)引腳的輸入電平值;如果DDRx的對應(yīng)位為“1”,即對應(yīng)引腳定義為輸出時,寫入PTx存放器的對應(yīng)位,那么為對應(yīng)引腳的輸出電平值。 2.輸入存放器〔PTIx〕 輸入存放器PTIx是一個只讀存放器,如果DDRx的對應(yīng)位為“0”,即對應(yīng)引腳定義為輸入時,讀取PTIx總是返回引腳電平值;如果DDRx的對應(yīng)位為“1”,即對應(yīng)引腳定義為輸出時,利用PTIx可以監(jiān)視對應(yīng)引腳是否過載或短路。 3.?dāng)?shù)據(jù)方向存放器〔DDRx〕 DDRx決定對應(yīng)引腳配置為輸出口還是輸入口,如果某位為“0”,那么對應(yīng)引腳設(shè)定為輸入;如果某位為“1”,那么對應(yīng)引腳設(shè)定為輸出。復(fù)位后,DDRx值為0x00,即MCU復(fù)位后引腳默認(rèn)為輸入口。

PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 4.驅(qū)動控制存放器〔RDRx〕 如果端口為輸出口時,RDRx可以設(shè)置端口對應(yīng)引腳的輸出驅(qū)動能力。如果RDRx某位為“1”,那么對應(yīng)引腳的輸出驅(qū)動能力為正常時的1/5;如果某位為“0”,那么對應(yīng)引腳輸出為正常驅(qū)動能力。復(fù)位后,驅(qū)動控制存放器值為0x00,即MCU復(fù)位后引腳默認(rèn)為滿功率驅(qū)動輸出。PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 5.上拉/下拉使能存放器〔PERx〕 如果端口為輸入口或者“線或”模式時,可以通過上拉/下拉使能存放器PERx使能選擇使用內(nèi)置上拉/下拉電阻。如果PERx某位為“1”時,那么對應(yīng)引腳允許使用內(nèi)置上拉/下拉電阻;如果某位為“0”時,那么對應(yīng)引腳禁用內(nèi)置上拉/下拉電阻。

PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 6.上拉/下拉選擇存放器〔PPSx〕 當(dāng)某引腳被定義為輸入且使能內(nèi)置上拉/下拉電阻時,上拉/下拉選擇存放器PPSx用于選擇使用內(nèi)置上拉或者下拉電阻。如果PPSx某位為“0”,那么對應(yīng)引腳使用上拉電阻;如果某位為“1”,那么對應(yīng)引腳使用下拉電阻。 PORTP、PORTH和PORTJ三個端口都具有中斷功能,當(dāng)某端口允許中斷時,PPSx還具有第二個作用,用于選擇該端口中的引腳中斷為上升沿觸發(fā)或下降沿觸發(fā)。當(dāng)端口某引腳使能中斷時,當(dāng)PPSx對應(yīng)位為“0”時,那么該引腳中斷為下降沿觸發(fā);當(dāng)PPSx對應(yīng)位為“1”,那么該引腳中斷為上升沿觸發(fā)。

PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 7.中斷使能存放器〔PIEx〕 PORTP、PORTH和PORTJ三個端口具有中斷功能,且都有中斷使能存放器PIEx,PIEx允許或者禁止相應(yīng)端口的中斷請求。如果PIEx某位為“1”,那么對應(yīng)引腳允許中斷;如果某位為“0”,那么對應(yīng)引腳禁止中斷。復(fù)位后,中斷使能存放器值為0x00,MCU復(fù)位后關(guān)閉所有端口中斷請求。 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 8.中斷標(biāo)志存放器〔PIFx〕 PORTP、PORTH和PORTJ三個端口具有中斷功能,且都有中斷標(biāo)志存放器PIFx?;赑PSx存放器設(shè)置的邊沿觸發(fā)中斷方式,當(dāng)端口相應(yīng)引腳發(fā)生中斷,并產(chǎn)生有效電平時,那么PIFx中的中斷引腳對應(yīng)位被置位。為了去除PIFx中的中斷標(biāo)志位,需要向該位進(jìn)行寫“1”操作。 5.2.2PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ

PORTP、PORTH和PORTJ三個端口的中斷向量地址及相關(guān)標(biāo)志位、控制位如表5-2所示。 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 1.AD0數(shù)據(jù)存放器0〔PT0AD0〕 當(dāng)不使用AD功能時,如果AD0端口數(shù)據(jù)方向存放器0DDR0AD0的對應(yīng)位為“0”,即對應(yīng)引腳定義為輸入時,讀取PT0AD0的對應(yīng)位,那么為對應(yīng)引腳的輸入電平值;如果DDR0AD0的對應(yīng)位為“1”,即對應(yīng)引腳定義為輸出時,寫入PT0AD0存放器的對應(yīng)位,那么為對應(yīng)引腳的輸出電平值。 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 2.AD0數(shù)據(jù)存放器1〔PT1AD0〕 當(dāng)不使用AD功能時,如果AD0端口數(shù)據(jù)方向存放器1DDR1AD0的對應(yīng)位為“0”,即對應(yīng)引腳定義為輸入時,讀取PT1AD0的對應(yīng)位,那么為對應(yīng)引腳的輸入電平值;如果DDR1AD0的對應(yīng)位為“1”,即對應(yīng)引腳定義為輸出時,寫入PT1AD0存放器的對應(yīng)位,那么為對應(yīng)引腳的輸出電平值。 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 3.AD0數(shù)據(jù)方向存放器0〔DDR0AD0〕 DDR0AD0決定AN00~AN07對應(yīng)引腳為輸出口還是輸入口,如果某位為“0”,那么對應(yīng)引腳設(shè)定為輸入口;如果某位為“1”,那么對應(yīng)引腳設(shè)定為輸出口。如果希望設(shè)置AD0端口為通用I/O口功能,ATD0DIEN〔數(shù)字輸入使能〕存放器必須設(shè)置為“1”,關(guān)于ATD0DIEN存放器的詳細(xì)介紹,請參閱第8章。 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 4.AD0數(shù)據(jù)方向存放器1〔DDR1AD0〕 DDR1AD0決定AN08~AN15對應(yīng)引腳為輸出口還是輸入口,如果某位為“0”,那么對應(yīng)引腳設(shè)定為輸入口;如果某位為“1”,那么對應(yīng)引腳設(shè)定為輸出口。如果希望設(shè)置AD0端口為通用I/O口功能,ATD0DIEN存放器必須設(shè)置為“1”,關(guān)于ATD0DIEN存放器的詳細(xì)介紹,請參閱第8章。 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 5.AD0驅(qū)動控制存放器0〔RDR0AD0〕 如果端口為輸出口時,RDR0AD0可以設(shè)置端口對應(yīng)引腳的輸出驅(qū)動能力。如果RDR0AD0某位為“1”,那么對應(yīng)引腳的輸出驅(qū)動能力為正常時的1/5;如果某位為“0”,那么對應(yīng)引腳輸出為正常驅(qū)動能力。 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 6.AD0驅(qū)動控制存放器1〔RDR1AD0〕 如果端口為輸出口時,RDR1AD0可以設(shè)置端口對應(yīng)引腳的輸出驅(qū)動能力。如果RDR1AD0某位為“1”,那么對應(yīng)引腳的輸出驅(qū)動能力為正常時的1/5;如果某位為“0”,那么對應(yīng)引腳輸出為正常驅(qū)動能力。 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 7.AD0上拉使能存放器0〔PER0AD0〕 如果端口為輸入口時,可以通過PER0AD0使能選擇使用內(nèi)置上拉電阻。如果PER0AD0某位為“1”時,那么對應(yīng)引腳允許使用內(nèi)置上拉電阻;如果某位為“0”時,那么對應(yīng)引腳禁用內(nèi)置上拉電阻。 5.2.3PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 8.AD0上拉使能存放器1〔PER1AD0〕 如果端口為輸入口時,可以通過PER1AD0使能選擇使用內(nèi)置上拉電阻。如果PER1AD0某位為“1”時,那么對應(yīng)引腳允許使用內(nèi)置上拉電阻;如果某位為“0”時,那么對應(yīng)引腳禁用內(nèi)置上拉電阻。 5.3.1控制輸出設(shè)備LED實例

典型LED有陽極和陰極兩個引腳,LED在正向偏置的狀態(tài)下能夠發(fā)光,通過通用I/O口控制LED一個引腳,LED另外一個引腳接固定電平,即可實現(xiàn)LED的點亮控制。

本應(yīng)用實例硬件連接如圖5.21所示,PORTB端口連接8只LED,通過編程實現(xiàn)LED流水燈操作。 5.3.1控制輸出設(shè)備LED實例

由電路圖可知,使用MC9S12XS128的PORTB端口控制8只LED,PORTB端口輸出低電平點亮相應(yīng)LED。本例中流水燈的流動速度沒有實現(xiàn)精確控制,即延時時間沒有精確計算,本書后面章節(jié)會論述如何實現(xiàn)精確定時。 5.3.1控制輸出設(shè)備LED實例

流水燈應(yīng)用實例程序清單如下所示。 通過讀取通用I/O口引腳的輸入電平值,可以得悉輸入設(shè)備撥碼開關(guān)的狀態(tài)。本應(yīng)用實例硬件連接如圖5.22所示。

由電路圖可知,通過MC9S12XS128的PORTA端口可以讀取8位撥碼開關(guān)狀態(tài)。本例依然使用圖5.21所示的控制LED電路,使用MC9S12XS128的PORTB端口控制8只LED燈,考慮通過8只LED燈的亮滅反映8位撥碼開關(guān)狀態(tài)的設(shè)置情況。 5.3.2讀取輸入設(shè)備撥碼開關(guān)狀態(tài)實例

實例程序清單如下所示。.1MC9S12系列中斷系統(tǒng)概述

6.1.2中斷 MC9S12系列MCU的中斷分為可屏蔽中斷和不可屏蔽中斷。MCU有一個條件代碼存放器〔CCR〕,如圖6.2所示,其中的X位和I位與中斷相關(guān),X位是不可屏蔽中斷的屏蔽位,置為“1”那么關(guān)閉不可屏蔽中斷,置為“0”那么允許不可屏蔽中斷;I位是可屏蔽中斷的屏蔽位,置為“1”那么關(guān)閉可屏蔽中斷,置為“0”那么允許可屏蔽中斷。在系統(tǒng)復(fù)位時,CCR這些中斷屏蔽位默認(rèn)為“1”,所以MCU復(fù)位后,不可屏蔽中斷和可屏蔽中斷都處于關(guān)閉狀態(tài)。

6.1.2中斷 1.不可屏蔽中斷 不可屏蔽中斷包括軟件中斷、非法指令陷阱和XIRQ中斷,下面簡要介紹常用的幾個不可屏蔽中斷。 〔1〕軟件中斷 SWI實質(zhì)上是一條指令,但其執(zhí)行過程與中斷相同,即通過中斷矢量確定目標(biāo)地址,中斷矢量為$FFF6~$FFF7,它自動保存MCU的存放器和返回地址,最后必須通過RTI指令返回。 〔2〕非法指令陷阱 MCU正常工作時,每次獲得的都是由匯編或編譯程序生成的有效操作碼,MCU能夠正確解釋并執(zhí)行它們,但當(dāng)受到干擾或系統(tǒng)出現(xiàn)混亂時,可能得到無法識別的操作碼,即非法指令,這時MCU自動產(chǎn)生一次中斷,中斷矢量地址為$FFF8~$FFF9。

6.1.2中斷 1.不可屏蔽中斷 〔3〕XIRQ XIRQ是非屏蔽中斷引腳,無論MCU處于哪種運行狀態(tài),該引腳一旦被拉成低電平,MCU執(zhí)行完當(dāng)前指令后,都會響應(yīng)該中斷,中斷矢量為$FFF4~$FFF5。該中斷一般用于系統(tǒng)掉電檢測、硬件故障等重要事件處理,當(dāng)MCU處于等待或暫停模式時,該中斷將喚醒MCU。

6.1.2中斷 2.可屏蔽中斷 可屏蔽中斷可以在程序控制下由用戶開啟或者關(guān)閉??善帘沃袛嗟拈_關(guān)是條件代碼存放器〔CCR〕中的I位。通過去除I可以開啟可屏蔽中斷。S12系列單片機中的可屏蔽中斷數(shù)量非常多,這里僅對IRQ做簡要介紹,其他的可屏蔽中斷可參見相關(guān)功能模塊的章節(jié)。 MC9S12系列MCU有一個標(biāo)記為IRQ引腳,當(dāng)該引腳出現(xiàn)低電平或者下降沿時,那么會產(chǎn)生中斷請求信號,這也是MCU接受外部事件中斷的主要手段。IRQ控制存放器〔IRQCR〕和IRQ的中斷設(shè)置相關(guān),如圖6.3所示。

6.1.2中斷 通過該存放器中的IRQE位和IRQEN位對IRQ中斷進(jìn)行設(shè)置。 IRQE:中斷電平/邊沿有效選擇: 0表示IRQ引腳配置為低電平有效; 1表示IRQ引腳配置為下降沿有效。 IRQEN:外部IRQ中斷請求使能: 0表示IRQ中斷關(guān)閉; 1表示IRQ中斷允許。

6.1.2中斷 3.中斷堆棧操作順序 因為中斷響應(yīng)過程中,會有隱含的堆棧操作,所以中斷響應(yīng)前,堆棧必須有效,即堆棧指針SP必須指向一個有效的RAM區(qū),而且堆棧的大小必須不少于9個字節(jié)。中斷響應(yīng)堆棧操作如表6-1所示。6.2MC9S12系列中斷優(yōu)先級 MC9S12系列有多個中斷源,所以在同一時刻可能會有兩個或兩個以上的中斷源同時請求中斷,這就要求必須根據(jù)任務(wù)的輕重緩急給每個中斷源分配不同的中斷優(yōu)先級。當(dāng)兩個或兩個以上中斷源同時發(fā)生時,優(yōu)先級高的中斷將先被處理。一般來說,不可屏蔽中斷的優(yōu)先級高于可屏蔽中斷的優(yōu)先級。復(fù)位以及不可屏蔽中斷的優(yōu)先級從高到低依次為:6.2MC9S12系列中斷優(yōu)先級6.2MC9S12系列中斷優(yōu)先級6.2MC9S12系列中斷優(yōu)先級6.2MC9S12系列中斷優(yōu)先級 MC9S12系列默認(rèn)的中斷處理機制如圖6.4所示。從圖中可以看到,MC9S12系列默認(rèn)狀態(tài)下在進(jìn)入中斷效勞程序時,CCR中的I位自動置1,所以禁止響應(yīng)其他可屏蔽中斷,盡管在處理中斷A的效勞程序過程中又來了更高級別的中斷B的中斷請求,MCU也無法及時處理高優(yōu)先級B中斷,必須等待當(dāng)前A中斷效勞程序執(zhí)行完以后才能響應(yīng)高優(yōu)先級B中斷6.2MC9S12系列中斷優(yōu)先級 如果希望在MC9S12系列中實現(xiàn)中斷嵌套,一個比較簡單的方法是進(jìn)入中斷效勞程序時,將CCR中的可屏蔽中斷屏蔽位I清零。這樣可以實現(xiàn)如圖6.5所示的中斷嵌套。6.2MC9S12系列中斷優(yōu)先級 從圖6.5中可以看到,這樣簡單的CCR中的I位處理也可能會帶來問題,就是會出現(xiàn)低優(yōu)先級的中斷請求也可以掛起高優(yōu)先級中斷效勞程序。因為在首先響應(yīng)B中斷效勞程序中已經(jīng)去除了可屏蔽中斷屏蔽位I,所以此時任何可屏蔽中斷請求都能夠得到響應(yīng),這樣就出現(xiàn)了低優(yōu)先級的中斷A打斷高優(yōu)先級B中斷效勞程序的情況。為了解決這個問題,可以只在A中斷效勞程序中去除可屏蔽中斷屏蔽位I,而在B中斷效勞程序中對CCR中的I位不做處理,這樣就可以得到如圖6.6所示的中斷處理機制,即只存在高優(yōu)先級的中斷請求打斷低優(yōu)先級中斷效勞程序的情況。6.3MC9S12系列中斷程序應(yīng)用實例

本實例硬件連接如圖6.7所示,PORTA端口與1個8位撥碼開關(guān)連接,PORTB端口與8只LED連接,IRQ引腳與一個按鍵連接,按鍵按下為低電平。要求編程實現(xiàn)IRQ作為中斷源,采用中斷方式,利用8位撥碼開關(guān)控制8只LED燈的循環(huán)點亮速度,撥碼開關(guān)的不同狀態(tài)設(shè)置了燈的循環(huán)點亮速度值。6.3MC9S12系列中斷程序應(yīng)用實例 本實例中關(guān)于流水燈的實現(xiàn)已經(jīng)在第5章中介紹過,本章著重介紹中斷效勞程序的編寫。中斷效勞程序可以有兩種編寫方式:一種是利用中斷編號關(guān)聯(lián)中斷效勞程序;另一種是通過在.prm文件中的聲明關(guān)聯(lián)中斷效勞程序。首先介紹利用中斷編號編寫中斷效勞程序。從表6.2中可以看到,中斷向量表依次自上而下從0開始編號,中斷在表格中是第7個,所以編號為“6”。另外一種比較方便確定編號的方法是,可以翻開工程中“Includes”文件夾下的“MC9S12XS128.h”文件,頭文件的開始處對所有中斷向量地址和中斷標(biāo)號都做了宏定義,中斷的中斷向量入口地址的宏定義語句為“#defineVirq0xFFF2U”,中斷的中斷標(biāo)號的宏定義語句為“#defineVectorNumber_Virq6U”,所以也可以用“VectorNumber_Virq”代替前文中提到的編號“6”。下面是局部實例程序代碼。6.3MC9S12系列中斷程序應(yīng)用實例6.3MC9S12系列中斷程序應(yīng)用實例6.3MC9S12系列中斷程序應(yīng)用實例6.3MC9S12系列中斷程序應(yīng)用實例6.3MC9S12系列中斷程序應(yīng)用實例 還有另外一種方法實現(xiàn)中斷效勞程序的編寫,這里以CodeWarrior為開發(fā)工具介紹。在CodeWarrior工程中,可以找到擴展名是.prm的文件,在這個文件下定義中斷向量和中斷效勞程序的名稱,這樣在編寫中斷效勞程序時,就不用寫編號了。因為其他局部的程序?qū)崿F(xiàn)方式和上面一樣,此處只介紹中斷效勞程序的設(shè)計。7.1PWM模塊概述 脈沖寬度調(diào)制〔PWM〕是產(chǎn)生精確脈沖序列輸出和實現(xiàn)D/A轉(zhuǎn)換的有效方法,微控制器的脈寬調(diào)制模塊被廣泛應(yīng)用于工業(yè)控制和新型消費機電產(chǎn)品中〔如智能空調(diào)、節(jié)能冰箱、電動自行車等〕。PWM信號通過軟件編程調(diào)節(jié)波形的占空比、周期和相位,能夠用于直流電動機調(diào)速、伺服電動機控制、D/A轉(zhuǎn)換器等應(yīng)用。例如,電視機遙控局部普遍采用14位或16位的PWM產(chǎn)生調(diào)諧電壓;在無人自動駕駛汽車系統(tǒng)中,常用伺服電動機來控制方向盤,伺服電動機的旋轉(zhuǎn)角度與給定的PWM信號占空比一致,每個占空比數(shù)值都對應(yīng)一個旋轉(zhuǎn)角度;在燈光亮度調(diào)節(jié)、直流電動機速度控制等方面,采用PWM信號能夠很容易實現(xiàn)。 MC9S12XS系列產(chǎn)生PWM信號的方法主要有兩種:利用輸出比較功能和MCU內(nèi)置的PWM模塊實現(xiàn)。利用輸出比較功能可以通過軟件編程設(shè)定輸出任意脈沖信號,但會占用CPU資源,而且不易產(chǎn)生精確的脈沖序列;而MCU內(nèi)部集成的PWM模塊專門用于輸出PWM信號,使用時極少占用CPU資源。7.2PWM模塊結(jié)構(gòu)組成和特點

MC9S12XS128內(nèi)置的PWM模塊框圖如圖7.1所示。7.2PWM模塊概述 由圖7.1可知,MC9S12XS128的PWM模塊具有8路8位獨立PWM通道,通過相應(yīng)設(shè)置也可以變?yōu)?個16位PWM通道,每個PWM通道由獨立運行的8位通道計數(shù)器PWMCNT、兩個比較存放器為通道周期存放器PWMPER和占空比存放器PWMDTY等組成。通過對各存放器的參數(shù)設(shè)置,確定PWM波形的輸出周期和占空比,另外還可以通過通道極性存放器PWMPOL和居中對齊使能存放器PWMCAE設(shè)置PWM輸出脈沖波形的極性和對齊方式。7.2PWM模塊概述PWM模塊具有以下根本特征:具有可編程周期和占空比的8個獨立PWM通道;每個PWM通道具有獨立的計數(shù)器;每個通道可編程允許/禁止PWM功能;每個通道可軟件選擇PWM脈沖極性;具有雙緩沖的周期和占空比存放器,當(dāng)?shù)竭_(dá)有效周期終點〔PWM計數(shù)器到達(dá)0〕或通道禁止時,修改值生效;每個通道可編程中心對齊或左對齊輸出;8個8位通道或4個16位通道PWM分辨率;4個時鐘源〔A、B、SA和SB〕提供寬頻帶頻率;可編程的時鐘選擇邏輯;緊急關(guān)閉功能。7.3PWM模塊存放器及設(shè)置 7.3.1PWM使能存放器〔PWME〕 PWM使能存放器〔PWMEnableRegister,PWME〕中的每個控制位對應(yīng)相應(yīng)的PWM通道,可以通過設(shè)置相應(yīng)的控制位啟動或者停止PWM信號輸出。當(dāng)任意一個PWMEx位被置位〔PWMEx=1〕時,相應(yīng)的PWM信號產(chǎn)生輸出。但是,由于PWMEx需要與時鐘源同步,直到PWM模塊時鐘的下一個周期到來,才能輸出正確的PWM波形。 當(dāng)處于級聯(lián)模式時,8個8位PWM通道通過兩兩級聯(lián)構(gòu)成4個16位的PWM通道,此時PWME1、PWME3、PWME5和PWME7對應(yīng)控制4個16位PWM通道,而其他控制位無效,如圖7.2所示。7.3PWM模塊存放器及設(shè)置7.3.1PWM使能存放器〔PWME〕

讀:任何時刻;寫:任何時刻。PWME7:PWM通道7使能位。

0表示禁止PWM通道7輸出;

1表示允許PWM通道7輸出。PWME6:PWM通道6使能位。

0表示禁止PWM通道6輸出;

1表示允許PWM通道6輸出,如果CON67=1,該位無效,且PWM通道6輸出無效。PWME5:PWM通道5使能位。

0表示禁止PWM通道5輸出;

1表示允許PWM通道5輸出。PWME4:PWM通道4使能位。

0表示禁止PWM通道4輸出;

1表示允許PWM通道4輸出,如果CON45=1,該位無效,且PWM通道4輸出無效。7.3PWM模塊存放器及設(shè)置7.3.1PWM使能存放器〔PWME〕PWME3:PWM通道3使能位。

0表示禁止PWM通道3輸出;

1表示允許PWM通道3輸出。PWME2:PWM通道2使能位。

0表示禁止PWM通道2輸出;

1表示允許PWM通道2輸出,如果CON23=1,該位無效,且PWM通道2輸出無效。PWME1:PWM通道1使能位。

0表示禁止PWM通道1輸出;

1表示允許PWM通道1輸出。PWME0:PWM通道0使能位。

0表示禁止PWM通道0輸出;

1表示允許PWM通道0輸出;如果CON01=1,該位無效,且PWM通道0輸出無效。7.3PWM模塊存放器及設(shè)置 7.3.2PWM極性存放器〔PWMPOL〕每個PWM通道波形開始時的信號極性由PWM極性存放器〔PWMPolarityRegister,PWMPOL〕中的極性選擇位〔PPOLx〕決定,如果PPOLx位為1,周期脈沖開始時PWM通道輸出高電平信號,當(dāng)通道計數(shù)器PWMCNTx數(shù)值等于占空比存放器PWMDTYx數(shù)值時翻轉(zhuǎn)為低電平信號;相反,如果PPOLx位為0,周期脈沖開始時PWM通道輸出低電平信號,當(dāng)PWMCNTx數(shù)值等于PWMDTYx數(shù)值時翻轉(zhuǎn)為高電平信號,PWMPOL存放器如圖7.3所示。7.3PWM模塊存放器及設(shè)置 7.3.2PWM極性存放器〔PWMPOL〕讀:任何時刻;寫:任何時刻。 注意:PWMPOL存放器中的PPOLx位可以在任何時刻進(jìn)行寫入操作。如果正在產(chǎn)生PWM信號時要求改變信號極性,那么PWM輸出脈沖在信號極性轉(zhuǎn)換過程中可能被截短或延長。 PPOLx:PWM通道x輸出波形極性位。 0表示PWM通道x在周期脈沖開始時輸出低電平,當(dāng)?shù)竭_(dá)占空比計數(shù)值時翻轉(zhuǎn)為高電平; 1表示PWM通道x在周期脈沖開始時輸出高電平,當(dāng)?shù)竭_(dá)占空比計數(shù)值時翻轉(zhuǎn)為低電平。7.3PWM模塊存放器及設(shè)置 7.3.3PWM時鐘選擇存放器〔PWMCLK〕 每一個PWM通道可以選擇兩個時鐘之一作為該通道的時鐘源。PWM時鐘選擇存放器〔PWMClockSelectRegister,PWMCLK〕如圖7.4所示。 讀:任何時刻;寫:任何時刻。 注意:PWMCLK存放器中的PCLKx位可以在任何時刻寫入。如果正在產(chǎn)生PWM信號時要求改變信號極性,那么PWM輸出脈沖在信號極性轉(zhuǎn)換過程中可能被截短或延長。 PCLK7、PCLK6、PCLK3、PCLK2:PWM通道7、6、3、2時鐘選擇位。 0表示ClockB作為相應(yīng)通道時鐘源; 1表示ClockSB作為相應(yīng)通道時鐘源。 PCLK5、PCLK4、PCLK1、PCLK0:PWM通道5、4、1、0時鐘選擇位。 0表示ClockA作為相應(yīng)通道時鐘源; 1表示ClockSA作為相應(yīng)通道時鐘源。7.3PWM模塊存放器及設(shè)置 7.3.3PWM時鐘選擇存放器〔PWMCLK〕 PWM時鐘選擇框圖如圖7.5所示,從圖中可知,PWM模塊一共有4個時鐘源,分別為ClockA、ClockB、ClockSA和ClockSB,其中ClockA和ClockB由總線時鐘直接分頻得到,分頻因子由PWM預(yù)分頻時鐘選擇存放器〔PWMPRCLK〕中的Bit2~Bit0或Bit6~Bit4確定〔如圖7.6所示〕,PWMPRCLK存放器的介紹詳見節(jié)。ClockSA由ClockA通過PWM比例因子A存放器〔PWMSCLA〕再次分頻得到,ClockSB由ClockB通過PWM比例因子B存放器〔PWMSCLB〕再次分頻得到,PWMSCLA存放器和PWMSCLB存放器的介紹詳見節(jié)和節(jié)。7.3PWM模塊存放器及設(shè)置 7.3.4PWM預(yù)分頻時鐘選擇存放器〔PWMPRCLK〕 讀:任何時刻;寫:任何時刻。 注意:PWMPRCLK存放器中的位可以在任何時刻寫入。如果正在產(chǎn)生PWM信號時要求改變極信號性,那么PWM輸出脈沖在信號極性轉(zhuǎn)換過程中可能被截短或延長。 PCKB2~PCKB0:ClockB預(yù)分頻因子選擇位。 這3位決定了ClockB的分頻因子,ClockB可以作為通道2、3、6或7的兩個時鐘源之一,如表7-2所示。7.3PWM模塊存放器及設(shè)置 7.3.4PWM預(yù)分頻時鐘選擇存放器〔PWMPRCLK〕7.3PWM模塊存放器及設(shè)置 7.3.4PWM預(yù)分頻時鐘選擇存放器〔PWMPRCLK〕 PCKA2~PCKA0:ClockA預(yù)分頻因子選擇位。

這3位決定了ClockA的分頻因子,ClockA是可以作為通道0、1、4或5的兩個時鐘源之一,如表7-3所示。7.3PWM模塊存放器及設(shè)置 7.3.5PWM居中對齊使能存放器〔PWMCAE〕 PWM居中對齊使能存放器〔PWMCenterAlignEnableRegister,PWMCAE〕包含8個控制位,如圖7.7所示。用于控制相應(yīng)PWM通道輸出波形為中心對齊輸出或左對齊輸出。如果CAEx=1,相應(yīng)的PWM通道輸出波形為中心對齊;如果CAEX=0,相應(yīng)的PWM通道輸出波形為左對齊。7.3PWM模塊存放器及設(shè)置 7.3.5PWM居中對齊使能存放器〔PWMCAE〕 注意:僅當(dāng)相應(yīng)的通道被禁止輸出時,才可以設(shè)置該存放器。 CAEx:通道x居中對齊輸出方式位。 0表示通道x輸出波形為左對齊方式。 1表示通道x輸出波形為居中對齊方式。7.3PWM模塊存放器及設(shè)置 7.3.5PWM居中對齊使能存放器〔PWMCAE〕 PWM左對齊輸出波形如圖7.8所示。當(dāng)使用左對齊方式輸出時,8位通道計數(shù)器PWMCNTx只做加法計數(shù);當(dāng)PWMCNTx計數(shù)器加法計數(shù)到通道占空比存放器PWMDTYx中設(shè)置的數(shù)值時,PWM通道輸出波形發(fā)生變化;當(dāng)PWMCNTx計數(shù)器加法計數(shù)到通道周期存放器PWMPERx中設(shè)置的數(shù)值時,PWMCNTx清零,輸出波形電平發(fā)生變化,然后讀取PWMDTYx存放器和PWMPERx存放器中的數(shù)值作為下一次PWMCNTx加法計數(shù)參考使用。PWM通道計數(shù)器PWMCNTx介紹詳見節(jié),PWM通道周期存放器PWMPERx介紹詳見節(jié),PWM通道占空比存放器PWMDTYx介紹詳見節(jié)。7.3PWM模塊存放器及設(shè)置 7.3.5PWM居中對齊使能存放器〔PWMCAE〕 PWM居中對齊輸出波形如圖7.9所示。當(dāng)使用居中對齊格式輸出時,8位計數(shù)器PWMCNTx既做加法計數(shù)器也能做減法計數(shù)器;當(dāng)PWMCNTx計數(shù)器加法計數(shù)到PWMDTYx存放器中設(shè)置的數(shù)值時,PWM通道輸出波形發(fā)生變化;當(dāng)PWMCNTx計數(shù)器加法計數(shù)到PWMPERx存放器中設(shè)置的數(shù)值時,PWMCNTx計數(shù)器會從加法計數(shù)器變?yōu)闇p法計數(shù)器;當(dāng)PWMCNTx計數(shù)器開始減法計數(shù)到PWMDTYx存放器中的數(shù)值時,PWM通道輸出波形再次發(fā)生變化;當(dāng)PWMCNTx計數(shù)器中數(shù)值減到0時,PWMCNTx重新變?yōu)榧臃ㄓ嫈?shù)器,然后讀取PWMDTYx存放器和PWMPERx存放器中的數(shù)值作為下一次PWMCNTx計數(shù)參考使用。7.3PWM模塊存放器及設(shè)置 7.3.6PWM控制存放器〔PWMCTL〕 PWM控制存放器〔PWMControlRegister,PWMCTL〕如圖7.10所示。該存放器用于PWM模塊的各種控制,其中包括4個級聯(lián)控制位,用于將一對8位PWM通道級聯(lián)成一個16位通道。當(dāng)通道6和通道7級聯(lián)時,通道6的存放器成為16位存放器中的高8位字節(jié),通道7的存放器為16位存放器中的低8位字節(jié);當(dāng)通道4和通道5級聯(lián)時,通道4的存放器成為16位存放器中的高8位字節(jié);當(dāng)通道2和通道3級聯(lián)時,通道2的存放器成為16位存放器中的高8位字節(jié);當(dāng)通道0和通道1級聯(lián)時,通道0的存放器成為16位存放器中的高8位字節(jié)。 讀:任何時刻;寫:任何時刻。7.3PWM模塊存放器及設(shè)置 7.3.6PWM控制存放器〔PWMCTL〕 注意:僅當(dāng)需要級聯(lián)的兩個通道都被禁止輸出時,才可以設(shè)置PWMCTL存放器中相應(yīng)的控制位。 ①CON67:通道6、通道7級聯(lián)位。 0表示通道6、7作為兩個獨立的8位PWM通道。 1表示8位PWM通道6、7級聯(lián)形成一個16位PWM通道。通道6的存放器作為16位通道的高8位字節(jié),通道7作為低8位字節(jié),這時通道7的引腳用做16位PWM的信號輸出〔端口PWM7〕,通道7的時鐘選擇控制位、極性控制位、輸出使能控制位、居中對齊使能位有效;通道6的相應(yīng)存放器控制位均無效。 ②CON45:通道4、通道5級聯(lián)位。 0表示通道4、5作為兩個獨立的8位PWM通道。 1表示8位PWM通道4、5級聯(lián)形成一個16位PWM通道。通道4的存放器作為16位通道的高8位字節(jié),通道5作為低8位字節(jié),這時通道5的引腳用做16位PWM的信號輸出〔端口PWM5〕,通道5的時鐘選擇控制位、極性控制位、輸出使能控制位、居中對齊使能位有效;通道4的相應(yīng)存放器控制位均無效。7.3PWM模塊存放器及設(shè)置 7.3.6PWM控制存放器〔PWMCTL〕 ③CON23:通道2、通道3級聯(lián)位。 0表示通道2、3作為兩個獨立的8位PWM通道。 1表示8位PWM通道2、3級聯(lián)形成一個16位PWM通道。通道2的存放器作為16位通道的高8位字節(jié),通道3作為低8位字節(jié),這時通道3的引腳用做16位PWM的信號輸出〔端口PWM3〕,通道3的時鐘選擇控制位、極性控制位、輸出使能控制位、居中對齊使能位有效;通道2的相應(yīng)存放器控制位均無效。 ④CON01:通道0、通道1級聯(lián)位。 0表示通道0、1作為兩個獨立的8位PWM通道。 1表示8位PWM通道0、1級聯(lián)形成一個16位PWM通道。通道0的存放器作為16位通道的高8位字節(jié),通道1作為低8位字節(jié),這時通道1的引腳用做16位PWM的信號輸出〔端口PWM1〕,通道1的時鐘選擇控制位、極性控制位、輸出使能控制位、居中對齊使能位有效;通道0的相應(yīng)存放器控制位均無效。7.3PWM模塊存放器及設(shè)置 7.3.6PWM控制存放器〔PWMCTL〕

如果需要PWM輸出精度更高,可以將2個8位PWM通道級聯(lián)構(gòu)成1個16位PWM通道,如圖7.11所示。7.3PWM模塊存放器及設(shè)置 7.3.6PWM控制存放器〔PWMCTL〕 PSWAI:MCU等待工作模式下PWM停止位。使能該位,可以禁止預(yù)分頻器的時鐘輸入,降低MCU等待模式下的功耗。 0表示等待模式時,允許預(yù)分頻器時鐘輸入; 1表示等待模式時,禁止預(yù)分頻器時鐘輸入。 PFRZ:MCU凍結(jié)工作模式下PWM停止位,在凍結(jié)模式下,PWM通道計數(shù)器PWMCNTx停止計數(shù)。 0表示凍結(jié)模式時,允許凍結(jié)PWM工作; 1表示凍結(jié)模式時,禁止預(yù)分頻器時鐘輸入。7.3PWM模塊存放器及設(shè)置 7.3.7PWM比例因子A存放器〔PWMSCLA〕 PWM比例因子A存放器〔PWMScaleARegister,PWMSCLA〕是可編程分頻存放器,如圖7.12所示,用于將ClockA進(jìn)行分頻,產(chǎn)生ClockSA。通過將ClockA除以PWMSCLA存放器中的值,再除以2,產(chǎn)生ClockSA信號,公式為 讀:任何時刻;寫:任何時刻〔將導(dǎo)致分頻計數(shù)器裝載新的PWMSCLA比例因子值〕。

注意:PWMSCLA默認(rèn)值為256,當(dāng)PWMSCLA=$00時,此時ClockSA等于ClockA的頻率除以512。7.3PWM模塊存放器及設(shè)置 7.3.8PWM比例因子B存放器〔PWMSCLB〕 PWM比例因子B存放器〔PWMScaleBRegister,PWMSCLB〕是可編程分頻存放器,如圖7.13所示,用于將ClockB進(jìn)行分頻,產(chǎn)生ClockSB。通過將ClockB除以PWMSCLB存放器中的值,再除以2,產(chǎn)生ClockSB信號,其公式為 讀:任何時刻;寫:任何時刻〔將導(dǎo)致分頻計數(shù)器裝載新的PWMSCLB比例因子值〕。

注意:PWMSCLB默認(rèn)值為256,當(dāng)PWMSCLB=$00時,此時ClockSB等于ClockB的頻率除以512。7.3PWM模塊存放器及設(shè)置 7.3.9PWM通道計數(shù)器〔PWMCNT〕 每個通道有一個專用的8位加/減計數(shù)器PWMCNT〔PWMChannelCounterRegisters,PWMCNT〕,計數(shù)器PWMCNTx的頻率和時鐘源頻率相關(guān)。可以在任何時刻讀取PWMCNTx中數(shù)值,而不影響PWMCNTx和PWM通道的工作。當(dāng)處于左對齊輸出模式時,PWMCNTx從0開始做加法計數(shù),直到增加到PWM周期存放器PWMPERx1的值;當(dāng)處于居中對齊輸出模式時,PWMCNTx從0開始進(jìn)行加法計數(shù),直到增加到PWMPERx的值,然后再進(jìn)行減法,直至回到0。PWMCNTx存放器如圖7.14所示。7.3PWM模塊存放器及設(shè)置 7.3.9PWM通道計數(shù)器〔PWMCNT〕 向計數(shù)器PWMCNTx寫入任何值將導(dǎo)致其復(fù)位到$00,PWMCNTx計數(shù)器方向設(shè)置為向上計數(shù),從周期存放器PWMPERx和占空比存放器PWMDTYx的緩沖器中得到周期和占空比的數(shù)值,然后根據(jù)極性選擇位PPOLx改變輸出電平。當(dāng)相應(yīng)的PWM通道被禁止〔PWMEx=0〕時,PWMCNTx計數(shù)器不工作;當(dāng)相應(yīng)的PWM通道使能時〔PWMEx=1〕,計數(shù)器以PWMCNTx中的值作為初始值開始計數(shù)。 在16位級聯(lián)模式下,無論對16位計數(shù)器訪問,還是對高8位和低8位計數(shù)器分開訪問,都會使計數(shù)器PWMCNTx復(fù)位清零。讀取16位計數(shù)器必須用16位方式訪問,以保持?jǐn)?shù)據(jù)的一致性,高8位和低8位計數(shù)器分別讀取會得到不正確的數(shù)值。 讀:任何時刻;寫:任何時刻。 注意:當(dāng)通道使能時寫PWMCNTx可能會產(chǎn)生一個無效的PWM周期脈沖。7.3PWM模塊存放器及設(shè)置 7.3.10PWM通道周期存放器〔PWMPER〕 每個PWM通道有一個獨立的周期存放器PWMPER〔PWMChannelPeriodRegister〕,該存放器中的值決定相應(yīng)PWM通道的周期,如圖7.15所示。 周期存放器PWMPERx中的數(shù)值是雙緩沖的,因此,當(dāng)PWMPERx存放器中的數(shù)值改變后,并不立即生效,直到以下事件中的一個發(fā)生: 當(dāng)前有效周期結(jié)束; 寫計數(shù)器PWMCNTx〔計數(shù)器復(fù)位到$00〕; 通道被禁止。 因此,PWM將總是輸出以前的波形或新波形,而不是兩者之間的某種無效波形。如果PWM通道被禁止,寫入周期存放器的數(shù)值將直接進(jìn)入鎖存器和緩沖器。7.3PWM模塊存放器及設(shè)置 7.3.10PWM通道周期存放器〔PWMPER〕 讀:任何時刻;寫:任何時刻。 注意:讀PWMPERx存放器返回最新寫入的數(shù)值,而不是返回當(dāng)前有效的周期值。 PWM輸出波形的周期計算方法是,用選擇的時鐘周期〔ClockA、ClockB、ClockSA或ClockSB〕乘以周期存放器PWMPERx中的數(shù)值。 左對齊方式輸出〔CAEx=0〕: PWMx周期=通道時鐘周期×PWMPERx 居中對齊方式輸出〔CAEx=1〕: PWMx周期=通道時鐘周期×2×PWMPERx7.3PWM模塊存放器及設(shè)置 7.3.11PWM通道占空比存放器〔PWMDTY〕 每個PWM通道有一個獨立的占空比存放器PWMDTY〔PWMChannelDutyRegister〕,該存放器中的值決定相應(yīng)PWM通道的占空比,如圖7.16所示。 占空比存放器PWMDTYx中的數(shù)值是雙緩沖的,因此,當(dāng)PWMDTYx存放器中的數(shù)值改變后,并不立即生效,直到以下事件中的一個發(fā)生: 當(dāng)前有效周期結(jié)束; 寫計數(shù)器PWMCNTx〔計數(shù)器復(fù)位到$00〕; 通道被禁止。 因此,PWM將總是輸出以前的波形或新波形,而不是兩者之間的某種無效波形。如果PWM通道被禁止,寫入占空比存放器的數(shù)值將直接進(jìn)入鎖存器和緩沖器。7.3PWM模塊存放器及設(shè)置 7.3.11PWM通道占空比存放器〔PWMDTY〕 讀:任何時刻;寫:任何時刻。 注意:讀PWMDTYx存放器返回最新寫入的數(shù)值,而不是返回當(dāng)前有效的占空比值。 PWMDTYx存放器中數(shù)值的含義,根據(jù)極性控制位PPOLx的不同而不同。如果PPOLx位是1,PWM輸出波形開始為高電平,當(dāng)PWMCNTx計數(shù)器數(shù)值等于PWMDTYx存放器數(shù)值時變?yōu)榈碗娖?,此時PWMDTYx存放器中的數(shù)值代表了高電平的持續(xù)時間;如果PPOLx位是0,PWM輸出波形開始為低電平,當(dāng)PWMCNTx計數(shù)器數(shù)值等于PWMDTYx存放器數(shù)值時變?yōu)楦唠娖?,此時PWMDTYx存放器中的數(shù)值代表了低電平的持續(xù)時間。 PWM波形占空比計算公式如下:7.3PWM模塊存放器及設(shè)置 7.3.11PWM通道占空比存放器〔PWMDTY〕 表7-5總結(jié)了在忽略PWM輸出格式〔左對齊或居中對齊方式〕和分辨率〔8位或16位〕情況下,PWM輸出波形的臨界情況。7.3PWM模塊存放器及設(shè)置 7.3.12PWM關(guān)閉存放器〔PWMSDN〕 PWM關(guān)閉存放器〔PWMShutdownRegister,PWMSDN〕具有緊急情況下立即關(guān)閉PWM通道輸出的功能,PWM緊急關(guān)閉情況下,PWM通道7被配置為輸入端口。PWMSDN存放器如圖7.19所示。 讀:任何時刻;寫:任何時刻。 PWMIF:PWM中斷標(biāo)志位。當(dāng)PWM7ENA=1時,PWM通道7引腳上的電平變化將產(chǎn)生中斷并置位PWMIF。向PWMIF位寫1操作實現(xiàn)清零,PWMIF位寫0操作無效。 0表示PWM通道7輸入信號無變化; 1表示PWM通道7輸入信號有變化。 PWMIE:PWM中斷使能位。 0表示禁止PWM中斷; 1表示允許PWM中斷。7.3PWM模塊存放器及設(shè)置 7.3.12PWM關(guān)閉存放器〔PWMSDN〕 PWMRSTRT:PWM重新啟動控制位。只有當(dāng)PWM通道7處于無效狀態(tài)〔非緊急關(guān)閉〕時,才可以重新啟動PWM模塊。向PWMRSTRT位寫1〔觸發(fā)事件〕之后,當(dāng)計數(shù)器返回0時,PWM通道才開始運行。如果PWM7ENA位被復(fù)位到0,只有當(dāng)計數(shù)器返回到0后,PWM模塊才能開始工作。讀取該位始終返回0。 PWMLVL:PWM緊急關(guān)閉后輸出電平選擇位。PWM緊急關(guān)閉情況下,PWM通道7為輸入端口,其他PWM通道的輸出電平由PWMLVL位確定。 0表示其他PWM通道輸出低電平; 1表示其他PWM通道輸出高電平。 PWM7IN:PWM通道7輸入狀態(tài)位,該位反響了PWM通道7引腳的電平狀態(tài)。 PWM7INL:PWM緊急關(guān)閉后通道7輸入電平選擇位。PWM緊急關(guān)閉〔PWM7ENA=1〕情況下,該位確定PWM通道7輸入電平有效值。 0表示有效電平為低電平; 1表示有效電平為高電平。 PWM7ENA:PWM緊急關(guān)閉使能位。如果該位為1,通道PWM7被強制配置為輸入端口,并啟用緊急關(guān)閉功能。PWMSDN存放器中其他位僅在PWM7ENA=1時才有意義。 0表示禁止緊急關(guān)閉; 1表示允許緊急關(guān)閉。7.4PWM模塊應(yīng)用實例 本節(jié)通過一個簡單實例,讓讀者掌握PWM模塊的使用和編程方法。 本實例使用某一路PWM輸出實現(xiàn)D/A轉(zhuǎn)換功能,通過調(diào)節(jié)PWM輸出波形占空比,控制LED燈的亮度,硬件連接如圖7.20所示,PWM輸出波形用做D/A輸出時,最簡單的方法就是使用一階低通濾波器〔如圖7.20中R1、C1構(gòu)成一階低通濾波器〕對PWM信號濾波,為了保持輸出電壓穩(wěn)定,要確保輸出阻抗盡可能大。為此,在低通濾波器后增加了電壓跟隨器〔圖7.20中由LM324和R2構(gòu)成〕。軟件編程實現(xiàn)PWM輸出占空比不斷增大,可以觀察到LED燈的亮度不斷增加;之后PWM輸出占空比不斷減小,可以觀察到LED燈的亮度不斷降低。7.4PWM模塊應(yīng)用實例程序清單:7.4PWM模塊應(yīng)用實例程序清單:7.4PWM模塊應(yīng)用實例程序清單:7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 在智能車競賽系統(tǒng)設(shè)計中,直流電動機和伺服電動機的控制涉及智能車的速度與方向控制,是智能車控制好壞兩大關(guān)鍵因素。鑒于篇幅有限,在此僅表達(dá)運用MC9S12XS128的PWM模塊實現(xiàn)對直流電動機和伺服電動機的簡單控制應(yīng)用,更詳細(xì)的速度控制算法和方向〔角度〕控制算法,請讀者參見相關(guān)參考文獻(xiàn)。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用

7.5.1應(yīng)用PWM模塊控制直流電動機 直流電動機驅(qū)動是智能車前行的動力所在。要驅(qū)動、控制一個直流電動機需要設(shè)計直流電動機驅(qū)動電路,既可以使用分立的功率元件〔如MOSFET〕搭建驅(qū)動電路,也可以使用集成的直流電動機功率驅(qū)動芯片。在此,以Freescale公司的H橋功率驅(qū)動芯片MC33887為例,介紹應(yīng)用PWM模塊控制直流電動機,其芯片內(nèi)部結(jié)構(gòu)及引腳圖分別如圖7.21和圖7.22所示〔芯片詳細(xì)資料請讀者參考MC33887數(shù)據(jù)手冊〕。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.1應(yīng)用PWM模塊控制直流電動機 MC33887引腳功能如表7-6所示。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.1應(yīng)用PWM模塊控制直流電動機

在智能車系統(tǒng)中,運用MC33887驅(qū)動直流電動機的原理圖如圖7.23所示。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.1應(yīng)用PWM模塊控制直流電動機 在此用MC9S12XS128的PWM7和PWM3分別作為MC33887的IN1和IN2引腳的輸入控制端,并通過MC9S12XS128的ADC模塊采樣MC33887的反響電流信號〔FB引腳〕,以實時監(jiān)控H橋的高邊工作電流值,實現(xiàn)對電動機的轉(zhuǎn)速和轉(zhuǎn)矩的閉環(huán)控制。將D1〔引腳18〕和D2〔引腳13〕分別通過下拉電阻和上拉電阻連接到GND和5V,以使能OUT1〔引腳6、7〕和OUT2〔引腳14、15〕的輸出控制。運用PWM模塊控制直流電動機的源代碼如下。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.1應(yīng)用PWM模塊控制直流電動機7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.1應(yīng)用PWM模塊控制直流電動機7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.1應(yīng)用PWM模塊控制直流電動機7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.2應(yīng)用PWM模塊控制伺服電動機 伺服電動機〔俗稱為舵機〕是競賽車模標(biāo)準(zhǔn)配件,它是一種位置〔角度〕伺服驅(qū)動器,用于需要角度調(diào)整變化并可以保持某個角度的控制應(yīng)用要求。目前在高檔遙控玩具、各種航模,包括飛機模型,潛艇模型,遙控機器人等裝置中已得到普遍應(yīng)用。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.2應(yīng)用PWM模塊控制伺服電動機 圖7.24是車模伺服電動機的機械結(jié)構(gòu)圖。車模伺服電動機的工作原理:控制信號〔這里為PWM信號〕輸出作用到控制電路板上的信號調(diào)制芯片,獲得一個直流偏置電壓。在伺服電動機的控制電路板上有一個內(nèi)部基準(zhǔn)電路,該電路可以產(chǎn)生一個周期為20ms,寬度為1.5ms的基準(zhǔn)信號,獲得的直流偏置電壓與電位器的當(dāng)前電壓進(jìn)行比較,產(chǎn)生一個輸出電壓差;輸出電壓差的正值或負(fù)值輸入到控制電路板上確定小型直流電動機的正轉(zhuǎn)或反轉(zhuǎn)。當(dāng)小型直流電動機轉(zhuǎn)速一定時,通過級聯(lián)的變速齒輪組帶動可調(diào)電位器旋轉(zhuǎn),最終使得輸出電壓差為0,此時小型直流電動機轉(zhuǎn)動到某一位置,并保持該位置,停止轉(zhuǎn)動。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.2應(yīng)用PWM模塊控制伺服電動機

伺服電動機的輸出轉(zhuǎn)角與輸入PWM波控制信號的占空比存在如圖7.25所示的關(guān)系。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.2應(yīng)用PWM模塊控制伺服電動機

由伺服電動機的工作原理和圖7.25可知,只需改變輸入PWM脈沖信號的占空比便能獲得不同的轉(zhuǎn)角,實現(xiàn)智能車系統(tǒng)的轉(zhuǎn)向控制功能。在此應(yīng)用MC9S12XS128的PWM5模塊控制伺服電動機,伺服電動機的工作電源電壓是4.8~6.0V,為了提高智能車系統(tǒng)的轉(zhuǎn)向性能,在此使用最高工作電壓6.0V,原理圖如圖7.26所示。7.5智能車系統(tǒng)中PWM模塊的應(yīng)用 7.5.2應(yīng)用PWM模塊控制伺服電動機

有關(guān)PWM5的初始化代碼已經(jīng)在前面節(jié)中給出,以下僅給出伺服電動機控制的相關(guān)代碼,即設(shè)置PWM的占空比值,能夠?qū)崿F(xiàn)伺服電動機的相應(yīng)轉(zhuǎn)向要求。8.2ATD模塊結(jié)構(gòu)組成和特點 MC9S12XS128內(nèi)置的ATD模塊如圖8.1所示。8.2ATD模塊結(jié)構(gòu)組成和特點ATD模塊具有以下根本特征:8位/10位/12位可選轉(zhuǎn)換精度;停止模式下轉(zhuǎn)換使用內(nèi)部時鐘;轉(zhuǎn)換完成后為低功耗狀態(tài);自動和可編程數(shù)值比較,可設(shè)定大于或者小于等于設(shè)定值時中斷申請;可編程采樣時間;左對齊/右對齊轉(zhuǎn)換數(shù)值;外部觸發(fā)功能;轉(zhuǎn)換完成中斷申請;16路模擬輸入通道多路開關(guān);可實現(xiàn)VRH、VRL和(VRH+VRL)/2特殊轉(zhuǎn)換;轉(zhuǎn)換序列長度為1~16;連續(xù)轉(zhuǎn)換模式;多通道掃描功能;外部觸發(fā)功能可配置為AD通道或4個外部附加觸發(fā)輸入端,外部觸發(fā)源可選擇片外或片內(nèi)信號。8.3ATD模塊存放器及設(shè)置 MC9S12XS128的ATD模塊相關(guān)存放器詳見表8-1。8.3ATD模塊存放器及設(shè)置8.3ATD模塊存放器及設(shè)置 8.3.1ATD控制存放器0〔ATDCTL0〕 ATD控制存放器0〔ATDControlRegister0,ATDCTL0〕,如圖8.2所示。該存放器寫操作將中止當(dāng)前轉(zhuǎn)換序列。8.3ATD模塊存放器及設(shè)置 8.3.1ATD控制存放器0〔ATDCTL0〕 讀:任何時刻;寫:任何時刻,特殊模式下總是對保存位〔Bit7〕寫0操作。 WRAP3~WRAP0:返轉(zhuǎn)通道選擇位。當(dāng)執(zhí)行多通道轉(zhuǎn)換時,這4位確定返轉(zhuǎn)通道,多通道返轉(zhuǎn)編碼如表8-2所示。8.3ATD模塊存放器及設(shè)置 8.3.2ATD控制存放器1〔ATDCTL1〕 ATD控制存放器1〔ATDControlRegister1,ATDCTL1〕,如圖8.3所示。該存放器寫操作將中止當(dāng)前轉(zhuǎn)換序列。8.3ATD模塊存放器及設(shè)置 8.3.2ATD控制存放器1〔ATDCTL1〕

讀:任何時刻;寫:任何時刻。 ETRIGSEL:外部觸發(fā)源選擇位。該位選擇外部觸發(fā)源是AD通道,還是ETRIG3~0輸入引腳。對于ERTIG3~0輸入端的使用請參考MC9S12XS128數(shù)據(jù)手冊。如果ETRIG3~0的某輸入端不可用,置位ETRIGSEL操作無效,這意味著只能選擇AD通道作為外部觸發(fā)源。ETRIGCH3~ETRIGCH0:外部觸發(fā)通道選擇位,這4位選擇AD某通道或ERTIG3~0某輸入端作為外部觸發(fā)源。外部觸發(fā)通道選擇編碼詳見表8-3。8.3ATD模塊存放器及設(shè)置 8.3.2ATD控制存放器1〔ATDCTL1〕8.3ATD模塊存放器及設(shè)置 8.3.2ATD控制存放器1〔ATDCTL1〕 SRES1~SRES0:A/D分辨率選擇位。設(shè)置A/D轉(zhuǎn)換結(jié)果分辨率,詳見表8-4。 SMP_DIS:采樣前放電位選擇。0表示采樣前不放電; 1表示某通道采樣前,內(nèi)部采樣電容會放電。這會增加2個ATD時鐘周期的采樣時間,有助于采樣前進(jìn)行開路檢測。8.3ATD模塊存放器及設(shè)置 8.3.3ATD控制存放器2〔ATDCTL2〕 ATD控制存放器2〔ATDControlRegister2,ATDCTL2〕,如圖8.4所示。該存放器寫操作將中止當(dāng)前轉(zhuǎn)換序列。8.3ATD模塊存放器及設(shè)置 8.3.3ATD控制存放器2〔ATDCTL2〕 讀:任何時刻;寫:任何時刻。 AFFC:ATD模塊標(biāo)志快速去除位。 0表示ATD轉(zhuǎn)換完成標(biāo)志位由各自CCFn標(biāo)志位寫1操作去除; 1表示通過快速去除序列修改所有ATD轉(zhuǎn)換完成標(biāo)志位。當(dāng)比較使能位CMPEn=0時,讀取結(jié)果存放器將自動去除相應(yīng)CCF標(biāo)志位;當(dāng)比較使能位CMPEn=1時,結(jié)果存放器寫操作將自動去除相應(yīng)CCF標(biāo)志位。 ICLKSTP:停止模式下內(nèi)部時鐘位。該位使能停止模式下的AD轉(zhuǎn)換。當(dāng)進(jìn)入停止模式且ICLKSTP=1時,ATD轉(zhuǎn)換時鐘自動切換到內(nèi)部時鐘ICLK。當(dāng)前轉(zhuǎn)換序列將不受影響地繼續(xù)轉(zhuǎn)換,轉(zhuǎn)換速率將從預(yù)分頻總線頻率變?yōu)镮CLK頻率。ICLK頻率下,ATDCTL4存放器中的PRS4~PRS0預(yù)分頻因子無效。停止模式下的AD轉(zhuǎn)換,外部觸發(fā)將不工作;自動比較中斷或序列完成中斷用于軟件中斷處理AD采樣值。從運行模式轉(zhuǎn)換到停止模式期間,或者從停止模式轉(zhuǎn)換到運行模式期間,轉(zhuǎn)換結(jié)果不會寫入結(jié)果存放器,不置位CCF標(biāo)志位且不進(jìn)行比較處理。停止模式下且ICLKSTP=1時,脫離停止模式需要有ATDCLK切換回總線時鐘的ATD停止恢復(fù)時間tATDSTPRCV,此時間內(nèi),不能訪問ATD存放器。 0表示進(jìn)入停止模式時如果AD轉(zhuǎn)換序列正在進(jìn)行,那么中止當(dāng)前轉(zhuǎn)換序列。退出停止模式時AD轉(zhuǎn)換自動重啟; 1表示停止模式下AD轉(zhuǎn)換使用內(nèi)部時鐘〔ICLK〕進(jìn)行轉(zhuǎn)換。8.3ATD模塊存放器及設(shè)置 8.3.3ATD控制存放器2〔ATDCTL2〕 ETRIGLE:外部觸發(fā)電平/邊沿控制位。該位確定外部觸發(fā)信號是邊沿觸發(fā)還是電平觸發(fā)。該位和ETRIGP位配合使用,這2位外部觸發(fā)設(shè)置詳見表8-5。 ETRIGP:外部觸發(fā)極性控制位。該位確定外部觸發(fā)信號的極性。該位和ETRIGLE位配合使用,這2位外部觸發(fā)設(shè)置詳見表8-5。8.3ATD模塊存放器及設(shè)置 8.3.3ATD控制存放器2〔ATDCTL2〕ETRIGE:外部觸發(fā)模式使能位。該位允許表8-3中描述的AD通道或者ETRIG3~0輸入端作為外部觸發(fā)源。如果外部觸發(fā)源是AD某通道,那么使能該通道的數(shù)字輸入緩沖功能。外部觸發(fā)允許與外部事件實現(xiàn)同步轉(zhuǎn)換。停止模式下的AD轉(zhuǎn)換,外部觸發(fā)不工作。 0表示禁止外部觸發(fā); 1表示允許外部觸發(fā)。ASCIE:ATD轉(zhuǎn)換序列完成中斷使能位。該位使能,當(dāng)SCF置位時,那么ATD轉(zhuǎn)換序列完成后將產(chǎn)生中斷請求。 0表示禁止ATD轉(zhuǎn)換序列完成產(chǎn)生中斷請求;1表示允許ATD轉(zhuǎn)換序列完成產(chǎn)生中斷請求。ACMPIE:ATD比較中斷使能位。該位使能,當(dāng)自動比較功能使能,即ATDCMPE存放器中的比較使能位CMPEn=1時,那么相應(yīng)比較位可申請中斷。如果CCFn標(biāo)志置位,將觸發(fā)比較中斷。 0表示禁止ATD比較中斷請求; 1表示允許ATD比較中斷請求。8.3ATD模塊存放器及設(shè)置 8.3.4ATD控制存放器3〔ATDCTL3〕 ATD控制存放器3〔ATDControlRegister3,ATDCTL3〕,如圖8.5所示。該存放器寫操作將中止當(dāng)前轉(zhuǎn)換序列。8.3ATD模塊存放器及設(shè)置 8.3.4ATD控制存放器3〔ATDCTL3〕 讀:任何時刻;寫:任何時刻。DJM:結(jié)果存放器數(shù)據(jù)對齊方式選擇位。該位確定結(jié)果存放器中轉(zhuǎn)換數(shù)據(jù)的對齊格式,轉(zhuǎn)換結(jié)果數(shù)據(jù)總是無符號。 0表示結(jié)果存放器中的數(shù)據(jù)格式左對齊; 1表示結(jié)果存放器中的數(shù)據(jù)格式右對齊。 表8-6中給出輸入信號為0~5.12V情況下的ATD轉(zhuǎn)換結(jié)果例如。8.3ATD模塊存放器及設(shè)置 8.3.4ATD控制存放器3〔ATDCTL3〕

S8C、S4C、S2C、S1C:轉(zhuǎn)換序列長度定義位。這4位控制每個序列轉(zhuǎn)換的長度。A/D轉(zhuǎn)換序列長度定義詳見表8-7。復(fù)位后,S4C默認(rèn)為1,所以默認(rèn)的A/D轉(zhuǎn)換序列的長度為4。8.3ATD模塊存放器及設(shè)置 8.3.4ATD控制存放器3〔ATDCTL3〕 FIFO:結(jié)果存放器先進(jìn)先出〔FIFO〕模式選擇位。如果該位為0〔非FIFO模式〕,那么AD轉(zhuǎn)換結(jié)果基于轉(zhuǎn)換序列映射到結(jié)果存放器,第1個轉(zhuǎn)換結(jié)果放入第1個結(jié)果存放器ATDDR0,第2個轉(zhuǎn)換結(jié)果放入第2個結(jié)果存放器ATDDR1,以此類推。 如果該位為1〔FIFO模式〕,那么AD轉(zhuǎn)換開始和結(jié)束時,轉(zhuǎn)換計數(shù)器不復(fù)位,轉(zhuǎn)換結(jié)果被依次存放在結(jié)果存放器。連續(xù)轉(zhuǎn)換序列模式〔SCAN=1〕,到達(dá)最后結(jié)果存放器時,結(jié)果存放器計數(shù)器將返轉(zhuǎn)。轉(zhuǎn)換計數(shù)器值〔ATDSTAT0存放器中的CC3~CC0〕確定當(dāng)前轉(zhuǎn)換結(jié)果存放的相應(yīng)結(jié)果存放器,結(jié)果存放器保存的有效數(shù)據(jù)可查詢轉(zhuǎn)換完成標(biāo)志位得悉。 FIFO模式下,中止當(dāng)前轉(zhuǎn)換或開始新轉(zhuǎn)換將去除轉(zhuǎn)換計數(shù)器。ATDCTL5存放器寫操作,新轉(zhuǎn)換序列的第1個轉(zhuǎn)換結(jié)果,總是放入第1個結(jié)果存放器ATDDR0。 如果FIFO位為1,禁用結(jié)果存放器自動比較功能,ATD模塊工作方式如同ACMPIE=0,CMPEn=0一樣。 0表示轉(zhuǎn)換結(jié)果根據(jù)選擇的轉(zhuǎn)換序列長度放入相應(yīng)結(jié)果存放器; 1表示轉(zhuǎn)換結(jié)果依次放入結(jié)果存放器〔到達(dá)最后結(jié)果存放器時再返轉(zhuǎn)〕。8.3ATD模塊存放器及設(shè)置 8.3.4ATD控制存放器3〔ATDCTL3〕 FRZ1、FRZ0:凍結(jié)模式下背景調(diào)試使能控制位。當(dāng)背景調(diào)試程序時,如果遇到斷點,有時希望此時ATD模塊停止工作。這2位共同確定凍結(jié)模式下遇到斷點時ATD模塊的工作狀態(tài),如表8-8所示。8.3ATD模塊存放器及設(shè)置 8.3.5ATD控制存放器4〔ATDCTL4〕 ATD控制存放器4〔ATDControlRegister4,ATDCTL4〕,如圖8.6所示,該存放器寫操作將中止當(dāng)前轉(zhuǎn)換序列。8.3ATD模塊存放器及設(shè)置 8.3.5ATD控制存放器4〔ATDCTL4〕 SMP2~SMP0:采樣時間選擇位。這3位確定以ATD轉(zhuǎn)換時鐘周期為單位的采樣時間長度,注意ATD轉(zhuǎn)換時鐘周期和ATD時鐘預(yù)分頻因子相關(guān)。表8-9列出了采樣時間長度的選擇。 PRS4~PRS0:ATD時鐘預(yù)分頻因子選擇位。這5位確定ATD時鐘預(yù)分頻因子的二進(jìn)制PRS值,ATD轉(zhuǎn)換時鐘頻率計算公式為fATDCLK=fBUS/(2×(PRS+1))

式中,fATDCLK允許的頻率范圍請參考MC9S12XS128數(shù)據(jù)手冊。8.3ATD模塊存放器及設(shè)置 8.3.6ATD控制存放器5〔ATDCTL5〕 ATD控制存放器5〔ATDControlRegister5,ATDCTL5〕,如圖8.7所示,該存放器寫操作將中止當(dāng)前轉(zhuǎn)換序列,啟動新的轉(zhuǎn)換序列。假設(shè)外部觸發(fā)模式使能位ETRIGE=1,那么初始化ATDCTL5存放器,將啟動新的轉(zhuǎn)換序列,每次觸發(fā)事件都會發(fā)生新的轉(zhuǎn)換。8.3ATD模塊存放器及設(shè)置 8.3.6ATD控制存放器5〔ATDCTL5〕 讀:任何時刻;寫:任何時刻。SC:特殊通道轉(zhuǎn)換位。如果該位置位,可使用本存放器中的CD、CC、CB和CA選擇特殊通道轉(zhuǎn)換,詳見表8-10。 1表示禁止特殊通道轉(zhuǎn)換; 0表示允許特殊通道轉(zhuǎn)換。 SCAN:連續(xù)轉(zhuǎn)換序列模式選擇位。該位確定AD轉(zhuǎn)換序列執(zhí)行是連續(xù)轉(zhuǎn)換還是只轉(zhuǎn)換一次。如果外部觸發(fā)模式使能位ETRIGE=1,那么設(shè)置該位無效,這說明外部觸發(fā)事件總是啟動單次轉(zhuǎn)換序列。 0表示單次轉(zhuǎn)換序列模式; 1表示連續(xù)轉(zhuǎn)換序列模式〔稱為掃描模式〕。8.3ATD模塊存放器及設(shè)置 8.3.6ATD控制存放器5〔ATDCTL5〕 MULT:多通道采樣模式選擇位。當(dāng)MULT位為0時,ATD序列控制器只從指定的模擬輸入通道采樣完成轉(zhuǎn)換序列。模擬輸入通道選擇編碼由本存放器中的CD、CC、CB和CA位共同確定。當(dāng)MULT位為1時,ATD序列控制器從多個輸入通道采樣數(shù)據(jù),輸入通道數(shù)目由轉(zhuǎn)換序列長度值〔ATDCTL3存放器中的S8C、S4C、S2C和S1C位〕確定,其中采樣的第一個輸入通道由通道選擇編碼〔ATDCTL5存放器中的CD、CC、CB和CA位〕確定,之后轉(zhuǎn)換序列中的輸入通道由遞增的通道選擇編碼確定或者返轉(zhuǎn)回到AN0〔輸入通道0〕。 0表示單通道采樣; 1表示多通道采樣。 CD、CC、CB、CA:模擬量輸入通道選擇編碼位。這4位用于選擇相應(yīng)的模擬輸入通道,表8-10列出了模擬輸入通道選擇編碼。 單通道轉(zhuǎn)換〔MULT=0〕時,通道選擇編碼確定了采樣和轉(zhuǎn)換的模擬輸入通道。 多通道轉(zhuǎn)換〔MULT=1〕時,通道選擇編碼確定了轉(zhuǎn)換序列中第一個輸入通道。之后轉(zhuǎn)換序列中的采樣通道由遞增的通道選擇編碼確定或者返轉(zhuǎn)回到AN0〔返轉(zhuǎn)通道由ATDCTL0存放器中的返轉(zhuǎn)通道選擇位WRAP3~WRAP0確定〕。當(dāng)起始轉(zhuǎn)換通道號超過WRAP3~WRAP0定義的編碼時,將從AN15返轉(zhuǎn)到AN0。8.3ATD模塊存放器及設(shè)置 8.3.6ATD控制存放器5〔ATDCTL5〕8.3ATD模塊存放器及設(shè)置 8.3.7ATD狀態(tài)存放器0〔ATDSTAT0〕 ATD狀態(tài)存放器0〔ATDStatusRegister0,ATDSTAT0〕,如圖8.8所示。8.3ATD模塊存放器及設(shè)置 8.3.7ATD狀態(tài)存放器0〔ATDSTAT0〕 讀:任何時刻;寫:任何時刻〔CC3、CC2、CC1和CC0位寫操作無效〕。 ATDSTAT0存放器中有轉(zhuǎn)換序列完成標(biāo)志位SCF、外部觸發(fā)復(fù)寫標(biāo)志位ETORF、結(jié)果存放器復(fù)寫標(biāo)志位FIFOR和A/D轉(zhuǎn)換計數(shù)器CC3~CC0。 SCF:轉(zhuǎn)換序列完成標(biāo)志位。當(dāng)一次轉(zhuǎn)換序列完成后,該標(biāo)志位置位;如果為連續(xù)轉(zhuǎn)換序列模式〔SCAN=1〕,每次轉(zhuǎn)換完成后都會置位該標(biāo)志位。 當(dāng)發(fā)生以下情況時,該標(biāo)志位被清零。 ①SCF位寫1操作。 ②ATDCTL5存放器寫操作〔啟動新的轉(zhuǎn)換序列〕。 ③當(dāng)AFFC=1時,讀取結(jié)果存放器。 0表示轉(zhuǎn)換序列未完成; 1表示轉(zhuǎn)換序列已完成。8.3ATD模塊存放器及設(shè)置 8.3.7ATD狀態(tài)存放器0〔ATDSTAT0〕 ETORF:外部觸發(fā)復(fù)寫標(biāo)志位。當(dāng)處于邊沿觸發(fā)模式〔ETRIGLE=0〕時,如果轉(zhuǎn)換序列正在進(jìn)行,同時又檢測到一個有效邊沿觸發(fā)信號時,該標(biāo)志位置位。 當(dāng)發(fā)生以下情況時,該標(biāo)志位被清零。 ①ETORF位寫1操作。 ②TDCTL0、ATDCTL1、ATDCTL2、ATDCTL3、ATDCTL4、ATDCMPE或ATDCMPHT任意存放器寫操作〔中止當(dāng)前轉(zhuǎn)換序列〕。 ③TDCTL5存放器寫操作〔啟動新的轉(zhuǎn)換序列〕。 0表示未發(fā)生外部觸

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論