當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]TMS320F240是TI公司定點(diǎn)DSP芯片F(xiàn)24x系列中具有代表性的一種。

摘要:TMS320F240是TI公司定點(diǎn)DSP芯片F(xiàn)24x系列中具有代表性的一種。在分析其多中斷源共享DSP內(nèi)核同一中斷級(jí)原理的基礎(chǔ)上,探討該系列芯片在實(shí)時(shí)多中斷任務(wù)處理的軟件編程過程中的實(shí)現(xiàn)方法,并給出具體的應(yīng)用實(shí)例。

    關(guān)鍵詞:TMS320F240 實(shí)時(shí)多中斷任務(wù) ISR GISR SISR

引言

TMS320F240內(nèi)部集成了完善的外圍設(shè)備,包括2個(gè)10位的A/D轉(zhuǎn)換器和1個(gè)串口通信接口模塊(SCI),以及其獨(dú)有的、可提供3個(gè)16位的定時(shí)器,3個(gè)單比較單元和3個(gè)全比較單元的事件管理器(event manager)單元。F240芯片采用多個(gè)中斷源共享DSP內(nèi)核同一中斷級(jí)的中斷結(jié)構(gòu),與常用的數(shù)學(xué)控制芯片相比,它提供了更多的中斷源,可以滿足對(duì)復(fù)雜控制對(duì)象的實(shí)時(shí)多中斷任務(wù)處理要求,使得用戶能更加方便、靈活地編寫中斷處理程序。

1 TMS320F240中斷系統(tǒng)的特點(diǎn)及中斷響應(yīng)過程

1.1 TMS320F240的中斷系統(tǒng)的特點(diǎn)

TMS320F240芯片中斷系統(tǒng)的基本特點(diǎn)是:通過賦予每個(gè)中斷源以不同的優(yōu)先級(jí),使多個(gè)中斷源可以共享DSP內(nèi)核中同一中斷級(jí),從而提供更多的中斷源和更靈活的中斷處理方法。具體而言,在F240器件中,所有的中斷請(qǐng)求都是送至DSP內(nèi)核進(jìn)行處理的。對(duì)可屏蔽中斷,DSP內(nèi)核只提供了6個(gè)可屏蔽的中斷級(jí)(INT1~I(xiàn)NT6)。而F240的可屏蔽中斷源大大超過了6個(gè)(例如:僅F240器件的3個(gè)通用定時(shí)器就有12個(gè)可屏蔽中斷源,用戶可使用的中斷源則多達(dá)36個(gè))。所以,在F240中,這6個(gè)中斷級(jí)中的每一個(gè)都會(huì)被多個(gè)中斷源共享,即F240在實(shí)現(xiàn)多中斷任務(wù)時(shí),基本上都會(huì)出現(xiàn)多中斷源共享DSP內(nèi)核同一中斷的情況。當(dāng)多于一個(gè)的硬件中斷被觸發(fā)掛起時(shí),F(xiàn)240將根據(jù)優(yōu)先級(jí)別的高低順序執(zhí)行相應(yīng)的中斷服務(wù)子程序。F240器件可以識(shí)別下列4種類型的中斷源:

①復(fù)位中斷;

②由6個(gè)外部引腳(XINT1、XINT2、XINT3、PDPINT、RS以及NMI引腳)產(chǎn)生的外部中斷;

③由片內(nèi)外設(shè)模塊,包括事件管理模塊(EV)、A/D轉(zhuǎn)換模塊(ADC)、串行通信模塊(SCI)等產(chǎn)生的外設(shè)中斷;

④由INTR指令、NMI指令或TRAP指令等引起的軟件中斷等。

    其中,除了軟件中斷、兩個(gè)外部硬件中斷RS和NMI是不可屏蔽中斷之外,其余的都是可屏蔽中斷。相對(duì)于可屏蔽中斷而言,不可屏蔽中斷涉及的寄存器較少,處理方法較為簡便。文中主要對(duì)可屏蔽中斷的多中斷任務(wù)處理進(jìn)行詳細(xì)分析。

1.2 TMS320F240多級(jí)中斷寄存器的結(jié)構(gòu)

在TMS320F240的程序空間中,中斷向量占據(jù)了0000h~0003fh的地址空間。中斷向量地址被分為兩個(gè)地址單元,從而雙字的轉(zhuǎn)移指令可存放在這些單元中。為了處理多中斷源共享DSP內(nèi)核同一中斷級(jí)的問題,DSP內(nèi)部提供了多級(jí)中斷控制寄存器以滿足需要。

(1)CPU總中斷級(jí)寄存器

①中斷屏蔽寄存器(IMR)。它包含用于使能或禁止每一中斷級(jí)(INT1~I(xiàn)NT6)的屏蔽位,地址為0004h,各位情況如圖1所示。它用來屏蔽外部和內(nèi)部硬件中斷(NMI和RS除外)。當(dāng)要屏蔽某硬件中斷時(shí),就把相應(yīng)位清0;當(dāng)要開放某硬件中斷時(shí),就把相應(yīng)位置1,并且它的每一位不受硬件復(fù)位的影響。在圖1中,0表示一般情況下讀的數(shù)為0,R表示讀,W表示寫,-0表示復(fù)位后這位為0。

    ②中斷標(biāo)志寄存器(IFR)。它包含用以指示INT1~I(xiàn)NT6中斷級(jí)中,已經(jīng)發(fā)送至CPU的可屏蔽中斷請(qǐng)求的標(biāo)志位,地址為0006h,各位情況如圖2所示。當(dāng)有一個(gè)可屏蔽中斷到達(dá)CPU時(shí),IFR的相應(yīng)標(biāo)志位就置1,表明相應(yīng)中斷(INT1~I(xiàn)NT6)正在被掛起或正在等待響應(yīng)。將1寫入到相應(yīng)的標(biāo)志位,可清除相應(yīng)位,并清除其中斷請(qǐng)求。在圖2中,0表示一般情況下讀的數(shù)為0,R表示讀,W1C表示寫1時(shí)把這位清為0,-0表示復(fù)位后這位為0。

(2)外設(shè)備中斷源分級(jí)控制寄存器

由外設(shè)產(chǎn)生的每一個(gè)特定中斷源,DSP都提供兩個(gè)相應(yīng)的分級(jí)控制寄存器,包括一個(gè)子標(biāo)志位中斷控制寄存器和一個(gè)子屏蔽位中斷控制寄存器。

對(duì)于由事件管理器產(chǎn)生的中斷事件,每個(gè)中斷源都有相應(yīng)的中斷控制寄存器,如圖3所示。

①三組事件中斷子屏蔽寄存器(EVIMRA/EVIMRB/EVIMRC),用以屏蔽對(duì)應(yīng)的事件管理器中斷。EVIMRi(i=A,B,C)各位的意義基本與IMR一致。

②三組事件中斷子標(biāo)志寄存器(EVIFRA/EVIFRB/EVIFRC),用以指示對(duì)應(yīng)的事件管理器中斷。EVIFRi(i=A,B,C)各位的意義基本與IFR一致。

對(duì)于系統(tǒng)模塊中斷,其各個(gè)中斷事件的中斷屏蔽位和中斷標(biāo)志位由各個(gè)專用的分級(jí)模塊寄存器提供。如SCI中斷,其掃收中斷RXINT的屏蔽與使能由SCI模塊內(nèi)的控制寄存器SCICLT2的中斷位RX/BKEN設(shè)置。當(dāng)接收中斷產(chǎn)生后,SCI的接收狀態(tài)寄存器SCIRXST的RXRDY位置1,以表示接收中斷產(chǎn)生。

圖4 可屏蔽中斷的多中斷任務(wù)響應(yīng)處理示意圖

    另外,值得注意的是,DSP內(nèi)核的ST0狀態(tài)寄存器中還有一個(gè)中斷總屏蔽位-INTM。INTM為0時(shí),開中斷,允許沒有被屏蔽的中斷使能;INTM為1時(shí),則禁止所有可屏蔽中斷。

1.3 TMS320F240的中斷響應(yīng)過程

(1)TMS320F240中斷響應(yīng)過程

當(dāng)有中斷事件發(fā)生時(shí),F(xiàn)240器件分三個(gè)階段進(jìn)行中斷處理。

①接收中斷請(qǐng)求。由軟件中斷(來自程序代碼)或硬件中斷(來自引腳或片內(nèi)外設(shè))提出中斷請(qǐng)求,將主程序掛起。

②響應(yīng)中斷。如果中斷是可屏蔽的,當(dāng)這些可屏蔽中斷的應(yīng)用條件滿足時(shí),F(xiàn)240器件響應(yīng)中斷;對(duì)于不可屏蔽的硬件中斷和軟件中斷,F(xiàn)240器件將立即作出響應(yīng)。

③執(zhí)行中斷服務(wù)子程序。一時(shí)中斷被響應(yīng),F(xiàn)240器件便轉(zhuǎn)移到其相應(yīng)的中斷子程序ISR(Interrupt Service Routine)。F240按用戶放置在預(yù)定地址(向量存儲(chǔ)單元)處的轉(zhuǎn)移指令,執(zhí)行用戶寫好的中斷服務(wù)程序。

在完成對(duì)多中斷任務(wù)的實(shí)時(shí)處理時(shí),對(duì)不同級(jí)別的中斷源響應(yīng),直接進(jìn)入相應(yīng)的ISR進(jìn)行處理即可。對(duì)共享DSP內(nèi)核中同一中斷優(yōu)先級(jí)的多中斷源,DSP則利用內(nèi)部的多級(jí)中斷控制寄存器,對(duì)每一個(gè)中斷源發(fā)出的中斷請(qǐng)求都用多個(gè)中斷標(biāo)志進(jìn)行標(biāo)識(shí)。圖4是一個(gè)多中斷源共享INT3級(jí)中斷的多中斷任務(wù)請(qǐng)求響應(yīng)處理過程示意圖。當(dāng)接收到一個(gè)中斷信號(hào)(TPINT2/TOFINT3)時(shí),相應(yīng)的中斷源子標(biāo)志寄存器(EVIFRB)中的標(biāo)志位被置位,用以指示中斷已被請(qǐng)求。如果中斷源子屏蔽寄存器(EVIMRB)中的屏蔽位也被設(shè)置為開中斷,則該信號(hào)被送至仲裁邏輯器,仲裁邏輯可能同時(shí)從一個(gè)或多個(gè)中斷控制寄存器接收到類似的多中斷任務(wù)信號(hào)。仲裁邏輯通過比較這些競爭中斷請(qǐng)求的優(yōu)先級(jí),將具有最高優(yōu)先級(jí)的中斷送至CPU。CPU的總中斷級(jí)標(biāo)志寄存器IFR中與所接收的中斷優(yōu)先級(jí)相對(duì)應(yīng)的中斷標(biāo)志位將被置位,指示中斷被掛起。如果總中斷級(jí)屏蔽寄存器IMR中相應(yīng)的屏蔽位為1,并且DSP中斷總屏蔽位INTM為0,則CPU響應(yīng)該中斷并執(zhí)行相應(yīng)的中斷服務(wù)子程序。

(2)中斷向量偏移地址

為了更好地處理多中斷源復(fù)用的問題,DSP采用了向量偏移地址的方法。因?yàn)椴捎弥袛鄻?biāo)志分辨的方法需要進(jìn)行多次條件判斷才能把涉及到的具體中斷源分辨出來;而采用中斷向量偏移地址的方法,只需兩條指令即可完成分辨任務(wù),減少了程序存儲(chǔ)器的存儲(chǔ)開銷,節(jié)約了CPU的時(shí)鐘開銷。

DSP控制器為事件管理模塊的每一個(gè)中斷都分配了一個(gè)不同的中斷向量偏移地址。當(dāng)某個(gè)事件管理模塊發(fā)出了請(qǐng)求信號(hào),分自動(dòng)地將該中斷的向量偏地址寫入到對(duì)應(yīng)的事件管理中斷向量寄存器(EVIVRA/EVIVRB/EVIVRC)中。而對(duì)于由系統(tǒng)外設(shè)模塊產(chǎn)生的中斷,DSP控制器將分配的中斷向量偏移地址寫入到系統(tǒng)中斷向量寄存器(SYSIVR)中。用戶可以通過讀取該寄存器來取得外設(shè)中斷的中斷向量偏移地址。所以在編程開發(fā)時(shí),先要編好一個(gè)中斷向量表,對(duì)于沒有用到的中斷也應(yīng)該編上,并讓它返回到一個(gè)空位置,以免發(fā)生意外情況。這里,給出事件管理器B組的INT3級(jí)中斷向量寄存器的結(jié)構(gòu)示意圖,如表1所列。關(guān)于每一個(gè)中斷級(jí)的中斷向量寄存器(IVR)單元和每一中斷事件的偏移量的詳細(xì)信息,見F240的數(shù)據(jù)手冊(cè)。

表1 TMS320F240 INT3級(jí)中斷控制向量表

中斷源名稱 DSP內(nèi)核中斷級(jí)向量地址 外設(shè)向量寄存器地址 外設(shè)向量偏移地址 是否可屏蔽 控制器模塊 中斷功能
TPINT2 INT3(0006H)

事件管理器中斷組B
EVIVRB(7433H) 002AH EV.GPT2 定時(shí)器2周期中斷
TCINT2 002CH EV.GPT2 定時(shí)器2比較中斷
TUFINT2 002DH EV.GPT2 定時(shí)器2下溢中斷
TOFINT2 002EH EV.GPT2 定時(shí)器2上溢中斷
TPINT3 002FH EV.GPT3 定時(shí)器3周期中斷
TCINT3 0030H EV.GPT3 定時(shí)器3比較中斷
TUFINT3 0031H EV.GPT3 定時(shí)器3下溢中斷
TOFINT3 0032H EV.GPT3 定時(shí)器3上溢中斷

2 TMS320F240實(shí)時(shí)多中斷任務(wù)處理的軟件實(shí)現(xiàn)

由于F240器件采用了多個(gè)中斷源共享內(nèi)核同一中斷級(jí)的中斷方式,不僅提供了更多的中斷源,而且使得用戶能方便地處理各種中斷源的中斷請(qǐng)求。

如圖5所示,當(dāng)系統(tǒng)有多中斷任務(wù)產(chǎn)生時(shí),一旦有中斷任務(wù)被響應(yīng),則CPU終止當(dāng)前正在執(zhí)行的程序代碼,轉(zhuǎn)移至中斷服務(wù)子程序并執(zhí)行。中斷服務(wù)子程序主要分兩個(gè)步驟完成。

①轉(zhuǎn)移至通用中斷服務(wù)子程序(GISR-G功Interrupt Service Routine)。當(dāng)中斷級(jí)中的某一個(gè)中斷被響應(yīng)時(shí),CPU將轉(zhuǎn)移至相應(yīng)的向量地址,并根據(jù)該地址轉(zhuǎn)移至GISR。例如,若INT3中的一個(gè)中斷被響應(yīng),則程序計(jì)數(shù)器(PC)值被存入棧頂,然后PC機(jī)中裝入程序寄存器地址0006h。地址0006h和0007h中包含一條轉(zhuǎn)移指令。該指令使CPU轉(zhuǎn)移至GISR。

②轉(zhuǎn)移至特定中斷服務(wù)子程序(SISR-Special Interrupt Service Routine)。當(dāng)一個(gè)外設(shè)中斷請(qǐng)求被響應(yīng)時(shí),外設(shè)產(chǎn)生一個(gè)相應(yīng)于該特定中斷事件的向量地址偏移量。該偏移量通常被鎖存在系統(tǒng)中斷向量寄存器(SYSIVR)或事件管理中斷向量寄存器(EVIVRA/EVIVRB/EVIVRC)中。GISR必須讀取存儲(chǔ)在IVR中的值,確定具體的子中斷源,并據(jù)此產(chǎn)生轉(zhuǎn)移至SISR的轉(zhuǎn)移目標(biāo)地址,然后進(jìn)行特定的中斷處理。

在對(duì)SISR進(jìn)行處理完畢之后,ISR以一條返回指令RET結(jié)束。該指令將把返回地址從堆棧彈出。然后,CPU繼續(xù)執(zhí)行被中斷的代碼序列。

如果對(duì)于某一中斷級(jí),并沒有多中斷源共享的情況,則直接在GISR中進(jìn)行中斷處理即可。此時(shí),沒有必要進(jìn)入SISR進(jìn)行子中斷源的判斷。另外,進(jìn)入中斷后,INTM位自動(dòng)置1,以防止其它的可屏蔽中斷。若想允許中斷嵌套,則要在ISR中清除INTM位(CLRC INTM),在全局上重新使能可屏蔽中斷,使得新的ISR得以嵌套。

圖6 中斷服務(wù)程序結(jié)構(gòu)框圖

    下面結(jié)合一個(gè)具體的機(jī)器人DSP控制程序,給出DSP實(shí)時(shí)多中斷任務(wù)處理的實(shí)例。在本機(jī)器人DSP控制程序中,一共要完成四個(gè)中斷實(shí)時(shí)處理任務(wù),并且涉及到了多個(gè)中斷源共享DSP內(nèi)核同一中斷級(jí)的中斷方式。中斷服務(wù)程序結(jié)構(gòu)框圖如圖6所示。串行中斷SCI占用了INT1第一級(jí)中斷,完成DSP與上位機(jī)的通信任務(wù)。定時(shí)器T1中斷占用了INT2第二級(jí)中斷,完成傳感器的位置信息采集和PID控制任務(wù)。而定時(shí)器T2中斷和定時(shí)器T3中斷則共用了INT3第三級(jí)中斷,完成產(chǎn)生兩路PWM波形的任務(wù)。定時(shí)器T2和定時(shí)器T3各自周期中斷的向量偏移地址分別為002BH和002FH。當(dāng)有INT3級(jí)中斷申請(qǐng)時(shí),在對(duì)應(yīng)的中斷服務(wù)程序(ISR)中判斷中斷的向量偏移地址,以此來確定具體是產(chǎn)生了定時(shí)器T2中斷還是定時(shí)器T3中斷,再轉(zhuǎn)入定時(shí)器T2/T3相應(yīng)的子中斷服務(wù)程序。在中斷服務(wù)程序中,需要根據(jù)在中斷程序中對(duì)各種寄存器的使用情況,編寫中斷保護(hù)和中斷恢復(fù)代碼,即在進(jìn)入ISR時(shí),要對(duì)這些寄存器變量進(jìn)行堆棧保護(hù);在ISR完成時(shí),要對(duì)這些寄存器變量進(jìn)行堆?;謴?fù)。另外,在編寫中斷服務(wù)程序時(shí),要注意對(duì)各寄存器的中斷標(biāo)志位和中斷屏蔽位進(jìn)行適當(dāng)?shù)奶幚?,為進(jìn)入下一次中斷做準(zhǔn)備。以下即為給出的機(jī)器人中斷服務(wù)程序的核心代碼,主要對(duì)兩個(gè)定時(shí)器中斷源共享INT3中斷級(jí)的中斷處理進(jìn)行詳盡地闡述。對(duì)于INT1和INT2這兩個(gè)中斷任務(wù),由于無多中斷源共享的問題,在進(jìn)行中斷處理時(shí)比較簡單,直接進(jìn)入相應(yīng)的ISR即可。相應(yīng)的中斷處理程序請(qǐng)見網(wǎng)絡(luò)補(bǔ)充版。

結(jié)語

在利用DSP進(jìn)行數(shù)字化控制的過程中,必然要使用到較多的中斷才能圓滿完成對(duì)復(fù)雜控制系統(tǒng)的控制任務(wù)。F240作為DSP TMS320F24x系列的典型代表,掌握F240的中斷處理方法,對(duì)TMS320F24x系列的TMS320F241/F243/C242以及TMS320LF2406/LF2407等芯片同樣具有參考意義。因此,這種處理方法還具有一定的通用性。筆者將該處理方法應(yīng)用到基于TMS320F240的主從遙控作業(yè)機(jī)器人控制系統(tǒng)的軟件開發(fā)中。經(jīng)實(shí)踐證明,這能夠滿足機(jī)器人的實(shí)時(shí)多中斷任務(wù)處理的要求,并取得了良好的實(shí)際效果。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉