DSP原理及應(yīng)用-TMS320DM6437 課件 第九章:TMS320DM6437輸入輸出接口與定時器_第1頁
DSP原理及應(yīng)用-TMS320DM6437 課件 第九章:TMS320DM6437輸入輸出接口與定時器_第2頁
DSP原理及應(yīng)用-TMS320DM6437 課件 第九章:TMS320DM6437輸入輸出接口與定時器_第3頁
DSP原理及應(yīng)用-TMS320DM6437 課件 第九章:TMS320DM6437輸入輸出接口與定時器_第4頁
DSP原理及應(yīng)用-TMS320DM6437 課件 第九章:TMS320DM6437輸入輸出接口與定時器_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

DSP原理及應(yīng)用第九章TMS320DM6437的GPIO與定時器第九章TMS320DM6437通用輸入/輸出接口與定時器9.1通用輸入/輸出接口(GPIO)9.2定時器9.1通用輸入/輸出接口(GPIO)9.1.1GPIO接口概述

TMS320DM6437的GPIO接口提供了通用輸入/輸出引腳,其既可配置為輸出,也可配置為輸入。當(dāng)配置為輸出時,通過寫內(nèi)部寄存器來控制輸出引腳狀態(tài);當(dāng)配置為輸入時,通過讀內(nèi)部寄存器來檢測輸入狀態(tài)。此外,GPIO接口還可通過不同的中斷或事件產(chǎn)生模式來觸發(fā)CPU中斷和EDMA(增強(qiáng)型直接內(nèi)存存取)事件。TMS320DM6437有多達(dá)111個GPIO信號引腳,提供了與外部設(shè)備的通用連接,GPIO接口分為7組(Banks),前6組各包含16位,如0組為GP[0:15],第7組GPIO包含15位,即GP[96:110],GPIO接口與ZWT封裝芯片的引腳對應(yīng)關(guān)系可參考附錄B。GPIO外設(shè)的輸入時鐘表示為鎖相環(huán)PLL1的6分頻,最大的運行速度為10MHz。TMS320DM6437通過引腳多路復(fù)用來實現(xiàn)在盡可能小的封裝上容納盡可能多的外設(shè)功能。引腳多路復(fù)用可通過硬件配置器件復(fù)位和寄存器軟件編程設(shè)置來控制。9.1.2GPIO功能

TMS320DM6437的GPIO接口支持如下功能:①、多達(dá)111個3.3VGPIO引腳,即GP[0:110];②、中斷:

?多達(dá)8個位于Bank0的獨立中斷GP[0:7];

?所有GPIO信號都可作為中斷源,7組GPIO都有其各自的中斷信號;

?可規(guī)定每組GPIO中斷使能信號,通過上升沿或下降沿來觸發(fā)中斷。③、直接內(nèi)存存取DMA事件

?多達(dá)8個位于Bank0的獨立的GPIODMA事件;

?7組GPIO都有其各自的DMA事件信號。④、設(shè)置/清除功能位:固件寫1到對應(yīng)的位來設(shè)置或清除GPIO信號,這允許多個固件進(jìn)程在沒有臨界區(qū)保護(hù)(禁用中斷、編程GPIO、重啟中斷、防止上下文在GPIO編程中切換到另一個進(jìn)程)的情況下切換GPIO輸出信號。9.1通用輸入/輸出接口(GPIO)9.1通用輸入/輸出接口(GPIO)⑤、獨立的輸入/輸出寄存器:通過讀輸入/輸出寄存器可反映輸入/輸出引腳狀態(tài)。⑥、輸出寄存器除了設(shè)置/清除,還可通過直接寫輸出寄存器來切換GPIO輸出信號。⑦、當(dāng)讀輸出寄存器時,其反映了輸出驅(qū)動狀態(tài)。GPIO結(jié)構(gòu)如圖9-1所示,下面分別介紹使用GPIO信號作為輸出或輸入的設(shè)置方法:(1)、使用GPIO信號作為輸出GPIO信號可通過寫GPIO方向寄存器(DIR)來配置輸入或輸出操作。要將給定的GPIO信號配置為輸出,需在DIR中清除該GPIO相關(guān)的位信號。當(dāng)GPIO被配置為輸出時,共有3個寄存器用來控制GPIO輸出驅(qū)動狀態(tài):

?GPIO設(shè)置數(shù)據(jù)寄存器(SET_DATA)控制驅(qū)動GPIO信號為高;

?GPIO清除數(shù)據(jù)寄存器(CLR_DATA)控制驅(qū)動GPIO信號為低;

?GPIO輸出數(shù)據(jù)寄存器(OUT_DATA)包含當(dāng)前的輸出信號狀態(tài)。

讀SET_DATA、CLR_DATA和OUT_DATA返回的輸出狀態(tài)不一定是真正的信號狀態(tài),因為一些信號可能被配置為輸入,實際的信號狀態(tài)通過GPIO相關(guān)的輸入數(shù)據(jù)寄存器(IN_DATA)讀取,IN_DATA包含外部信號的實際邏輯狀態(tài)。為了驅(qū)動GPIO信號為高,可選以下任一種方法:一是將邏輯1寫入該GPIO相關(guān)的SET_DATA位,SET_DATA中包含0的比特位不影響相關(guān)輸出信號的狀態(tài);二是通過使用讀-修改-寫(read-modify-write)操作,修改該GPIO相關(guān)的OUT_DATA位,在GPIO輸出信號上驅(qū)動的邏輯狀態(tài)與寫入到OUT_DATA所有位的邏輯值相匹配。同樣,為了驅(qū)動GPIO信號為低,可選以下任一方法:一是將邏輯1寫入該GPIO相關(guān)的CLR_DATA位,CLR_DATA中包含0的比特位不影響相關(guān)輸出信號的狀態(tài);二是通過使用讀-修改-寫(read-modify-write)操作,修改該GPIO相關(guān)的OUT_DATA位,在GPIO輸出信號上驅(qū)動的邏輯狀態(tài)與寫入到OUT_DATA所有位的邏輯值相匹配。圖9-1GPIO結(jié)構(gòu)框圖9.1通用輸入/輸出接口(GPIO)(2)、使用GPIO信號作為輸入

要將給定的GPIO信號配置為輸入,在方向寄存器DIR中設(shè)置所需GPIO的相關(guān)位。使用GPIO輸入數(shù)據(jù)寄存器(IN_DATA)讀取GPIO信號的當(dāng)前狀態(tài):對于配置為輸入的GPIO信號,讀取IN_DATA返回與GPIO外設(shè)時鐘同步的輸入信號狀態(tài);對于配置為輸出的GPIO信號,讀取IN_DATA返回由設(shè)備驅(qū)動的輸出值。9.1通用輸入/輸出接口(GPIO)9.1.3中斷和事件產(chǎn)生(1)、中斷①中斷事件和請求GPIO外設(shè)可以向DSPCPU發(fā)送一個中斷事件,即所有GPIO信號都可以配置來產(chǎn)生中斷,TMS320DM6437支持單一GPIO信號中斷、GPIO組信號中斷,或這兩種形式混合。GPIO外設(shè)到DSPCPU的中斷映射如表9-1所示。9.1通用輸入/輸出接口(GPIO)

中斷源縮寫DSP中斷號GP[0]GPIO064GP[1]GPIO165GP[2]GPIO266GP[3]GPIO367GP[4]GPIO468GP[5]GPIO569GP[6]GPIO670GP[7]GPIO771GPIOBank0GPIOBNK072GPIOBank1GPIOBNK173GPIOBank2GPIOBNK274GPIOBank3GPIOBNK375GPIOBank4GPIOBNK476GPIOBank5GPIOBNK577GPIOBank6GPIOBNK678表9-1GPIO到DSPCPU的中斷映射9.1通用輸入/輸出接口(GPIO)②使能GPIO中斷事件通過在GPIO中斷使能寄存器(BINTEN)中設(shè)置適當(dāng)?shù)谋忍匚粊硎鼓蹽PIO中斷事件,例如,為了使能bank0(GP[15-0])中斷,置位BINTEN的位0,為了使能bank3(GP[63-48]中斷,置位BINTEN的位3。③配置GPIO中斷的邊沿觸發(fā)每個GPIO中斷源可以配置為在GPIO信號上升沿、下降沿、兩者兼具或兩者均無(無事件)下產(chǎn)生中斷,邊沿檢測與GPIO外設(shè)模塊時鐘同步,以下4個寄存器用來控制GPIO中斷的邊沿檢測方式:

●GPIO設(shè)置上升沿中斷寄存器(SET_RIS_TRIG)在GPIO信號中出現(xiàn)一個上升沿時允許GPIO中斷;

●GPIO清除上升沿中斷寄存器(CLR_RIS_TRIG)在GPIO信號中出現(xiàn)一個上升沿時禁止GPIO中斷;

●GPIO設(shè)置下降沿中斷寄存器(SET_FAL_TRIG)在GPIO信號中出現(xiàn)一個下降沿時允許GPIO中斷;

●GPIO清除下降沿中斷寄存器(CLR_FAL_TRIG)在GPIO信號中出現(xiàn)一個下降沿時禁止GPIO中斷。9.1通用輸入/輸出接口(GPIO)要配置GPIO中斷,只發(fā)生在GPIO信號的上升沿:

●寫邏輯1到SET_RIS_TRIG的相關(guān)位;

●寫邏輯1到CLR_FAL_TRIG的相關(guān)位。要配置GPIO中斷,只發(fā)生在GPIO信號的下降沿:

●寫邏輯1到SET_FAL_TRIG的相關(guān)位;

●寫邏輯1到CLR_RIS_TRIG的相關(guān)位。要配置GPIO中斷,發(fā)生在GPIO信號的上升沿和下降沿:

●寫邏輯1到SET_RIS_TRIG的相關(guān)位;

●寫邏輯1到SET_FAL_TRIG的相關(guān)位。要禁止一個特定的GPIO中斷:

●寫邏輯1到CLR_RIS_TRIG的相關(guān)位;

●寫邏輯1到CLR_FAL_TRIG的相關(guān)位。注意,當(dāng)GPIO信號被配置為輸出時,軟件可以改變GPIO信號狀態(tài),然后生成一個中斷。這對于調(diào)試中斷信號連通性非常有用。9.1通用輸入/輸出接口(GPIO)④GPIO中斷狀態(tài)GPIO中斷事件的狀態(tài)可以通過讀取GPIO中斷狀態(tài)寄存器(INTSTAT)來監(jiān)控。在相關(guān)比特位上用邏輯1表示等待GPIO中斷,不被等待的中斷用邏輯0表示。對于直接到DSP子系統(tǒng)的獨立GPIO中斷,中斷狀態(tài)可以通過相關(guān)的CPU中斷標(biāo)志讀取。對于GPIO組中斷,INTSTAT可以用于確定是哪個GPIO中斷發(fā)生。等待GPIO中斷標(biāo)志位清除是通過寫邏輯1到INTSTAT中相關(guān)的比特位。9.1通用輸入/輸出接口(GPIO)(2)、EDMA事件產(chǎn)生GPIO外設(shè)可以向EDMA提供同步事件,GPIO同步EDMA事件如表9-2所示。事件源事件名EDMA同步事件號GP[0]中斷GPINT032GP[1]中斷GPINT133GP[2]中斷GPINT234GP[3]中斷GPINT335GP[4]中斷GPINT436GP[5]中斷GPINT537GP[6]中斷GPINT638GP[7]中斷GPINT739GPIOBank0中斷GPBNKINT040GPIOBank1中斷GPBNKINT141GPIOBank2中斷GPBNKINT242GPIOBank3中斷GPBNKINT343GPIOBank4中斷GPBNKINT444GPIOBank5中斷GPBNKINT545GPIOBank6中斷GPBNKINT646表9-2GPIO同步事件到EDMA9.1通用輸入/輸出接口(GPIO)9.1.4GPIO寄存器

TMS320DM6437有7組GPIO信號,這些GPIO信號通過與其相關(guān)的多個寄存器來控制,在這些寄存器中,對于每個GPIO信號有多個控制域。對每個GPIO信號組,GPIO控制寄存器被組織為1個32位寄存器,這些控制寄存器進(jìn)一步被分組,每組又含有一系列控制寄存器。每組控制寄存器的寄存器名均定義為register_nameXY形式,其中X和Y是兩組GPIO控制位,例如01、23、45等。與每個GPIO相關(guān)的寄存器域均定義為field_nameN形式,其中N是GPIO信號的數(shù)目,例如,GP[0]位于第0組的GPIO,控制寄存器名為register_name01,與GP[0]相關(guān)的寄存器域為field_name0,GP[0]的控制位位于寄存器的位0。與之相比,GP[110]位于第6組的GPIO,控制寄存器名為register_name6,與GP[110]相關(guān)的寄存器域為field_name110,GP[110]的控制位位于寄存器的位14。表9-3顯示了與GPIO引腳相關(guān)的寄存器組及控制位信息,其可用于定位寄存器控制位。9.1通用輸入/輸出接口(GPIO)9.1.4GPIO寄存器

表9-3寄存器組及控制位GPIO信號組數(shù)控制寄存器寄存器域位數(shù)GP[0]~GP[15]0register_name01field_name0~field_name15Bit0~Bit15GP[16]~GP[31]1register_name01field_name16~field_name31Bit16~Bit31GP[32]~GP[47]2register_name23field_name32~field_name47Bit0~Bit15GP[48]~GP[63]3register_name23field_name48~field_name63Bit16~Bit31GP[64]~GP[79]4register_name45field_name64~field_name79GP[80]~GP[95]5register_name45field_name80~field_name95Bit16~Bit31GP[96]~GP[110]6register_name6field_name96~field_name110Bit0~Bit14由于有奇數(shù)組的GPIO,最后一組GPIO寄存器的第16位缺省,沒有作用。對于中斷配置,與GPIO相關(guān)的不支持中斷的寄存器也缺省。GPIO寄存器映射如表9-4所示。表9-4GPIO寄存器HEX地址范圍縮寫寄存器名PID外設(shè)識別寄存器PeripheralIdentificationRegister0x01C67004PCR外部控制寄存器0x01C67008BINTEN中斷使能GPIOinterruptper-bankenable第0、1組GPIO0x01C6700C—預(yù)留0x01C67010DIR010組和1組GPIO方向寄存器(GP[0:31])0x01C67014OUT_DATA010組和1組GPIO輸出數(shù)據(jù)寄存器(GP[0:31])0x01C67018SET_DATA010組和1組GPIO設(shè)置數(shù)據(jù)寄存器(GP[0:31])0x01C6701CCLR_DATA010組和1組GPIO清除數(shù)據(jù)(GP[0:31])0x01C67020IN_DATA010組和1組GPIO輸入數(shù)據(jù)寄存器(GP[0:31])0x01C67024SET_RIS_TRIG010組和1組GPIO設(shè)置上升沿中斷寄存器(GP[0:31])0x01C67028CLR_RIS_TRIG010組和1組GPIO清除上升沿中斷寄存器(GP[0:31])0x01C6702CSET_FAL_TRIG010組和1組GPIO設(shè)置下降沿中斷寄存器(GP[0:31])0x01C67030CLR_FAL_TRIG010組和1組GPIO清除下降沿中斷寄存器(GP[0:31])0x01C67034INSTAT010組和1組GPIO中斷狀態(tài)寄存器(GP[0:31])第2、3組GPIO0x01C67038DIR232組和3組GPIO方向寄存器(GP[32:63])0x01C6703COUT_DATA232組和3組GPIO輸出數(shù)據(jù)寄存器(GP[32:63])0x01C67040SET_DATA232組和3組GPIO設(shè)置數(shù)據(jù)寄存器(GP[32:63])0x01C67044CLR_DATA232組和3組GPIO清除數(shù)據(jù)(GP[32:63])0x01C67048IN_DATA232組和3組GPIO輸入數(shù)據(jù)寄存器(GP[32:63])0x01C6704CSET_RIS_TRIG232組和3組GPIO設(shè)置上升沿中斷寄存器(GP[32:63])0x01C67050CLR_RIS_TRIG232組和3組GPIO清除上升沿中斷寄存器(GP[32:63])0x01C67054SET_FAL_TRIG232組和3組GPIO設(shè)置下降沿中斷寄存器(GP[32:63])0x01C67058CLR_FAL_TRIG232組和3組GPIO清除下降沿中斷寄存器(GP[32:63])0x01C6705CINSTAT232組和3組GPIO中斷狀態(tài)寄存器(GP[32:63])表9-4GPIO寄存器9.1通用輸入/輸出接口(GPIO)第4、5組GPIO0x01C67060DIR454組和5組GPIO方向寄存器(GP[64:95])0x01C67064OUT_DATA454組和5組GPIO輸出數(shù)據(jù)寄存器(GP[64:95])0x01C67068SET_DATA454組和5組GPIO設(shè)置數(shù)據(jù)寄存器(GP[64:95])0x01C6706CCLR_DATA454組和5組GPIO清除數(shù)據(jù)(GP[64:95])0x01C67070IN_DATA454組和5組GPIO輸入數(shù)據(jù)寄存器(GP[64:95])0x01C67074SET_RIS_TRIG454組和5組GPIO設(shè)置上升沿中斷寄存器(GP[64:95])0x01C67078CLR_RIS_TRIG454組和5組GPIO清除上升沿中斷寄存器(GP[64:95])0x01C6707CSET_FAL_TRIG454組和5組GPIO設(shè)置下降沿中斷寄存器(GP[64:95])0x01C67080CLR_FAL_TRIG454組和5組GPIO清除下降沿中斷寄存器(GP[64:95])0x01C67084INSTAT454組和5組GPIO中斷狀態(tài)寄存器(GP[64:95])第6組GPIO0x01C67088DIR6第6組GPIO方向寄存器(GP[64:95])0x01C6708COUT_DATA6第6組GPIO輸出數(shù)據(jù)寄存器(GP[64:95])0x01C67090SET_DATA6第6組GPIO設(shè)置數(shù)據(jù)寄存器(GP[64:95])0x01C67094CLR_DATA6第6組GPIO清除數(shù)據(jù)(GP[64:95])0x01C67098IN_DATA6第6組GPIO輸入數(shù)據(jù)寄存器(GP[64:95])0x01C6709CSET_RIS_TRIG6第6組GPIO設(shè)置上升沿中斷寄存器(GP[64:95])0x01C670A0CLR_RIS_TRIG6第6組GPIO清除上升沿中斷寄存器(GP[64:95])0x01C670A4SET_FAL_TRIG6第6組GPIO設(shè)置下降沿中斷寄存器(GP[64:95])0x01C670A8CLR_FAL_TRIG6第6組GPIO清除下降沿中斷寄存器(GP[64:95])0x01C670ACINSTAT6第6組GPIO中斷狀態(tài)寄存器(GP[64:95])0x01C670B0-0x01C67FFF—預(yù)留9.1通用輸入/輸出接口(GPIO)

下面詳細(xì)介紹各GPIO寄存器的功能及設(shè)置方式:①外設(shè)識別寄存器(PID)外設(shè)識別寄存器(PID)包含外設(shè)的識別數(shù)據(jù)(類型、類和版本),如圖9-2和表9-5所示。圖9-2外設(shè)識別寄存器(PID)9.1通用輸入/輸出接口(GPIO)位域值描述31-30SCHEME1PID編碼方案,該域值固定為0129-28Reserved0預(yù)留27-16FUNCTION0-FFFh功能區(qū),GPIO=483h15-11RTL0-1FhRTL識別,GPIO=010-8MAJOR0-FhMajorrevision=1h7-6CUSTOM0-3h自定義標(biāo)識,GPIO=05-0MINOR0-FhMinorRevision,代碼格式MAJOR_REVISION.MINOR_REVISIONMinorrevision=5h表9-5外部識別寄存器(PID)域描述②外設(shè)控制寄存器(PCR)外設(shè)控制寄存器(PCR)可確定仿真暫停模式,F(xiàn)REE位固定為1,因此,GPIO忽略了仿真暫停請求信號,并像往常一樣在仿真暫停模式中運行。PCR描述如圖9-3和表9-6所示。9.1通用輸入/輸出接口(GPIO)圖9-3外設(shè)控制寄存器(PCR)表9-6外設(shè)控制寄存器(PCR)域描述位域值描述31-2Reserved0預(yù)留1SOFT0軟件使能模式位。這個位與FREE位一起使用,以確定仿真暫停模式。FREE=1,所以這個位沒有影響。0FREE1不同步使能模式位。自由位固定為1,所以GPIO在仿真暫停模式中是不同步的。9.1通用輸入/輸出接口(GPIO)

下面詳細(xì)介紹各GPIO寄存器的功能及設(shè)置方式:①外設(shè)識別寄存器(PID)外設(shè)識別寄存器(PID)包含外設(shè)的識別數(shù)據(jù)(類型、類和版本),如圖9-2和表9-5所示。圖9-2外設(shè)識別寄存器(PID)9.1通用輸入/輸出接口(GPIO)

③GPIO中斷使能寄存器(BINTEN)GPIO中斷使能寄存器(BINTEN)如圖9-4所示,功能描述如表9-7所示,注意BINTEN中這些位對中斷和EDMA事件都控制。圖9-4GPIO中斷使能寄存器(BINTEN)9.1通用輸入/輸出接口(GPIO)位域值描述31-7Reserved0預(yù)留6EN601組6中斷使能用于禁用或啟用第6組GPIO中斷(GP[110-96])組6中斷禁用組6中斷啟用5EN501組5中斷使能用于禁用或啟用第5組GPIO中斷(GP[95-80])組5中斷禁用組5中斷啟用4EN401組4中斷使能用于禁用或啟用第4組GPIO中斷(GP[79-64])組4中斷禁用組4中斷啟用3EN301組3中斷使能用于禁用或啟用第3組GPIO中斷(GP[63-48])組3中斷禁用組3中斷啟用2EN201組2中斷使能用于禁用或啟用第2組GPIO中斷(GP[47-32])組2中斷禁用組2中斷啟用1EN101組1中斷使能用于禁用或啟用第1組GPIO中斷(GP[31-16])組1中斷禁用組1中斷啟用0EN001組0中斷使能用于禁用或啟用第0組GPIO中斷(GP[15-0])組0中斷禁用組0中斷啟用表9-7GPIO中斷使能寄存器(BINTEN)域描述9.1通用輸入/輸出接口(GPIO)9.1.4GPIO寄存器

TMS320DM6437有7組GPIO信號,這些GPIO信號通過與其相關(guān)的多個寄存器來控制,在這些寄存器中,對于每個GPIO信號有多個控制域。對每個GPIO信號組,GPIO控制寄存器被組織為1個32位寄存器,這些控制寄存器進(jìn)一步被分組,每組又含有一系列控制寄存器。每組控制寄存器的寄存器名均定義為register_nameXY形式,其中X和Y是兩組GPIO控制位,例如01、23、45等。與每個GPIO相關(guān)的寄存器域均定義為field_nameN形式,其中N是GPIO信號的數(shù)目,例如,GP[0]位于第0組的GPIO,控制寄存器名為register_name01,與GP[0]相關(guān)的寄存器域為field_name0,GP[0]的控制位位于寄存器的位0。與之相比,GP[110]位于第6組的GPIO,控制寄存器名為register_name6,與GP[110]相關(guān)的寄存器域為field_name110,GP[110]的控制位位于寄存器的位14。表9-3顯示了與GPIO引腳相關(guān)的寄存器組及控制位信息,其可用于定位寄存器控制位。④GPIO方向寄存器(DIRn)GPIO方向寄存器(DIRn)決定了GPIO第l組中的第n個引腳是否為輸入或輸出,每組GPIO有多達(dá)16個GPIO引腳。默認(rèn)方式下,所有的GPIO引腳均被配置為輸入(位值=1)。GPIO方向寄存器DIR01、DIR23、DIR45和DIR6如圖9-5所示,功能描述如表9-8所示。圖9-5方向寄存器DIR01、DIR23、DIR45和DIR6表9-8GPIO方向寄存器(DIRn)域描述位域值描述31-1601DIRn位用來控制第2l+1組中引腳n的方向(輸出=0,輸入=1),其位域用來配置第1、3、5組的GPIO引腳GPIO引腳n為輸出GPIO引腳n為輸入15-0DIRn01DIRn位用來控制第2l組中引腳n的方向(輸出=0,輸入=1),其位域用來配置第0、2、4、6組的GPIO引腳GPIO引腳n為輸出GPIO引腳n為輸入⑤GPIO輸出數(shù)據(jù)寄存器(OUT_DATAn)如果引腳被配置為輸出(DIRn=0),GPIO輸出數(shù)據(jù)寄存器(OUT_DATAn)決定了在相應(yīng)的第l組GPIO引腳n上驅(qū)動的值,此時寫入不會影響未配置為GPIO輸出的引腳。OUT_DATAn中的位通過直接寫入此寄存器來設(shè)置或清除。讀OUT_DATAn返回的寄存器值不是引腳的值(其可能被配置為輸入)。GPIO輸出數(shù)據(jù)寄存器(OUT_DATAn)如圖9-6所示,功能描述如表9-9所示。圖9-6GPIO輸出數(shù)據(jù)寄存器(OUT_DATAn)域值描述31-16OUTn01當(dāng)GPIO引腳n配置為輸出(DIRn=0),OUTn位用來驅(qū)動第2l+1組中引腳n的輸出(low=0,high=1);當(dāng)GPIO引腳n配置為輸入,忽略O(shè)UTn位。該位域用來配置第1、3、5組的GPIO引腳GPIO引腳n驅(qū)動為低GPIO引腳n驅(qū)動為高15-0OUTn01當(dāng)GPIO引腳n配置為輸出(DIRn=0),OUTn位用來驅(qū)動第2l組中引腳n的輸出(low=0,high=1);當(dāng)GPIO引腳n配置為輸入,忽略O(shè)UTn位。該位域用來配置第0、2、4、6組的GPIO引腳GPIO引腳n驅(qū)動為低GPIO引腳n驅(qū)動為高表9-9GPIO輸出數(shù)據(jù)寄存器(OUT_DATAn)域描述⑥GPIO設(shè)置數(shù)據(jù)寄存器(SET_DATAn)如果引腳被配置為輸出(DIRn=0),GPIO設(shè)置數(shù)據(jù)寄存器(SET_DATAn)控制相應(yīng)的第l組GPIO引腳n上的值驅(qū)動為高,此時寫入不會影響未配置為GPIO輸出的引腳。SET_DATAn中的位通過直接寫入此寄存器來設(shè)置或清除。讀SETn位返回相應(yīng)的GPIO引腳n的輸出驅(qū)動狀態(tài)。GPIO設(shè)置數(shù)據(jù)寄存器(SET_DATAn)如圖9-7所示,功能描述如表9-10所示。圖9-7GPIO設(shè)置數(shù)據(jù)寄存器(SET_DATAn)位域值描述31-16SETn01l+1組中引腳n的輸出;當(dāng)GPIO引腳n配置為輸入,忽略SETn位。將1寫入SETn位設(shè)置相應(yīng)的GPIO引腳n的輸出驅(qū)動狀態(tài);讀取SETn位會返回相應(yīng)的GPIO引腳n的輸出驅(qū)動器狀態(tài)。該位域用來配置第1、3、5組的GPIO引腳。無影響設(shè)置GPIO引腳n輸出115-0SETn01當(dāng)GPIO引腳n配置為輸出(DIRn=0),SETn位用來設(shè)置第2l組中引腳n的輸出;當(dāng)GPIO引腳n配置為輸入,忽略SETn位。將1寫入SETn位設(shè)置相應(yīng)的GPIO引腳n的輸出驅(qū)動狀態(tài);讀取SETn位會返回相應(yīng)的GPIO引腳n的輸出驅(qū)動器狀態(tài)。該位域用來配置第0、2、4、6組的GPIO引腳。無影響設(shè)置GPIO引腳n輸出1

表9-10GPIO設(shè)置數(shù)據(jù)寄存器(SET_DATAn)域描述⑦GPIO清除數(shù)據(jù)寄存器(CLR_DATAn)如果引腳被配置為輸出(DIRn=0),GPIO清除數(shù)據(jù)寄存器(CLR_DATAn)控制相應(yīng)的第l組GPIO引腳n上的值驅(qū)動為低,此時寫入不會影響未配置為GPIO輸出的引腳。CLR_DATAn中的位通過直接寫入此寄存器來設(shè)置或清除。讀CLRn位返回相應(yīng)的GPIO引腳n的輸出驅(qū)動狀態(tài)。GPIO清除數(shù)據(jù)寄存器(CLR_DATAn)如圖9-8所示,功能描述如表9-11所示。圖9-8GPIO清除數(shù)據(jù)寄存器(CLR_DATAn)

表9-11GPIO清除數(shù)據(jù)寄存器(CLR_DATAn)域描述域值描述31-16CLRn01(DIRn=0),CLRn位用來清除第2l+1組中引腳n的輸出;當(dāng)GPIO引腳n配置為輸入,忽略CLRn位。將1寫入CLRn位清除相應(yīng)的GPIO引腳n的輸出驅(qū)動狀態(tài);讀取CLRn位會返回相應(yīng)的GPIO引腳n的輸出驅(qū)動器狀態(tài)。該位域用來配置第1、3、5組的GPIO引腳。無影響清除GPIO引腳n輸出為015-0CLRn01當(dāng)GPIO引腳n配置為輸出(DIRn=0),CLRn位用來清除第2l組中引腳n的輸出;當(dāng)GPIO引腳n配置為輸入,忽略CLRn位。將1寫入CLRn位清除相應(yīng)的GPIO引腳n的輸出驅(qū)動狀態(tài);讀取CLRn位會返回相應(yīng)的GPIO引腳n的輸出驅(qū)動器狀態(tài)。該位域用來配置第0、2、4、6組的GPIO引腳。無影響清除GPIO引腳n輸出為0

⑧GPIO輸入數(shù)據(jù)寄存器(IN_DATAn)通過使用GPIO輸入數(shù)據(jù)寄存器(IN_DATAn)讀取GPIO信號的當(dāng)前狀態(tài)。對于配置為輸入的GPIO信號,讀取IN_DATAn返回與GPIO外設(shè)時鐘同步的輸入信號狀態(tài)。對于配置為輸出的GPIO信號,讀取IN_DATAn將返回設(shè)備驅(qū)動的輸出值。GPIO輸入數(shù)據(jù)寄存器(IN_DATAn)如圖9-9所示,功能描述如表9-12所示。圖9-9GPIO輸入數(shù)據(jù)寄存器(IN_DATAn)表9-12GPIO輸入數(shù)據(jù)寄存器(IN_DATAn)功能描述位域值描述31-16INn01讀INn位返回第2l+1組GPIO中引腳n的狀態(tài)。該位域用來配置第1、3、5組的GPIO引腳。GPIO引腳n為邏輯低GPIO引腳n為邏輯高15-0INn01讀INn位返回第2l組GPIO中引腳n的狀態(tài)。該位域用來配置第0、2、4、6組的GPIO引腳。GPIO引腳n為邏輯低GPIO引腳n為邏輯高⑨GPIO設(shè)置上升沿中斷寄存器(SET_RIS_TRIGn)GPIO設(shè)置上升沿中斷寄存器(SET_RIS_TRIGn)使能GPIO引腳上升沿生成一個GPIO中斷。GPIO設(shè)置上升沿中斷寄存器(SET_RIS_TRIGn)如圖9-10所示,功能描述如表9-13所示。圖9-10GPIO設(shè)置上升沿中斷寄存器(SET_RIS_TRIGn)表9-13GPIO設(shè)置上升沿中斷寄存器(SET_RIS_TRIGn)功能描述位域值描述31-16SETRISn01l+1組中引腳n的上升沿中斷生成函數(shù)被啟用。因此,如果中斷函數(shù)啟用,SET_RIS_TRIGn和CLR_RIS_TRIGn寄存器中的該位為1;如果中斷函數(shù)禁用,則這兩個寄存器中該位都為零。該位域用來配置第1、3、5組的GPIO引腳。無影響GPIO引腳n由低到高的電位變化將觸發(fā)中斷15-0SETRISn01讀取SETRISn位返回一個指示,顯示是否第2l組中引腳n的上升沿中斷生成函數(shù)被啟用。因此,如果中斷函數(shù)啟用,SET_RIS_TRIGn和CLR_RIS_TRIGn寄存器中的該位為1;如果中斷函數(shù)禁用,則這兩個寄存器中該位都為零。該位域用來配置第0、2、4、6組的GPIO引腳。無影響GPIO引腳n由低到高的電位變化將觸發(fā)中斷⑩GPIO清除上升沿中斷寄存器(CLR_RIS_TRIGn)GPIO清除上升沿中斷寄存器(CLR_RIS_TRIGn)禁用GPIO引腳上升沿生成一個GPIO中斷。GPIO清除上升沿中斷寄存器(CLR_RIS_TRIGn)如圖9-11所示,功能描述如表9-14所示。圖9-11GPIO清除上升沿中斷寄存器(CLR_RIS_TRIGn)表9-14GPIO清除上升沿中斷寄存器(CLR_RIS_TRIGn)功能描述位域值描述31-16CLRRISn01讀取CLRRISn位返回一個指示,顯示是否第2l+1組中引腳n的上升沿中斷生成函數(shù)被啟用。因此,如果中斷函數(shù)啟用,SET_RIS_TRIGn和CLR_RIS_TRIGn寄存器中的該位為1;如果中斷函數(shù)禁用,則這兩個寄存器中該位都為零。該位域用來配置第1、3、5組的GPIO引腳。無影響GPIO引腳n由低到高的電位變化不觸發(fā)中斷15-0CLRRISn01讀取SETRISn位返回一個指示,顯示是否第2l組中引腳n的上升沿中斷生成函數(shù)被啟用。因此,如果中斷函數(shù)啟用,SET_RIS_TRIGn和CLR_RIS_TRIGn寄存器中的該位為1;如果中斷函數(shù)禁用,則這兩個寄存器中該位都為零。該位域用來配置第0、2、4、6組的GPIO引腳。無影響GPIO引腳n由低到高的電位變化不觸發(fā)中斷?GPIO設(shè)置下降沿中斷寄存器(SET_FAL_TRIGn)GPIO設(shè)置下降沿中斷寄存器(SET_FAL_TRIGn)使能GPIO引腳下降沿生成一個GPIO中斷。GPIO設(shè)置下降沿中斷寄存器(SET_FAL_TRIGn)如圖9-12所示,功能描述如表9-15所示。圖9-12GPIO設(shè)置下降沿中斷寄存器(SET_FAL_TRIGn)表9-15GPIO設(shè)置下降沿中斷寄存器(SET_FAL_TRIGn)功能描述位域值描述31-16SETFALn01讀取SETFALn位返回一個指示,顯示是否第2l+1組中引腳n的下降沿中斷生成函數(shù)被啟用。因此,如果中斷函數(shù)啟用,SET_FAL_TRIGn和CLR_FAL_TRIGn寄存器中的該位為1;如果中斷函數(shù)禁用,則這兩個寄存器中該位都為零。該位域用來配置第1、3、5組的GPIO引腳。無影響GPIO引腳n由高到低的電位變化將觸發(fā)中斷15-0SETFALn01讀取SETFALn位返回一個指示,顯示是否第2l組中引腳n的下降沿中斷生成函數(shù)被啟用。因此,如果中斷函數(shù)啟用,SET_FAL_TRIGn和CLR_FAL_TRIGn寄存器中的該位為1;如果中斷函數(shù)禁用,則這兩個寄存器中該位都為零。該位域用來配置第0、2、4、6組的GPIO引腳。無影響GPIO引腳n由高到低的電位變化將觸發(fā)中斷?GPIO清除下降沿中斷寄存器(CLR_FAL_TRIGn)GPIO清除下降沿中斷寄存器(CLR_FAL_TRIGn)禁用GPIO引腳下降沿生成一個GPIO中斷。GPIO清除下降沿中斷寄存器(CLR_FAL_TRIGn)如圖9-13所示,功能描述如表9-16所示。圖9-13GPIO清除下降沿中斷寄存器(CLR_FAL_TRIGn)表9-16GPIO清除下降沿中斷寄存器(CLR_FAL_TRIGn)功能描述位域值描述31-16CLRFALn01讀取CLRFALn位返回一個指示,顯示是否第2l+1組中引腳n的下降沿中斷生成函數(shù)被啟用。因此,如果中斷函數(shù)啟用,SET_FAL_TRIGn和CLR_FAL_TRIGn寄存器中的該位為1;如果中斷函數(shù)禁用,則這兩個寄存器中該位都為零。該位域用來配置第1、3、5組的GPIO引腳。無影響GPIO引腳n由高到低的電位變化不觸發(fā)中斷15-0CLRFALn01讀取CLRFALn位返回一個指示,顯示是否第2l組中引腳n的下降沿中斷生成函數(shù)被啟用。因此,如果中斷函數(shù)啟用,SET_FAL_TRIGn和CLR_FAL_TRIGn寄存器中的該位為1;如果中斷函數(shù)禁用,則這兩個寄存器中該位都為零。該位域用來配置第0、2、4、6組的GPIO引腳。無影響GPIO引腳n由高到低的電位變化不觸發(fā)中斷?GPIO中斷狀態(tài)寄存器(INSTATn)GPIO中斷事件的狀態(tài)可以通過讀取GPIO中斷狀態(tài)寄存器(INSTATn)來監(jiān)控。在相關(guān)bit位上,在GPIO中斷掛起用邏輯1表示,而GPIO中斷未掛起用邏輯0表示。GPIO中斷狀態(tài)寄存器(INSTATn)如圖9-14所示,功能描述如表9-17所示。圖9-14GPIO中斷狀態(tài)寄存器(INSTATn)9.1通用輸入/輸出接口(GPIO)位域值描述31-16STATn01STATn位用于監(jiān)視第2l+1組中引腳n的GPIO中斷是否被掛起。該位域返回第1、3、5組的GPIO引腳狀態(tài)。寫1到STATn位;來清除STATn位,寫0沒有影響。GPIO引腳n無中斷掛起GPIO引腳n中斷掛起15-0STATn01STATn位用于監(jiān)視第2l組中引腳n的GPIO中斷是否被掛起。該位域返回第0、2、4、6組的GPIO引腳狀態(tài)。寫1到STATn位;來清除STATn位,寫0沒有影響。GPIO引腳n無中斷掛起GPIO引腳n中斷掛起表9-17GPIO中斷狀態(tài)寄存器(INSTATn)功能描述9.2定時器9.2.1定時器結(jié)構(gòu)TMS320DM6437有3個64位軟件可編程通用定時器,分別是定時器0(Timer0)、定時器1(Timer1)和定時器2(Timer2),定時器0和定時器1可在64位模式、雙32位非鏈接模式(獨立操作)和雙32位鏈接模式(相互配合操作)下編程,定時器2用作看門狗定時器(WatchdogTimer),定時器結(jié)構(gòu)框圖如圖9-15所示,其特性如下:

?64位加法計數(shù)器;

?4種定時器模式;

?2個時鐘源:內(nèi)部時鐘和通過定時器輸入引腳TINPL輸入外部時鐘(僅定時器0和1);

?2種輸出模式:脈沖模式和時鐘模式;

?2種操作模式:一次操作(定時器運行一個周期停止)和連續(xù)操作(定時器運行一個周期后自動重置);?通用定時器模式可用來生成周期中斷、EDMA同步事件或外部時鐘輸出;?看門狗定時器用于在故障情況下為設(shè)備提供恢復(fù)機(jī)制,其超時會導(dǎo)致設(shè)備全局重置(僅定時器2)。圖9-15定時器結(jié)構(gòu)框圖1、時鐘控制定時器0和定時器1可使用內(nèi)部或外部時鐘源來作為計數(shù)周期,下面介紹如何選擇時鐘源,表9-18顯示了時鐘源及對應(yīng)支持的定時器。表9-18定時器支持的時鐘源時鐘源定時器0定時器1定時器2內(nèi)部時鐘源√√√外部時鐘輸入(TIN0和TIN1)√√-如圖9-16所示,使用定時器控制寄存器(TCR)中的時鐘源CLKSRC12位選擇定時器時鐘源,兩種時鐘源均可驅(qū)動定時器時鐘。在重置時,時鐘源為內(nèi)部時鐘。?內(nèi)部時鐘,設(shè)置CLKSRC12=0;?定時器0和定時器1的外部時鐘輸入(TIN0和TIN1),設(shè)置CLKSRC12=1。圖9-16定時器時鐘源框圖有關(guān)每個時鐘源的配置選項詳細(xì)分析如下:(1)使用內(nèi)部時鐘源內(nèi)部時鐘源是一個固定的片上27MHz時鐘。由于定時器計數(shù)上限基于時鐘源的每個周期,因此,該時鐘源決定了定時器的速度。在確定定時器的周期和預(yù)分頻器設(shè)置時,根據(jù)27MHz時鐘的周期數(shù)來選擇所需的周期。定時器控制寄存器中的CLKSRC12位控制內(nèi)部或外部時鐘被用作定時器的時鐘源。如果定時器配置在64位模式或32位鏈接模式下,則CLKSRC12位控制整個定時器的時鐘源。如果定時器配置為雙32位非鏈接模式(定時器全局控制寄存器TGCR中TIMMODE=1),CLKSRC12位控制Timer1:2,Timer3:4必須使用內(nèi)部時鐘源。要選擇內(nèi)部時鐘作為定時器的時鐘源,CLKSRC12位必須清除為0。(2)使用外部時鐘源(僅定時器0和1)可以提供一個外部時鐘源,通過TIN0和TIN1引腳對定時器計時。定時器控制寄存器(TCR)中的CLKSRC12位控制內(nèi)部或外部時鐘用作定時器的時鐘源。如果定時器配置在64位模式或32位鏈接模式下,則CLKSRC12位控制整個定時器的時鐘源。如果定時器配置為雙32位鏈接模式(TGCR中的TIMMODE=1),則CLKSRC12位控制Timer1:2,Timer3:4必須使用外部時鐘。為了選擇外部時鐘作為定時器的時鐘源,CLKSRC12位必須設(shè)置為1。2、信號描述輸入信號可用于定時器0和定時器1。定時器0輸入(TIN0)和定時器1輸入(TIN1)連接到輸入時鐘電路以允許定時器同步。對于音頻應(yīng)用程序,定時器0提供了一個“÷6”分頻器,確保音頻時鐘滿足小于CLK/4的定時器模塊要求,此時CLK等于27MHz定時器外設(shè)時鐘。定時器0的“÷6”分頻器可以通過設(shè)置定時器0輸入選擇位(TINP0SEL))為1來啟用,TINP0SEL位位于系統(tǒng)模塊內(nèi)的定時器控制寄存器(TIMERCTL)。當(dāng)TINP0SEL=1時,使能“÷6”選項,并且定時器控制寄存器(TCR)中的定時器輸入反相控制(INVINP)選項設(shè)置為1,那么“÷6”信號的結(jié)果被反相。如果TINP0SEL位被清除為0,并且設(shè)置INVINP選項,那么輸入信號將直接來自于定時器0的輸入引腳(TINP0L),而INVINP選項轉(zhuǎn)換為輸入源信號。定時器0和定時器1提供了外部時鐘輸出,有輸出模式:脈沖模式和時鐘模式。定時器輸出模式通過使用TCR中的時鐘/脈沖模式位(Clock/Pulse,CP)來選擇。在脈沖模式(CP=0)下,脈沖寬度位(PWID)可以配置為1、2、3或4個定時器時鐘周期。定時器狀態(tài)(TSTAT)變?yōu)殚e置前,脈沖寬度設(shè)置決定了定時器時鐘周期的數(shù)量。通過設(shè)置位于TCR中的定時器輸出反相控制位(INVOUT)為1,可以反轉(zhuǎn)脈沖。在時鐘模式(CP=1)下,定時器輸出引腳上的信號有50%的占空比,每次信號觸發(fā)(從高到低或從低到高)定時器計數(shù)器達(dá)到零,輸出引腳的值位于TCR中的TSTAT位。9.2定時器9.2.2定時器的工作模式控制1、通用定時器模式(定時器0和定時器1)(1)64位定時器模式通過清除定時器全局控制寄存器(TGCR)中的TIMMODE位為0,通用定時器0和定時器1均可配置為64位定時器(如圖9-17所示)。在重置時,TIMMODE位的默認(rèn)設(shè)置為64位定時器。在這種模式下,定時器作為一個64位加法計數(shù)器運行。計數(shù)寄存器(TIM12和TIM34)形成64位定時器計數(shù)寄存器,周期寄存器(PRD12和PRD34)形成64位定時器周期寄存器。當(dāng)啟用定時器時,定時計數(shù)器在每個輸入時鐘周期內(nèi)開始以1遞增。當(dāng)定時器計數(shù)器與定時器周期相匹配時,生成一個可屏蔽的定時器中斷(TINTLn)、一個定時器EDMA同步事件(TEVTLn)和一個輸出信號(TOUT)。當(dāng)定時器配置為連續(xù)模式,定時計數(shù)器達(dá)到定時周期后,定時計數(shù)器重置為0。通過使用TGCR中的控制位來停止、重啟、重置或禁用定時器,如表9-19所示。圖9-1764位定時器模式結(jié)構(gòu)框圖在TGCR中,TIM12RS和TIM34RS位可控制定時器處于復(fù)位或運行狀態(tài)。當(dāng)定時器為64位定時模式時,TIM12RS和TIM34RS位必須設(shè)置為1。定時器控制寄存器(TCR)中的ENAMODE12位控制定時器的禁用、一次操作和連續(xù)操作;ENAMODE34位對64位定時器模式無影響。當(dāng)定時器禁用(ENAMODE12=0)時,定時器禁用并保持其當(dāng)前計數(shù)值。當(dāng)啟用定時器執(zhí)行一次操作(ENAMODE12=1)時,其達(dá)到計數(shù)上限(計數(shù)值等于周期值)后停止。當(dāng)啟用定時器執(zhí)行連續(xù)操作(ENAMODE12=2h)時,計數(shù)器計數(shù)到周期值后重置為0并再次開始計數(shù)。64位定時器配置TGCR位TCR位

TIM12RSTIM34RSENAMODE1264位定時器重置00064位定時器禁用1h1h0啟動64位定時器一次操作1h1h1h啟動64位定時器連續(xù)操作1h1h2h

表9-1964位定時器模式下TGCR中位的配置一旦定時器停止,如果定時器使用外部時鐘,定時器必須至少在一個外部時鐘周期內(nèi)保持禁用,或定時器將不再開始計數(shù)。當(dāng)使用外部時鐘時,計數(shù)值應(yīng)同步到內(nèi)部時鐘。注意,當(dāng)定時計數(shù)器和定時周期被清0時,可以啟用定時器,但定時計數(shù)器不會增加,因為定時周期為0。當(dāng)在64位定時器模式下讀取定時器計數(shù)時,CPU必須首先讀TIM12,然后讀TIM34。當(dāng)讀取TIM12后,定時器將TIM34復(fù)制到一個影子寄存器(shadowregister)中。當(dāng)讀TIM34時,硬件邏輯強(qiáng)制從影子寄存器中讀取數(shù)據(jù)。由于當(dāng)寄存器被讀取時,定時器可能繼續(xù)運行,這保證了從寄存器讀取的值不被影響。當(dāng)讀32位模式下的定時器時,TIM12和TIM34可以以任意順序讀取。64位定時器模式配置過程如下:?進(jìn)行必要器件引腳的多路復(fù)用設(shè)置;?對VDD3P3V_PWDN寄存器編程實現(xiàn)定時器0和定時器1的IO引腳上電;?選擇時鐘源(設(shè)置TCR中的CLKSRC位);?選擇輸出模式(設(shè)置TCR中的CP位);?選擇脈沖寬度模式(設(shè)置TCR中的PWID位);?考慮“÷6”需求設(shè)置(設(shè)置系統(tǒng)模塊TIMERCTL中的TINP0SEL位);?考慮反相器需求設(shè)置(設(shè)置TCR中的INVINP和INVOUTP位);?選擇64位模式(設(shè)置TGCR中的TIMMODE位);?從reset中移除定時器(設(shè)置TGCR中的TIM12RS和TIM34RS位);?選擇需要的定時周期(設(shè)置PRD12和PRD34位);?啟用定時器(設(shè)置TCR中的ENAMODE12位)。

(2)雙32位定時器模式(定時器0和定時器1)通過配置定時器全局控制寄存器(TGCR),可以將每個通用定時器配置為雙32位定時器模式。在雙32位定時器模式中,兩個32位定時器可以獨立操作(非鏈接模式)或與其他定時器配合操作(鏈接模式)。①鏈接模式通過設(shè)置TGCR中的TIMMODE位為3h,通用定時器可以配置為一個雙32位鏈接模式定時器,如圖9-18所示。在鏈?zhǔn)侥J街?,一個32位定時器(Timer3:4)用作32位預(yù)分頻器,另一個32位定時器(Timer1:2)用作32位定時。32位預(yù)分頻器被用來記錄32位定時。32位預(yù)分頻器使用計數(shù)寄存器(TIM34)來形成一個32位的預(yù)分頻計數(shù)寄存器,使用一個周期寄存器(PRD34)來形成一個32位的預(yù)分頻周期寄存器。當(dāng)啟用定時器時,預(yù)分頻計數(shù)器開始在每個定時器輸入時鐘周期內(nèi)遞增1。在預(yù)分頻計數(shù)器匹配預(yù)分頻一個周期后,生成一個時鐘信號,并將預(yù)分頻計數(shù)寄存器重置為0,如圖9-19所示。32位定時器(Timer1:2)使用計數(shù)寄存器(TIM12)來形成一個32位定時計數(shù)寄存器,周期寄存器(PRD12)形成一個32位的定時器周期寄存器。該定時器通過預(yù)分頻器的輸出時鐘來計時,在每個預(yù)分頻器輸出時鐘周期內(nèi),定時計數(shù)器增加1。當(dāng)定時計數(shù)器匹配定時周期時,可屏蔽的定時器中斷(TINTLn)、定時器EDMA事件(TEVTLn)以及輸出信號(TOUT)被生成。當(dāng)定時器配置為連續(xù)模式時,在定時計數(shù)器達(dá)到定時周期后,定時計數(shù)器重置為0。通過使用TGCR中的TIM12RS和TIM34RS位可以停止、重新啟動、重置或禁用定時器。在鏈接模式下,不使用定時器控制寄存器(TCR)的高16位。圖9-18雙32位定時器鏈接模式框圖圖9-19雙32位定時器鏈接模式示例32位定時器鏈接模式啟用和配置可參考64位定時器模式,在TGCR中,TIM12RS和TIM34RS位控制定時器處于復(fù)位或運行狀態(tài)。TIM12RS位控制定時器Timer1:2的重置,TIM34RS位控制定時器Timer3:4的重置。對于運行定時器而言,TIM12RS和TIM34RS位必須設(shè)置為1。定時器控制寄存器(TCR)中的ENAMODE12位域控制定時器的禁用、一次操作和連續(xù)操作;ENAMODE34位域?qū)τ?2位定時器模式無影響。當(dāng)定時器禁用(ENAMODE12=0)時,定時器保持其當(dāng)前計數(shù)值。當(dāng)啟用定時器執(zhí)行一次操作(ENAMODE12=1)時,其達(dá)到計數(shù)上限(計數(shù)值等于周期值)后停止。當(dāng)啟用定時器執(zhí)行連續(xù)操作(ENAMODE12=2h)時,計數(shù)器計數(shù)到周期值,然后重置為0并再次開始計數(shù)。②非鏈接模式通過設(shè)置TGCR中的TIMMODE位為1,通用定時器可以配置為一個雙32位非鏈接模式,如圖9-20所示。在非鏈接模式中,定時器可作為2個獨立的32位定時器操作。一個是結(jié)合4位預(yù)分頻的32位定時器(Timer3:4);另一個是32位定時器(Timer1:2)。圖9-20雙32位定時器非鏈接模式框圖在非鏈接模式下,4位預(yù)分頻器必須被內(nèi)部時鐘控制,外部時鐘源不能用于Timer3:4。在TGCR中,4位預(yù)分頻器使用定時器分頻比(TDDR34)位形成一個4位的預(yù)分頻計數(shù)寄存器,預(yù)分頻計數(shù)器(PSC34)位形成一個4位的預(yù)分頻周期寄存器。當(dāng)啟用定時器時,預(yù)分頻計數(shù)器開始在每個定時器輸入時鐘周期內(nèi)遞增1。在預(yù)分頻計數(shù)器匹配一個預(yù)分頻周期后,32位定時器生成一個時鐘信號。32位定時器使用TIM34作為32位定時計數(shù)寄存器,使用PRD34作為32位定時周期寄存器。32位定時器通過來自4位預(yù)分頻器的輸出時鐘來計時,如圖9-21所示。定時計數(shù)器在每個預(yù)分頻輸出時鐘周期內(nèi)增加1。當(dāng)定時計數(shù)器匹配定時周期時,可屏蔽的定時器中斷(TINTHn)、定時器EDMA同步事件(TEVTHn)以及輸出信號(TOUT)被生成。當(dāng)定時器配置為連續(xù)模式時,在定時計數(shù)器達(dá)到定時周期后,定時計數(shù)器重置為0。通過使用TGCR中的TIM34RS位可以停止、重新啟動、重置或禁用定時器。對于Timer3:4,不使用定時器控制寄存器(TCR)的低16位。圖9-21雙32位定時器非鏈接模式示例32位定時器(Timer1:2)使用計數(shù)寄存器(TIM12)來形成一個32位計數(shù)寄存器,周期寄存器(PRD12)形成一個32位的定時器周期寄存器。當(dāng)啟用定時器后,在每個輸入時鐘周期內(nèi),定時計數(shù)器增加1。當(dāng)定時計數(shù)器匹配定時周期時,可屏蔽的定時器中斷(TINTLn)、定時器EDMA事件(TEVTLn)以及輸出信號(TOUT)被生成。當(dāng)定時器配置為連續(xù)模式時,在定時計數(shù)器達(dá)到定時周期后,定時計數(shù)器重置為0。通過使用TGCR中的TIM12RS位可以停止、重新啟動、重置或禁用定時器,如表9-20所示。對于Timer1:2,不使用定時器控制寄存器(TCR)的高16位。雙32位定時器非鏈接模式啟用和配置可參考64位定時器模式。32位定時器配置TGCR位TCR位

TIM12RSTIM34RSENAMODE12ENAMODE34重置×0×0帶4位預(yù)分頻的32位定時器非鏈接模式禁用×1h×0啟動帶4位預(yù)分頻的32位定時器非鏈接模式一次操作×1h×1h啟動帶4位預(yù)分頻的32位定時器非鏈接模式連續(xù)操作×1h×2h32位定時器非鏈接模式重置0×0×32位定時器非鏈接模式禁用1h×0×32位定時器非鏈接模式一次操作1h×1h×32位定時器非鏈接模式連續(xù)操作1h×2h×表9-20雙32位定時器非鏈接模式下TGCR配置雙32位定時器非鏈接模式配置過程如下:Timer1:2部分?進(jìn)行必要器件引腳的多路復(fù)用設(shè)置;?對VDD3P3V_PWDN寄存器編程實現(xiàn)定時器0和定時器1的IO引腳上電;?選擇輸出模式(設(shè)置TCR中的CP位);?選擇脈沖寬度模式(設(shè)置TCR中的PWID位);?考慮“÷6”需求設(shè)置(設(shè)置系統(tǒng)模塊TIMERCTL中的TINP0SEL位);?考慮反相器需求設(shè)置(設(shè)置TCR中的INVINP和INVOUTP位);?選擇32位非鏈接模式(設(shè)置TGCR中的TIMMODE位);?從reset中移除定時器Timer1:2(設(shè)置TGCR中的TIM12RS);?為Timer1:2選擇需要的定時周期(設(shè)置PRD12位);?為Timer1:2選擇需要的時鐘源(設(shè)置TCR中的CLKSRC12位);?啟用定時器Timer1:2(設(shè)置TCR中的ENAMODE12位)。Timer3:4部分?選擇32位非鏈接模式(設(shè)置TGCR中的TIMMODE位);?從reset中移除定時器Timer3:4(設(shè)置TGCR中的TIM34RS);?為Timer3:4選擇需要的定時周期(設(shè)置PRD34位);?為Timer3:4選擇需要的預(yù)分頻值(設(shè)置TGCR中的PSC34位);?啟用定時器Timer3:4(設(shè)置TCR中的ENAMODE34位)。表9-21總結(jié)了在通用定時器模式下,涉及到的計數(shù)寄存器(TIMn)和周期寄存器(PRDn)。定時器模式計數(shù)寄存器周期寄存器64位通用模式TIM34:TIM12PRD34:PRD12雙32位鏈接模式

預(yù)分頻器(Timer3:4)TIM34PRD34定時器(Timer1:2)TIM12雙32位非鏈接模式

定時器(Timer1:2)TIM12PRD12帶預(yù)分頻定時器(Timer3:4)TDDR34PSC34表9-21通用定時器模式下使用的計數(shù)和周期寄存器

當(dāng)定時計數(shù)寄存器設(shè)定值大于定時器周期寄存器中的值時,定時計數(shù)器發(fā)生溢出,此時,計數(shù)值達(dá)到最大值(FFFFFFFFh或FFFFFFFFFFFFFFFFh),并翻轉(zhuǎn)為0,繼續(xù)計數(shù),直到達(dá)到計數(shù)器周期,如圖9-22所示。

圖9-2232位定時計數(shù)器溢出示例2、看門狗定時器模式(定時器2)定時器2只能配置為64位看門狗(Watchdog)定時器模式。作為一個看門狗定時器,其可用于使失控的程序擺脫“死循環(huán)”。硬件復(fù)位后,看門狗定時器禁用。然后使用定時器全局控制寄存器(TGCR)中的定時器模式(TIMMODE)位和看門狗定時器控制寄存器(WDTCR)中的定時器啟用(WDEN)位,將定時器配置為看門狗定時器??撮T狗定時器需要定期執(zhí)行特殊的服務(wù)序列。沒有這種定期服務(wù),定時計數(shù)器不斷累加,直到其與定時周期匹配,并導(dǎo)致看門狗事件發(fā)生。

當(dāng)超時事件發(fā)生時,看門狗定時器依賴定時器控制寄存器(TIMERCTL)中的看門狗重置(WDRST)位通過系統(tǒng)模塊編程可以重置整個處理器。如果將WDRST位設(shè)置為1,則看門狗定時器事件會導(dǎo)致設(shè)備重置。如果WDRST位被清除為0,則看門狗定時器事件不會導(dǎo)致設(shè)備重置??撮T狗定時器沒有外部時鐘源和一次使能操作。當(dāng)TGCR中的TIMMODE=2h,WDTCR中的WDEN=1時,選擇并啟動看門狗定時器模式。圖9-23顯示了看門狗定時器的結(jié)構(gòu)框圖。計數(shù)寄存器(TIM12和TIM34)形成64位定時計數(shù)寄存器,周期寄存器(PRD12和PRD34)形成64位周期寄存器。當(dāng)定時計數(shù)器匹配定時周期時,定時器生成中斷信號(WDINT)和看門狗中斷事件,如果系統(tǒng)模塊的TIMERCTL寄存器中的WDRST位被設(shè)置,則看門狗定時器可以重置整個處理器。圖9-23看門狗定時器結(jié)構(gòu)框圖

圖9-24看門狗定時器操作狀態(tài)圖

為了激活看門狗定時器,必須遵循一定的事件順序,如圖9-24所示狀態(tài)圖。一旦看門狗定時器被激活,它只能被看門狗超時事件禁用,在TIMERCTL中WDRST位被設(shè)置為1,或通過硬件重置。當(dāng)軟件被困在一個死循環(huán)中或其他的軟件故障時,需要一個特殊的鍵序列防止看門狗發(fā)生意外服務(wù)。為了防止發(fā)生看門狗超時事件,定時器必須在完成計數(shù)前,通過在A5C6h后寫入DA7Eh到看門狗定時器WDTCR的服務(wù)位(WDKEY)中。A5C6h和DA7Eh都被允許寫入WDKEY位,但只有通過A5C6h后跟著DA7Eh正確的序列寫入到WDKEY位來服務(wù)看門狗定時器。其他的序列寫到WDKEY位將立即觸發(fā)看門狗超時事件。當(dāng)看門狗定時器處于超時狀態(tài)時,定時器將被禁用,而WDEN位則被清0,定時器被重置。進(jìn)入超時狀態(tài)后,除非發(fā)生硬件重置,否則看門狗定時器不能再次啟用。硬件復(fù)位后,看門狗定時器被禁用,然而,允許讀或?qū)懣撮T狗定時寄存器。一旦設(shè)置了WDEN位(啟用看門狗定時器),并寫入A5C6h到WDKEY位,看門狗定時器進(jìn)入到預(yù)激活(Pre-active)狀態(tài)。在預(yù)激活狀態(tài):

?只有當(dāng)寫入正確鍵(A5C6h或DA7Eh)值到WDKEY位時,才允許寫入WDTCR;?當(dāng)WDEN位被設(shè)置為1時,將DA7Eh寫入WDKEY位來重置計數(shù)器并激活看門狗定時器??撮T狗定時器必須在進(jìn)入活動狀態(tài)之前被配置。在預(yù)激活狀態(tài)中,將DA7Eh寫入WDKEY位之前,WDEN位必須設(shè)置為1。每次看門狗定時器通過正確的WDKEY序列服務(wù)時,看門狗定時計數(shù)器自動復(fù)位。3、定時器中斷每個定時器都可發(fā)送兩個獨立的中斷事件(TINTn)給DSP,其取決于定時器的操作模式。當(dāng)定時計數(shù)器中的計數(shù)值達(dá)到周期寄存器中指定的值時,會產(chǎn)生定時器中斷。表9-22顯示了各種定時器模式下產(chǎn)生的中斷示例。定時器模式定時器0定時器1定時器264位模式TINTL0TINTL1-32位鏈接模式TINTL0TINTL1-不帶預(yù)分頻的32位非鏈接模式(Timer1:2)TINTL0TINTL1-帶預(yù)分頻的32位非鏈接模式(Timer3:4)TINTH0TINTH1-看門狗模式--WDINT表9-22定時器中斷生成4、EDMA事件定時器0和定時器1可以將兩個獨立的定時器事件(TEVTn)中的一個發(fā)送給EDMA,其取決于定時器操作模式。當(dāng)計數(shù)器中的計數(shù)值達(dá)到周期寄存器中指定的值時,生成定時器事件。表9-23顯示了各種定時器模式下產(chǎn)生的EDMA事件。定時器模式定時器0定時器1定時器264位模式TEVTL0TEVTL1-32位鏈接模式TEVTL0TEVTL1-不帶預(yù)分頻的32位非鏈接模式(Timer1:2)TEVTL0TEVTL1-帶預(yù)分頻的32位非鏈接模式(Timer3:4)TEVTH0TEVTH1-看門狗模式---表9-23定時器EDMA事件生成9.2定時器9.2.3定時器寄存器

定時器寄存器主要有9個,如表9-24所示。表中列出了64位定時器模式下定時寄存器的偏置地址,其中,定時器0寄存器的起始地址為0x01C21400h,定時器1寄存器的起始地址為0x01C21800h,定時器2寄存器的起始地址為0x01C21C00h。各寄存器的結(jié)構(gòu)組成和功能分析如下。偏置地址縮寫寄存器描述00hPID12外設(shè)識別寄存器1204hEMUMGT仿真管理寄存器10hTIM12計數(shù)寄存器1214hTIM34定時計數(shù)寄存器3418hPRD12定時周期寄存器121ChPRD34定時周期寄存器3420hTCR定時控制寄存器24hTGCR定時全局控制寄存器28hWDTCR看門狗定時器控制寄存器下面詳細(xì)介紹各定時器寄存器的功能及設(shè)置方式:①外設(shè)識別寄存器12(PID12)外設(shè)識別寄存器12(PID12)包含外圍設(shè)備的識別數(shù)據(jù)(類型、類和版本)等,其結(jié)構(gòu)組成如圖9-25所示,功能描述如表9-25所示。圖9-25外設(shè)識別寄存器12(PID12)位域值描述31-23保留0保留22-16類型01h識別外設(shè)類型定時器15-8類07h識別外設(shè)類定時器7-0版本01h識別外設(shè)版本當(dāng)前外設(shè)版本

表9-25外設(shè)識別寄存器12(PID12)域描述②仿真管理寄存器(EMUMGT)仿真管理寄存器(EMUMGT)結(jié)構(gòu)組成如圖9-26所示,功能描述如表9-26所示。

圖9-26仿真管理寄存器(EMUMGT)位域值描述31-2保留0保留1SOFT01確定定時器的仿真模式功能。當(dāng)FREE位被清0時,SOFT位選擇定時器模式。定時器立即停止。當(dāng)計數(shù)器增加到定時周期寄存器(PRDn)中的值時,定時器停止。0FREE01確定定時器的仿真模式功能。當(dāng)FREE位被清0時,SOFT位選擇定時器模式。定時器可忽略SOFT位自由運行。表9-26仿真管理寄存器(EMUMGT)域描述③定時計數(shù)寄存器(TIM12和TIM34)定時計數(shù)寄存器是一個64位寄存器,其被劃分為兩個32位寄存器:TIM12和TIM34。在雙32位定時器模式中,64位寄存器被劃分為一個32位計數(shù)器TIM12和一個32位計數(shù)器TIM34。這兩個寄存器可配置為鏈接或非鏈接模式。定時計數(shù)寄存器TIM12和TIM34的結(jié)構(gòu)組成如圖9-27所示,功能描述如表9-27所示。圖9-27定時計數(shù)寄存器(TIM12和TIM34)位域值描述31-00-FFFFFFFFhTIM12計數(shù)位,該32位值是主計數(shù)器的當(dāng)前計數(shù)。31-0TI

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論