




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2.5片內外設
’C54x
片內外設包含如下幾部分:⑴外部總線操作;⑵通用I/O口(引腳);⑶定時器;⑷時鐘發生器;⑸主機接口;⑹同步串行接口;⑺時分復用串行接口(TDM);⑻軟件可編程等待狀態發生器;⑼可編程存儲器組切換模塊。JTAG接口2.5.1通用I/O口
通用I/O口有兩個:跳轉控制輸入引腳BIO和外部標志輸出引腳XF⒈跳轉控制輸入引腳BIO:該引腳可用于監視外部設備的狀態。程序可以根據引腳BIO輸入狀態有條件地執行一個分支轉移。條件執行指令:
XCn,
cond[,cond[,cond]操作數n=1或2功能:1、如果n=1且條件滿足,則在該指令之后的一條1-字指令被執行;
2、如果n=2且條件滿足,則在該指令之后的一條2-字指令或兩條1-字指令被執行。
3、如果條件未滿足,則根據n=1或2執行一條或兩條NOP指令。例一:XC1,ALEQ;如果A的值小于或等于0,則執行1字指令MAR*AR1+以修改AR1MAR*AR1+ADDA,DAT100
指令執行前指令執行后
A=FFFFFFFFFFh A=FFFFFFFFFFh AR1=0031h AR1=0032h例二:XC2,BIO;如果引腳BIO為低電平(條件滿足),則執行后面的一條雙字指令或2條單字指令。⒉外部標志輸出引腳XF外部標志輸出引腳XF可以用于向外部設備發出信號。XF信號可以由軟件控制。通過對STl(bit13)中的XF位置1或清0,XF引腳輸出為高電平和低電平,亦即CPU向外部發出1和0信號。
執行指令:
SSBXXF;對XF置位
RSBXXF
;對XF復位2.5.2定時器
C5402內部有定時器0和定時器1兩個定時器。結構一樣。片內硬件定時器是軟件可編程的,可用于周期性地產生中斷。定時器可以用來產生外部接口電路的采樣時鐘,如模擬接口。
1.定時器的結構和特點定時器主要由3個16位的存儲器映像寄存器及相應的邏輯控制電路組成。3個存儲器映像寄存器的地址列于下表中。Timer0地址Timer1地址寄存器說明0024H0030HTIM定時器寄存器,每計數一次自動減10025H0031HPRD定時器周期寄存器,當TIM減為0后,CPU自動將PRD的值裝入TIM0026H0032HTCR定時器控制寄存器,包含定時器的控制和狀態位
C54xDSP定時器結構如下圖所示。它由兩個基本功能塊組成,即主定時器模塊(PRD和TIM)、預定標器模塊(TCR中的TDDR和PSC等)及相應的邏輯控制電路。主定時器模塊(由PRD和TIM組成)預定標器模塊(由TCR的TDDR和PSC位組成)。
*定時器寄存器(TIM):是減1計數器,可加載周期寄存器PRD的值,并隨計數減少。*定時器周期寄存器(PRD):PRD用于重載定時器寄存器(TIM)。定時器控制寄存器(TCR)TCR包含定時器的控制和狀態位,控制定時器的工作過程。定時器主要特點:(1)定時器是一個減計數器。(2)由16位計數器和4位預分頻計數器組成。16位計數器的觸發脈沖由預分頻計數器提供,預分頻計數器的觸發脈沖是CPU時鐘信號。(3)有復位功能。(4)可以選擇調試斷點時定時器的工作方式。定時器控制寄存器的控制和狀態位如下:2.定時器控制寄存器(TCR)
TCR各位的意義描述如下表所示
3.定時器工作原理定時器的工作過程:定時器的基準工作脈沖由CLKOUT提供,每來一個脈沖,預定標計數器PSC減1,當PSC減至0時,下一個脈沖到來時,PSC產生借位。借位信號分別控制定時計數器TIM減1和重新將TDDR的內容加載到預定標計數器PSC。每次定時計數器TIM
減為0時,PSC的下一個借位信號到來時,TIM也產生借位信號,此借位信號作為中斷信號送到CPU和定時器輸出引腳TOUT
,同時控制或門3重新用PRD值裝載TIM
。
定時器的基本定時周期(定時時間)T可由下式計算:
T=TCLKOUT*(TDDR+1)*(PRD+1)
4.定時器的初始化初始化定時器的步驟如下:(1)對寄存器TCR中的TSS位置1,停止定時器工作;(2)裝入PRD初值;(3)重新裝入TCR:初始化TDDR、將TSS清0啟動定時器、將TRB置1重新裝入定時初值(PRD加載到TIM,TDDR加載到PSC)。使能定時器中斷的操作步驟如下(假定INTM=1):(1)
將IFR中的TINT位置1,清除尚未處理完(掛起)的定時器中斷。(2)
將IMR中的TINT位置1,使能定時器中斷。(3)
將ST1中的INTM位清0,開放所有的中斷。例:用TMS320C54x作為信號發生器,輸出周期為8ms的方波信號。假定主頻f=10MHz。編寫出匯編源程序。解:因為輸出方波周期為8ms,所以定時中斷周期T(即定時時間)應為4ms,每中斷1次將XF引腳的電平取反1次便可在XF引腳產生周期為8ms的方波。(TDDR+1)(PRD+1)=T*f,T*f=4*10-3*10*106=40000取TDDR+1=16,則PRD+1=40000/16=2500則TDDR=15,PRD=2499=9C3H程序如下:
.mmregs .def START .def INTSERVEX .usect "STACK",10定時器的使用FLAG .set 60h .textSTART: STM #X+10,SP STM #0120H,PMST;中斷向量表首址0100h,定時
;器中斷向量014ch STM #0010H,TCR STM #9C3H,PRD STM #0FEFH,TCRSSBXXFSTM#1,FLAG STM #08H,IFR STM #08H,IMR RSBX INTM WAIT: B WAIT;以下是中斷服務程序INTSERVE: RSBX CPL LD #0,DP BITF FLAG,#1 BC XFOUT,NTC RSBX XF STM #0,FLAG B NEXTXFOUT: SSBX XF STM #1,FLAGNEXT: RETE .end指令BITF Smem,#lk功能:如果((Smem)ANDlk)=0
則
否則 說明:該指令檢測數據存儲器操作數Smem的某位或多位,若指定位(一位或多位)為0,狀態寄存器ST0中的TC位清0,否則置1。常數lk用于屏蔽待檢測位。要檢測Smem中某位或某幾位是否為1時,常數lk中與之對應的位應為1,而其他位為0。例BITF60H,#0001H指令執行前 TC=XDP=0RAM:(60H)=1205H7、命令文件的編寫命令文件在片內RAM中定義幾個區間,用于存放與主程序和中斷服務程序、中斷向量表、堆棧相應的段。指令執行后TC=1DP=0RAM:(60H)=1205H定時器的使用用定時器可以實現方波發生器、脈沖頻率監測器、周期信號周期監測等功能。
ORM #0010h,TCR0;停止定時器0STM #799,TIM0STM #799,PRD0STM #K_TCR0,TCR0;啟動定時器0中斷;K_TCR0=0269HST #0FFFFh,IFR;初始化中斷
ORM #0008h,IMRRSBXINTM 例如:用定時器設計一個周期為4ms的方波信號發生器。假設DSP主頻為4MHZ(TCLKOUT=250ns),方波信號周期為4ms,那么定時中斷周期應為T=2MS,每中斷一次,輸出端電平取反一次。定時中斷周期T=TCLKOUT*(TDDR+1)*(PRD+1),假設TDDR=9,那么PRD=799(031FH). 15-1211109-6543-0保留softfreePSCTRBTSSTDDR預定標計數器定時器重新加載控制位定時器停止位定時器分頻系數;K_TCR0設置定時器0控制寄存器的內容K_TCR0_SOFT.set0b<<11K_TCR0_FREE.set0b<<10K_TCT0_PSC.set1001b<<6K_TCT0_TRB.set1b<<5K_TCT0_TSS.set0b<<4K_TCT0_TDDR.set1001b<<0K_TCR0.setK_TCR0_SOFT|K_TCR0_FREE|K_TCT0_PSC|K_TCT0_TRB|K_TCT0_TSS|K_TCR0_TDDR;初始化定時器0
t0_flag.usect"vars",1
timout:PSHMST0 PSHMST1BITFt0_flag,#1 BCxf_out,NTC SSBXXF ST#0,t0_flag Bnextxf_out:RSBXXF ST#1,t0_flagnext: POPMST1POPMST0 RETE;當前XF輸出電平標志位,如果t1_flag=1,;則XF=1;如果t1_flag=0,則XF=0
.sect“.vector”rst:b_c_int00
nop
nop
nop space18*4*16tint0: btimout
利用DSP的定時器,在XF引腳輸出一個頻率為1kHz的方波。編程要求:(1)DSP實驗板上晶振頻率為16MHz,對時鐘發生器的PLL編程,使CPU的時鐘頻率為32MHz;(2)定時器采用中斷方式定時,將中斷向量表移到從0100h單元開始的程序存儲空間。1、計算定時器的參數TDDR和PRD2、由中斷向量表起始地址0100H求出IPTR值3、由IPTR、MP/MC、OVLY、DROM、CLKOFF等的值求得PMST的值。4、由中斷向量表起始地址0100H和定時器0的中斷號求得定時器0的中斷向量地址5、編寫主程序。主程序主要是對DSP初始化,主要包括:(1)設置堆棧和堆棧指針(中斷時堆棧用于保存斷點地址)(2)PMST寄存器的初始化(3)定時器的初始化(包括中斷初始化)6、編寫中斷服務程序中斷服務程序主要作用是:每次定時時間到時,將XF引腳的狀態取反。但DSP沒有取反指令,因此,進入中斷服務程序后首先要判斷XF引腳的當前狀態,若為1則修改為0,若為0則修改為1。為此,需要將數據存儲器的某個單元作為標志單元,該單元的某個位作為標志位,用此標志位來標志XF引腳的狀態。每次進入中斷服務程序后通過檢測該標志位的值來判斷XF引腳當前的狀態。指令BITF Smem,#lk功能:如果((Smem)ANDlk)=0
則
否則 說明:該指令檢測數據存儲器操作數Smem的某位或多位,若指定位(一位或多位)為0,狀態寄存器ST0中的TC位清0,否則置1。常數lk用于屏蔽待檢測位。要檢測Smem中某位或某幾位是否為1時,常數lk中與之對應的位應為1,而其他位為0。例BITF60H,#0001H指令執行前 TC=XDP=0RAM:(60H)=1205H7、命令文件的編寫命令文件在片內RAM中定義幾個區間,用于存放與主程序和中斷服務程序、中斷向量表、堆棧相應的段。指令執行后TC=1DP=0RAM:(60H)=1205H練習解答5.3鏈接命令文件有什么作用?在生成DSP代碼過程中何時發揮這些作用?答:鏈接命令文件的主要作用有兩方面:一是利用MEMORY命令定義目標系統的存儲器配置,包括對存儲器各部分命名,以及規定它們的起始地址和長度;一是利用SECTIONS命令告訴鏈接器如何將輸入段組合成輸出段,以及將輸出段放在存儲器中的什么位置。這些作用是在鏈接器對目標文件進行鏈接的過程中起作用的。
5.10在文件的鏈接過程中,需要用到Linker命令文件。請按如下參數設計一個命令文件,其參數為: 中斷向量表起始地址為7600H;長度為8000H; 源程序代碼在中斷向量之后; 初始化數據起始為1F10H;長度為4000H; 未初始化數據在初始化數據之后。解:命令文件為:MEMORY{PAGE0:PROM: org=7600h,len=8000hPAGE1:DRAM: org=1F10h,len=4000h}SECTIONS{.vectors :>PROMPAGE0.text :>PROMPAGE0.data :>DRAMPAGE1.bss :>DRAMPAGE1}2.6中斷系統
C54xDSP既支持軟件中斷,也支持硬件中斷:1、軟件中斷:由程序指令(INTR、TRAP或RESET)請求的中斷。2、硬件中斷:由物理設備信號請求的中斷,他有兩種形式:①受外部中斷口信號觸發的外部硬件中斷。②受片內外設信號觸發的內部硬件中斷。一、中斷分類分成如下兩大類:可屏蔽中斷和不可屏蔽中斷。1、可屏蔽中斷:可以用軟件來屏蔽或使能的中斷’C54xDSP最多可以支持16個用戶可屏蔽中斷,例如’C5402只使用14個可屏蔽中斷。這14個中斷的硬件名稱為:
①
②
RINT0、XINT0、RINT1和XINT1(串行口中斷)③TINT0、TINT1(定時器中斷)④HPINT、DMAC0、DMAC4、
DMAC52、非屏蔽中斷:這些中斷是不能夠屏蔽的。包括所有的軟件中斷,以及兩個外部硬件中斷(復位和)。
C5402中斷源的中斷向量及硬件中斷優先權二、中斷標志寄存器(IFR)
中斷標志寄存器:是一個存儲器映射的CPU寄存器,每個可屏蔽中斷在IFR中有其相應的中斷標志位,當CPU接收到可屏蔽中斷請求時,IFR相應的位置1。直到CPU響應該中斷為止。
將中斷標志清0
的4種方法:①’C54xDSP復位(引腳為低電平)。②中斷得到處理。③將1寫到IFR中的適當位(相應的位變為0),相應的尚未處理的中斷被清除。④利用合適的中斷號執行INTR指令。三、中斷屏蔽寄存器(IMR)
中斷屏蔽寄存器(IMR):是一個存儲器映射的CPU寄存器,用來屏蔽外部和內部的可屏蔽中斷。
如果狀態寄存器ST1中的INTM位=1,IMR無效。當ST1中的INTM位=0時,
IMR寄存器中的某一位為1,就使能相應的中斷。用戶可以對IMR寄存器進行讀寫操作。
四、處理中斷的步驟
’C54xDSP處理中斷分如下三個步驟:1、接收中斷請求通過軟件(程序代碼)或硬件(引腳或片內外設)請求掛起主程序。如果中斷源正在請求一個可屏蔽中斷,則當中斷被接收到時中斷標志寄存器(IFR)的相應位被置1。(1)
硬件中斷請求
’C5402硬件中斷的請求信號:
外部中斷口可屏蔽中斷:
INT3~INT0引腳;
外部口非屏蔽中斷:RS和NMI引腳;
片內外設中斷:BRINT0、BXINT0、BRINT1和BXINT1(串口中斷)
TINT0、TINT1(定時器中斷);
DMAC4、DMAC5(DMA中斷);
HPINT(HPI中斷)。
(2)
軟件中斷請求
軟件中斷是由程序指令產生的中斷請求,主要有3條指令:
INTR、TRAP
、RESET指令軟件中斷指令
INTR:語法:INTRK;K為中斷號,0≤K≤31執行:例
INTR3指令執行前PC=0025h,IPTR=1FFhINTM=0SP=1000hRAM:(0FFFh)=9653h指令執行后PC=FF8ChINTM=1SP=0FFFhRAM:(0FFFh)=0026h軟件中斷指令TRAP:語法:TRAPK;K為中斷號,0≤K≤31執行:軟件復位指令RESET:語法:RESET;無操作數執行:對PC、ST0、ST1、IFR加載初始值如下:(IPTR)<<7→PC1→C0→DP0→BRAF0→C160→CPL0→OVM0→OVA1→TC1→SXM0→HM0→FRCT1→INTM0→OVB0→ARP0→ASM1→XF0→CMPT0→IFR該指令執行非屏蔽的軟件復位,以便使C54x處于一個可知狀態。2、應答中斷
對于軟件中斷和非屏蔽的硬件中斷,CPU將立即響應,進入相應中斷服務程序。
對于硬件可屏蔽中斷,滿足以下3種條件CPU才能響應中斷。
①
中斷優先級最高(當同時出現一個以上中斷請求時)。②INTM位清0。③IMR屏蔽位為1。
滿足上述條件后,CPU響應中斷,終止當前正進行的操作,指令計數器PC自動轉向相應的中斷向量地址,取出中斷服務程序地址,并發出硬件中斷響應信號IACK,而清除相應的中斷標志位。⒊執行中斷服務程序(ISR)
當應答中斷后,CPU會采取如下的操作:1、把程序計數器(PC)值(返回地址)壓入堆棧;注意:程序計數器擴展寄存器(XPC)不會自動保存在堆棧中。因此,如果ISR位于和中斷向量表不同的頁面,用戶必須在分支轉移到ISR之前壓入XPC到堆棧中。FRET[E]指令可以用于從ISR返回。2、將中斷向量的地址加載到PC;3、取出位于中斷向量地址處的分支轉移指令(分支轉移被延時時,并且用戶也存儲了一個2字指令或兩個1字指令,則CPU也會獲取這兩個字);4、執行分支轉移,轉到中斷服務程序(ISR)。(如果分支轉移被延時,則在分支轉移之前會執行額外的指令);5、執行中斷服務程序直到遇到其中的返回指令;6、從堆棧中彈出返回地址到PC中(注意
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CIIA 029-2022海洋科學數據共享安全管理要求
- T/CI 364-2024軟土長條形基坑變形施工控制規范
- T/CEPPEA 5016-2023電動自行車充電設施設計技術導則
- T/CEMIA 021-2019厚膜集成電路用電阻漿料規范
- T/CECS 10195-2022健康建筑產品評價通則
- T/CCMA 0102-2020工程機械行業基于Handle的供應鏈的信息交互接口技術要求
- T/CCIAS 020-2023四川風味豆瓣醬
- T/CCAS 013.2-2020水泥企業潤滑管理第2部分:水泥企業閉式齒輪油的使用規范
- T/CARD 038.2-2023輔助器具互聯網基本公共服務平臺第2部分:服務指南
- T/CAPE 11005-2023光伏電站光伏組件清洗技術規范
- 城鄉規劃管理與法規智慧樹知到答案章節測試2023年同濟大學
- 公路水運工程施工安全重大隱患排查要點講義
- GB/T 9116-2010帶頸平焊鋼制管法蘭
- GB/T 7984-2001輸送帶具有橡膠或塑料覆蓋層的普通用途織物芯輸送帶
- GB/T 31974-2015鈍化顆粒鎂
- GA 124-2013正壓式消防空氣呼吸器
- 信息披露申請表(買家)
- 燃煤電廠鍋爐煙氣靜電除塵裝置設計
- 內痔并出血+外痔病歷模板
- 學生社會勞動實踐表
- TSG11-2020 鍋爐安全技術規程
評論
0/150
提交評論