《DSP技術(shù)及應(yīng)用》課件第3章_第1頁
《DSP技術(shù)及應(yīng)用》課件第3章_第2頁
《DSP技術(shù)及應(yīng)用》課件第3章_第3頁
《DSP技術(shù)及應(yīng)用》課件第3章_第4頁
《DSP技術(shù)及應(yīng)用》課件第3章_第5頁
已閱讀5頁,還剩218頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章TMS320C54xDSP片內(nèi)外設(shè)3.1時鐘發(fā)生器3.2定時器3.3中斷系統(tǒng)3.4通用I/O接口3.5

McBSP用作SPI接口3.6多通道緩沖串口McBSP3.7主機(jī)接口3.8

DMA控制器3.9外部總線操作

C54x系列DSP的片內(nèi)外設(shè)配置不完全相同,但差別也不是很明顯,基本都包括時鐘發(fā)生器、定時器、中斷、多通道緩沖串口(McBSP)、主機(jī)接口(HPI)、直接存儲器訪問控制

器(DMA)及通用I/O、外部總線操作等。下面以MS320VC5416

(以下簡寫為5416)為例,按由簡單到復(fù)雜的順序介紹其片內(nèi)外設(shè)。

3.1時鐘發(fā)生器

時鐘發(fā)生器為DSP的內(nèi)部各單元和外部器件提供時鐘,5416與時鐘有關(guān)的內(nèi)部單元包括以下幾種。

(1)內(nèi)部振蕩器及鎖相環(huán)(PLL)。它們產(chǎn)生CPU運(yùn)行主時鐘,同時受BSCR(分區(qū)轉(zhuǎn)換寄存器,地址為0x29)的DIVFCT位分頻控制,通過引腳CLKOUT對外輸出主時鐘。

(2)內(nèi)部時鐘,它的作用一是通過定時器為定時中斷產(chǎn)生中斷脈沖,并可通過引腳TOUT對外輸出定時時鐘;二是通過對McBSP等多通道緩沖串口的相關(guān)寄存器進(jìn)行設(shè)置,產(chǎn)生串口所需的各類時鐘。參考時鐘的輸入可以有以下兩種方式。

(1)在X1和X2/CLKIN引腳外接晶振,通過內(nèi)部晶體振蕩器產(chǎn)生時鐘。

(2)在X2/CLKIN引腳直接引入外部參考時鐘,X1引腳

懸空。

C54x內(nèi)部時鐘關(guān)系如圖3.1所示。圖3.1

C54x內(nèi)部時鐘關(guān)系圖3.1.1硬件配置鎖相環(huán)

5416硬件復(fù)位后,通過讀取CLKMD1~CLKMD3這3個引腳的電位配置,確定鎖相環(huán)的初始配置,其復(fù)位時的時鐘配置如表3.1所示。3.1.2軟件配置鎖相環(huán)

若需要改變硬件配置的時鐘頻率時,可采用軟件編程方式修改CLKMD的值,使PLL輸出所需的CPU時鐘,5416的CLKMD的結(jié)構(gòu)如圖3.2所示。圖3.2CLKMD的結(jié)構(gòu)

CLKMD各比特位的功能如表3.2所示。

PLL輸出時鐘CLKOUT與輸入時鐘CLKIN、倍頻因子之間的關(guān)系如式3.1所示。

CLKOUT=CLKIN×倍頻因子(3.1)

其中倍頻因子與PLLNDIV、PLLDIV和PLLMUL之間的關(guān)系如表3.3所示。

PLL鎖定需要一定的時間,在鎖定之前不能用作CPU的

時鐘。鎖定時間為(0~255)×16×CLKIN時鐘周期,可通過CLKMD的PLLCOUNT位來設(shè)置。不同的CLKOUT時鐘,鎖定時間不同。最簡單的方法是將PLLCOUNT位設(shè)定在最大值,即PLLCOUNT=0xFF。時鐘發(fā)生器可以直接從PLL模式切換到DIV模式,沒有PLLCOUNT延時,只需短暫延時即可,CPU的運(yùn)行不受影響。但在從DIV模式切換到PLL模式的過程中,DSP仍工作在DIV模式,直到PLLCOUNT減為0,且當(dāng)CLKMD的PLLSTATUS位為1時,才輸出新時鐘供CPU使用。時鐘發(fā)生器從一個PLL模式切換到另一個PLL模式(倍頻因子不同)時,不允許直接切換,中間需經(jīng)過DIV狀態(tài),即先切換到DIV模式,再切換到新的PLL模式。

時鐘模式的每次切換,都需用代碼驗(yàn)證CLKMD

PLLSTATUS位是否到達(dá)新的狀態(tài)位,或者等待足夠多的時

間,否則,運(yùn)行結(jié)果可能出錯。一個PLL模式轉(zhuǎn)換為DIV=0模式,其C語言編程如下:

#defineCLKMD*(unsignedint*)0x58

CLKMD=0;//2分頻

匯編語言方式如下:

STM#0,CLKMD從DIV模式切換到PLL×2模式,其C語言編程如下:

#defineCLKMD*(unsignedint*)0x58

CLKMD=0;//2分頻

for(i=0;i<5;i++)

CLKMD=0x13FF;

//2倍頻,提高可靠性

for(i=0;i<255;i++);//等待匯編語言方式如下:

RPT#4

STM#0x17FF,CLKMD

STM#255,AR1

WAIT:

BANZWAIT*AR1-3.1.3主時鐘CLKOUT輸出

5416的分區(qū)切換控制寄存器(BSCR,地址為0x29)的DIVFCT位(在bit14~bit13位)控制主時鐘的輸出,該時鐘可作為外部存儲器等器件的時鐘。時鐘輸出CLKOUT的頻率等于1/(DIVFCT+1)(DIVFCT=0,1,2,3,默認(rèn)DIVFCT=3)。

3.2定時器

3.2.1定時器工作原理

圖3.3為定時器的內(nèi)部邏輯框圖。它包含兩個部分,主定時模塊和預(yù)分頻器模塊。當(dāng)TSS=0時,CPU時鐘通過與門輸入到PSC計(jì)數(shù)器。PSC是一個4位的減1計(jì)數(shù)器,其初值由TDDR寄存器載入。

當(dāng)PSC減到0后,產(chǎn)生借位信號,使TIM計(jì)數(shù)器減1。TIM是一個16位的減1計(jì)數(shù)器,其初值由PRD載入。當(dāng)TIM減到0時,產(chǎn)生借位信號,這個借位信號作為定時器內(nèi)部中斷信號TINT和外部定時信號TOUT,時鐘脈沖寬度與CPU時鐘寬度相同。圖3.3定時器的內(nèi)部邏輯框圖設(shè)置TRB=1,每當(dāng)PSC產(chǎn)生借位信號時,TDDR將初值載入PSC,每當(dāng)TIM產(chǎn)生借位信號時,PRD將初值載入TIM,從而產(chǎn)生周期性的中斷信號。

由此可見,定時器的周期如式3.2所示:

TINT=TCPUCLK×(PRD+1)×(TDDR+1)

(3.2)

式中,PRD、TDDR表示各自寄存器的值,TTINT表示定時器中斷周期,TCPUCLK表示CPU時鐘周期。定時中斷頻率為式中,fTINT表示定時器中斷頻率,fCPUCLK表示CPU時鐘頻率。由于TDDR為4比特?zé)o符號數(shù),所以Max(TDDR+1)=16,類似地,PRD為16比特?zé)o符號數(shù),所以Max(PRD+1)=65536。若要產(chǎn)生頻率更低的定時信號或中斷,需用軟件再補(bǔ)充變量來處理。

可設(shè)置TSS=1,關(guān)閉定時器以減少功耗。圖3.4所示是16位的TCR寄存器的結(jié)構(gòu),其各比特位的功能說明見表3.4。圖3.4

TCR寄存器的結(jié)構(gòu)初始化定時器的步驟如下:

(1)根據(jù)fTINT和fCPUCLK計(jì)算PRD和TDDR的值,設(shè)置好TCR和PRD,其中TRB=1(自動載入初值)和TDDR=1(先停止定時器);

(2)TIM清零;

(3)開啟定時器,設(shè)置TCR的TSS=0。如果要使用定時器中斷TINT,需作如下設(shè)置:

(1)將IFR中的TINT位置0,以清除尚未完成的定時器

中斷;

(2)將IMR中的TINT位置1,開放定時器中斷;

(3)將ST1中的INTM位清0,開放總中斷。例3.1設(shè)CLKOUT的頻率為8MHz,現(xiàn)要求A/D采樣頻率為4kHz,用定時器中斷產(chǎn)生定時信號,問如何設(shè)計(jì)PRD和TDDR。

解:

TDDR和PRD的設(shè)置有多種,可以設(shè)PRD=1999、PRD=0或第二種方式TDDR=15,PRD=124。例3.2設(shè)CLKOUT的頻率為8MHz,現(xiàn)有一個發(fā)光管,要求每秒閃爍1次(即每秒亮一次,暗一次,頻率為2Hz),用定時器產(chǎn)生定時信號控制這個發(fā)光管,問如何設(shè)計(jì)PRD和TDDR。

解:可見,TDDR可取15=0x0F,PRD可取62499=0xF423,此外再用一個變量保存系數(shù)4。3.2.2定時器的多時鐘應(yīng)用

如果定時中斷事件較多,而且它們的時間間隔與某一時間段成倍數(shù)關(guān)系,則可以用一個定時器實(shí)現(xiàn)。下面以程控交換的時鐘級調(diào)度為例講述定時器的多時鐘應(yīng)用。

時鐘級程序由時間表啟動,時間表由時間計(jì)數(shù)器、屏蔽表、轉(zhuǎn)移表組成,如圖3.5所示。圖3.5定時器的邏輯框圖

(2)建立屏蔽表。屏蔽表確定哪些中斷程序能被執(zhí)行,如圖3.5所示,“1”表示可執(zhí)行,“0”或者“空”表示不執(zhí)行。

(3)轉(zhuǎn)移表。轉(zhuǎn)移表也稱入口地址表,表中的內(nèi)容為各個程序的入口地址,根據(jù)表中地址調(diào)用相應(yīng)的程序。

(4)執(zhí)行頻率分析。執(zhí)行頻率是,第1列的每一行都是1,且屏蔽表對應(yīng)的位為1,該撥號脈沖識別程序每1個時基執(zhí)行一次,第2列是每隔一行是1,該按鈕號碼識別程序是每2個時基執(zhí)行一次,…,第F列的時間計(jì)算器清0程序是每n個時基執(zhí)行一次,以此類推。

3.3中斷系統(tǒng)

中斷可以由硬件或者軟件觸發(fā),使DSP暫停正在執(zhí)行

的程序,進(jìn)入中斷服務(wù)程序。如定時讀取A/D信號、輸出D/A信號和及時處理用戶的鍵盤輸入信號等,都需要中斷。

C54xDSP既支持硬件中斷,也支持軟件中斷。

(1)由程序指令(INTR、TRAP或RESET等)請求的中斷稱為軟件中斷。

(2)由外部物理設(shè)備信號請求的中斷稱為硬件中斷。這類中斷有兩種形式:

①受外部中斷信號觸發(fā)的外部硬件中斷;

②受片內(nèi)外設(shè)信號觸發(fā)的內(nèi)部硬件中斷。

當(dāng)同時有多個硬件中斷被觸發(fā)時,C54xDSP按照中斷優(yōu)先級別的高低(1表示優(yōu)先級高)分別對它們進(jìn)行服務(wù)。關(guān)于硬件中斷的優(yōu)先級,可以參考本節(jié)后面的介紹。3.3.1中斷分類

中斷可以分為可屏蔽中斷和非屏蔽中斷兩大類。

(1)第一類是可屏蔽中斷,這些中斷都是可以用軟件來屏蔽(不激活或使能)的硬件中斷。C54xDSP最多可以支持16個用戶的可屏蔽中斷(SINT15~SINT0)。每種處理器只使用其中的一個子集。例如5416只使用14個可屏蔽中斷。對5416來說,這14個中斷的硬件名稱如下:①外中斷INT3~I(xiàn)NT0;

②McBSP中斷XINTx、RINTx,x=0、1、2;

③定時器中斷TINT;

④主機(jī)接口中斷HPINT;

⑤DMA通道中斷,DMAC4~DMAC5。

(2)第二類是非屏蔽中斷,這類中斷是不能夠屏蔽的,一旦觸發(fā),DSP總是響應(yīng)這一類中斷,并從主程序轉(zhuǎn)移到中斷服務(wù)程序。C54xDSP的非屏蔽中斷包括所有的軟件中斷,以及兩個外部硬件中斷RS(復(fù)位)和NMI(用戶自定義不可屏蔽中斷,一般用于系統(tǒng)硬件的故障診斷)。RS是一個對C54xDSP所有操作方式都產(chǎn)生影響的非屏蔽中斷,而NMI中斷不會對C54xDSP的任何操作模式產(chǎn)生影響。聲明NMI中斷時,禁止所有其他中斷。3.3.2中斷屏蔽寄存器(IMR)和中斷標(biāo)志寄存器(IFR)

1.中斷屏蔽寄存器(IMR)

圖3.6所示的IMR是5416的一個映射寄存器,可以用來屏蔽或開放相應(yīng)的中斷,如果狀態(tài)寄存器ST1中的INTM=0(開放所有中斷),且IMR的某位為1,就使能該比特位對應(yīng)的中斷。

RS和NMI是不可屏蔽中斷,不在IMR中。用戶可以對IMR寄存器進(jìn)行讀寫操作,查詢或設(shè)置有關(guān)中斷情況。各中斷優(yōu)先級依比特位的順序,從低到高排列,INT0

的優(yōu)先級最高。圖3.6中斷屏蔽寄存器(IMR)

2.中斷標(biāo)志寄存器(IFR)

IFR可以識別和清除有效的中斷,其結(jié)構(gòu)與IMR相同,當(dāng)一個中斷出現(xiàn)時,IFR中的相應(yīng)的中斷標(biāo)志位置1,直到CPU處理該中斷為止。以下4種情況可清除中斷標(biāo)志:

(1)DSP復(fù)位(RS引腳為低電平);

(2)中斷得到處理;

(3)將0寫到IFR中的適當(dāng)位,相應(yīng)的尚未處理的中斷被

清除;

(4)利用合適的中斷號執(zhí)行INTR指令。3.3.3中斷請求及中斷處理

1.接收中斷請求

一個中斷的完成是由硬件電位和軟件指令請求來實(shí)現(xiàn)的。當(dāng)產(chǎn)生一個中斷請求時,IFR寄存器中相應(yīng)的中斷標(biāo)志位被置1。當(dāng)相應(yīng)的中斷被響應(yīng)后,該標(biāo)志位自動被清除。外部硬件中斷請求是由外部中斷口的信號發(fā)出,而內(nèi)部硬件中斷請求是由片內(nèi)外設(shè)的信號發(fā)出的。例如,對于5416來說,其硬件中斷可以由如下信號端發(fā)出請求,具體內(nèi)容如表3.5所示。軟件中斷由如下程序指令發(fā)出中斷請求:

(1)INTR。該指令允許執(zhí)行任何一個中斷服務(wù)程序。指令操作數(shù)K(中斷號)表示CPU分支轉(zhuǎn)移到哪個中斷向量地址。表3.5列出了用于指向每個中斷向量位置的操作數(shù)K。當(dāng)響應(yīng)INTR中斷時,ST1寄存器的中斷模式位(INTM)被設(shè)置為1,并用于禁止可屏蔽中斷。

(2)TRAP。該指令執(zhí)行的功能與INTR指令一致,但不用設(shè)置INTM位。

(3)RESET。該指令執(zhí)行一個非屏蔽軟件復(fù)位,可以在任何時候被使用并將C54x的DSP置于已知狀態(tài)。RESET指令影響ST0和ST1寄存器,但不會影響PMST寄存器。當(dāng)響應(yīng)RESET指令時,INTM位被設(shè)置為1,用于禁止可屏蔽中斷。

2.中斷響應(yīng)

硬件或軟件中斷發(fā)送了一個中斷請求后,CPU必須決定是否響應(yīng)該中斷請求。軟件中斷和非屏蔽硬件中斷會立刻被響應(yīng),而可屏蔽中斷只有在滿足如下條件后才被響應(yīng)。

(1)優(yōu)先級最高。當(dāng)多個硬件中斷同時被請求時,DSP按照中斷優(yōu)先級的高低順序響應(yīng)中斷請求,優(yōu)先級高的中斷可以中斷優(yōu)先級低的中斷。表3.5列出了5416DSP的硬件中斷優(yōu)

先級。

(2)IMR的中斷屏蔽位為1,表示使能該中斷。

(3)ST1的INTM位為0,表示使能所有可屏蔽中斷。

當(dāng)響應(yīng)一個中斷后,INTM位被置1,從中斷返回后INTM重新使能。

3.執(zhí)行中斷服務(wù)程序

當(dāng)響應(yīng)中斷后,CPU會進(jìn)行如下操作:

(1)自動保存程序計(jì)數(shù)器(PC)的值(返回地址)到堆棧;

(2)將中斷向量的地址加載到PC;

(3)執(zhí)行分支轉(zhuǎn)移,轉(zhuǎn)到中斷服務(wù)程序地址執(zhí)行中斷

程序;

(4)執(zhí)行中斷服務(wù)程序直到最后的返回指令;

(5)從堆棧中彈出返回地址到PC中;

(6)繼續(xù)執(zhí)行主程序。

4.保存中斷前的運(yùn)行環(huán)境

當(dāng)執(zhí)行一個中斷服務(wù)程序時,中斷服務(wù)程序要將用到的某些寄存器保存在堆棧中,以便中斷程序在返回時能恢復(fù)這些寄存器。C語言編寫的中斷服務(wù)程序在編譯時會自動保存和恢復(fù)所有相關(guān)寄存器,而匯編語言編寫的中斷服務(wù)程序則需編程人員編寫保存和恢復(fù)所有相關(guān)寄存器的代碼。3.3.4中斷操作流程

一旦一個中斷傳送給CPU,CPU會按圖3.7所示的方式進(jìn)行操作,具體操作步驟如下。

(1)如果請求的是一個可屏蔽中斷,則操作過程如下:

①設(shè)置IFR寄存器的相應(yīng)標(biāo)志位。

②測試響應(yīng)條件(INTM=0且相應(yīng)的中斷位為1)。如果條件為真,則CPU響應(yīng)該中斷,產(chǎn)生一個中斷響應(yīng)信號;否則,忽略該中斷并繼續(xù)執(zhí)行主程序。圖3.7中斷操作流程圖③當(dāng)中斷已經(jīng)被響應(yīng)后,IFR相應(yīng)的標(biāo)志位被清除,并且INTM位被置1(屏蔽其他可屏蔽中斷)。

④保存PC值到堆棧中。

⑤CPU分支轉(zhuǎn)移到中斷服務(wù)程序(ISR)并執(zhí)行ISR。

⑥ISR由返回指令結(jié)束,該指令將返回的值從堆棧彈出給PC。

⑦CPU繼續(xù)執(zhí)行主程序。

(2)如果請求的是一個非屏蔽中斷,則操作過程如下:

①CPU立即響應(yīng)中斷,產(chǎn)生一個中斷響應(yīng)信號。

②如果中斷是由RS、NMI或INTR指令請求的,則INTM位被置1(屏蔽其他可屏蔽中斷)。

③如果INTR指令已經(jīng)請求了一個可屏蔽中斷,那么相應(yīng)的標(biāo)志位被清除為0。④保存PC值到堆棧中。

⑤CPU分支轉(zhuǎn)移到中斷服務(wù)程序(ISR)并執(zhí)行ISR。

⑥ISR由返回指令結(jié)束,該指令將返回的值從堆棧中彈出給PC。

⑦CPU繼續(xù)執(zhí)行主程序。3.3.5重新映射中斷向量地址

中斷向量可以映射到除保留區(qū)域外的程序存儲器的任何128字頁面的起始位置。中斷向量地址是由PMST寄存器中的IPTR(9位中斷向量指針)和左移2位后的中斷向量序號(中斷向量序號為0~31,左移2位后變成7位)組成的。例如,INT0的中斷向量號為16或10H,左移2位后變成40H;IPTR=0001H,則中斷向量的地址為00C0H。中斷向量地址的產(chǎn)生過程如圖3.8所示。圖3.8中斷向量地址的產(chǎn)生過程復(fù)位時,IPTR的所有位被置1(IPTR=1FFH),并按此值將復(fù)位向量映射到程序存儲器的第511頁空間。所以,硬件復(fù)位后總是從FF80H地址處開始執(zhí)行程序。如果在初始化程序中修改IPTR的值,即可將中斷向量表映射到指定的存儲空間內(nèi)。

3.4通用I/O接口

3.4.1

XF和BIO

XF(ExternalFlagOutputPin,擴(kuò)展標(biāo)志輸出引腳)為通用輸出引腳,其寄存器在ST1的bit13位,可通過下面的指令置位或清0。從指令執(zhí)行到XF輸出,大約需要6.5個CPU時鐘

周期。

SSBXXF;XF=1

RSBXXF;XF=0

BIO(BranchControlInputPin,分支轉(zhuǎn)移控制輸入引腳)可用于監(jiān)視外設(shè)器件的狀態(tài),特別是對實(shí)時要求嚴(yán)格的中斷跳轉(zhuǎn),低電平有效,用于XC分支指令。執(zhí)行該指令時在流水線的譯碼周期內(nèi)采樣BIO引腳的值,執(zhí)行其他指令時在流水線的讀周期內(nèi)采樣BIO引腳的值。3.4.2

HPI數(shù)據(jù)線用作通用I/O接口

主機(jī)接口(HPI)的8位數(shù)據(jù)線HD0~HD7,在HPI接口被禁止時可設(shè)置為通用I/O接口。設(shè)置方法是設(shè)置引腳HPIENA=0或設(shè)置HPI為16位模式。GPIOCR(通用I/O控制寄存器,地址為0x3C)設(shè)置數(shù)據(jù)線的傳輸方向,當(dāng)DIRx=0時表示輸入,DIRx=1時表示輸出,其各比特位的功能如表3.6所示。

無論是輸入還是輸出,數(shù)據(jù)線的狀態(tài)都反映在GPIOSR

(通用I/O狀態(tài)寄存器,地址為0x3D)對應(yīng)的比特位中,如表3.7所示。3.4.3

McBSP用作通用I/O接口

5416共有3組McBSP(多通道緩沖串口),編號分別為McBSP0~McBSP2,每組共有6個引腳用作輸入或輸出。它們是CLKX(發(fā)送時鐘)、FSX(發(fā)送幀同步)、DX(發(fā)送數(shù)據(jù))、CLKR(接收時鐘)、FSR(接收幀同步)和DR(接收數(shù)據(jù)),簡化的McBSP接口示意圖如圖3.9所示。圖3.9簡化的McBSP接口示意圖在McBSP各引腳后面加上組編號x(x=0,1,2)以區(qū)別其他組,各組的引腳和控制方式均相互獨(dú)立,以下討論的均是同一組McBSP的引腳和相關(guān)寄存器使用,當(dāng)滿足下面兩個條件時,McBSP可以用作通用I/O接口。

(1)串口控制寄存器SPCR1的RRST位(接收器復(fù)位)、SPCR2的XRST位(發(fā)送器復(fù)位)均為0,串口處于復(fù)位狀態(tài);

(2)引腳控制寄存器PCR的XIOEN和RIOEN位均為1,I/O功能有效。

當(dāng)McBSP引腳用作通用I/O引腳時,有關(guān)傳輸方向及狀態(tài)值均在PCR寄存器中。PCR各比特位的功能如表3.8所示,用作通用I/O引腳時的功能如表3.9所示。

3.5

McBSP用作SPI接口

3.5.1

SPI協(xié)議與McBSP

SPI協(xié)議是一個主從配置,支持一個主機(jī)、一個或多個從機(jī)的串行通信協(xié)議,接口有下面四種信號線:

(1)主機(jī)輸入/從機(jī)輸出串行數(shù)據(jù)線(MISO);

(2)主機(jī)輸出/從機(jī)輸入串行數(shù)據(jù)線(MOSI);

(3)串行移位時鐘線(SCK);

(4)從機(jī)使能線(SS)。主機(jī)提供移位時鐘(SCK)和從機(jī)使能信號SS,從而控制通信流程。

當(dāng)McBSP接口工作在時鐘停止模式時,可配置成SPI接口,與此相關(guān)的有SPCR1、PCR、XCR1和RCR1四個寄存器。當(dāng)McBSP接口配置為時鐘停止模式時,發(fā)送器和接收器在內(nèi)部是同步的,可以將McBSP作為SPI的主機(jī)或從機(jī)。發(fā)送時鐘CLKX對應(yīng)于串行時鐘SCK,而發(fā)送幀同步FSX對應(yīng)于SS。

CLKR和FSR在內(nèi)部分別與CLKX和FSX相連。McBSP的PCR寄存器的CLKXM位指定McBSP作主機(jī)還是從機(jī),當(dāng)CLKXM=1時為主機(jī),反之為從機(jī)。作從機(jī)時,CLKX和FSX時鐘由主機(jī)提供。

McBSP作主機(jī)的配置如圖3.10(a)所示,作從機(jī)的配置如圖3.10(b)所示。圖3.10

McBSP配置成SPI模式示意圖3.5.2

McBSP配置為SPI的方法

通過對SPCR1、PCR、XCR1和RCR1等寄存器進(jìn)行相關(guān)控制位的配置,McBSP可以配置為SPI模式,如表3.10所示。其中,SPCR1(串口控制寄存器1)的CLKSTP位和寄存器PCR的CLKXP位用于配置時鐘停止模式,如表3.11所示。圖3.11~圖3.14分別列出了以上四種情況下SPI的傳輸時序。圖3.11

CLKSTP=10、CLKXP=0時的SPI傳輸時序圖3.12

CLKSTP=11、CLKXP=0時的SPI傳輸時序圖3.13

CLKSTP=10、CLKXP=1時的SPI傳輸時序圖3.14

CLKSTP=11、CLKXP=1時的SPI傳輸時序3.5.3

McBSP配置為SPI主機(jī)模式的操作

設(shè)置寄存器PCR的CLKXM=1時,McBSP配置為主機(jī)模式,這時CLKX引腳為串行移位時鐘SCK的輸出,F(xiàn)SX為從

使能信號SS的輸出。

SCK時鐘僅在分組數(shù)據(jù)傳輸期間有效,無數(shù)據(jù)傳輸時維持在高電平或低電平。數(shù)據(jù)延遲控制位(XDATDLY和RDATDLY)都必須設(shè)置為0,其他無定義,如表3.12所示。3.5.4

McBSP配置為SPI從機(jī)模式的操作

設(shè)置寄存器PCR的CLKXM=0時,McBSP配置為從機(jī)模式,這時CLKX引腳的串行移位時鐘SCK和FSX引腳的從機(jī)使能信號SS均由主機(jī)提供。

雖然SCK和SS時鐘由主機(jī)提供,但采樣率發(fā)生器應(yīng)配置成CPU時鐘的一半,使McBSP同步于外部時鐘和從機(jī)使能信號。數(shù)據(jù)延遲控制位(XDATDLY和RDATDLY)都必須設(shè)置為0,其他無定義,如表3.13所示。3.5.5

McBSP用作SPI接口的初始化

(1)設(shè)置寄存器SPCR2的XRST=0,復(fù)位發(fā)送器;設(shè)置寄存器SPCR1的RRST=0,復(fù)位接收器。

(2)設(shè)置寄存器SPCR2的GRST=1,使能采樣率發(fā)生器。(3)按表3.10~3.13設(shè)置相關(guān)位。

(4)等待到穩(wěn)定狀態(tài)。

(5)設(shè)置XRST=RRST=1,使能發(fā)送器和接收器,SPI接口即可以工作。

3.6多通道緩沖串口McBSP

3.6.1

McBSP的主要特性

C54x多通道緩沖串口(McBSP)提供了高速、雙向、多通道帶緩沖的串行接口,它具有以下主要特征:

(1)全雙工通信,雙緩沖發(fā)送和三緩沖接收,允許連續(xù)的數(shù)據(jù)流。

(2)獨(dú)立的發(fā)送、接收幀和時鐘信號,信號頻率和極性均可編程。

(3)可直接與工業(yè)標(biāo)準(zhǔn)解碼器、模擬接口芯片、其他串行A/D和D/A器件連接,也可直接與T1/E1、MVIP、ST-BUS、IOM-2、AC97、IIS、SPI等器件連接。

(4)多達(dá)128個發(fā)送、接收通道,數(shù)據(jù)包括8、12、16、20、24和32位,具有μ律和A律壓擴(kuò)硬件功能等性能。3.6.2

McBSP的工作原理

McBSP的工作原理框圖如圖3.15所示,先配置好時鐘、幀同步及多通道選擇寄存器,然后就可以與外部發(fā)送引腳DX、接收引腳DR進(jìn)行通信了。

有關(guān)信號說明如下:CLKR和CLKX為收發(fā)時鐘,F(xiàn)SR和FSX為收發(fā)幀同步時鐘,CLKS為外部時鐘;RINT和XINT為CPU的收發(fā)中斷信號;REVT為DMA的接收同步事件,XEVT為DMA的發(fā)送同步事件;REVTA為DMA的接收同步事件A,XEVTA為DMA的發(fā)送同步事件A。圖3.15

McBSP的工作原理框圖

5416共有3個McBSP接口,編號為0~2,但它們的結(jié)構(gòu)和功能完全一樣。下面的描述均指同一個McBSP,為方便描述,后面的編號x在一般情況下均省略(x=0,1,2)。

當(dāng)接收外部數(shù)據(jù)時,DR引腳上的串行數(shù)據(jù)經(jīng)RSR[1,2]和RBR[1,2]緩沖并擴(kuò)展(可選項(xiàng)),再移入DRR[1,2],CPU讀取DRR[1,2]后就收到外部連續(xù)的多位數(shù)據(jù)。當(dāng)發(fā)送數(shù)據(jù)給外部引腳DX時,CPU將數(shù)據(jù)發(fā)送到DXR[1,2],經(jīng)壓縮(可選項(xiàng))和XSR[1,2]緩沖后,就以串行方式發(fā)送至引腳DX上。當(dāng)數(shù)據(jù)位不超過16位時,RSR2、RBR2、DRR2、DXR2和XSR2等寄存器均不能進(jìn)行讀、寫和移位操作。

每個McBSP有關(guān)的寄存器有19個,其中能用全局地址訪問的有4個,用子地址訪問的有15個,如表3.14所示。由表3.14可知,每個McBSP的控制寄存器較多,但映射寄存器地址有限,因此,對部分寄存器采取共用映射寄存器地址并用子地址區(qū)分的方法,在硬件上用復(fù)接器實(shí)現(xiàn)訪問。如圖3.16所示,讀子地址內(nèi)容時,只要將子地址寫入SPSAx,相應(yīng)子地址的內(nèi)容就復(fù)制到SPSDx中,讀SPSDx的內(nèi)容即是對應(yīng)的子地址的內(nèi)容。圖3.16子地址寄存器訪問示意圖類似地,寫數(shù)據(jù)到子地址寄存器中,也是先把子地址寫入SPSAx,然后把內(nèi)容寫入SPSDx,SPSDx就自動把數(shù)據(jù)復(fù)制到指定的子地址寄存器中。

這樣,對子地址寄存器的訪問就歸結(jié)為對SPSAx和SPSDx的訪問。例如將#0寫入McBSP0的SPCR1寄存器,其

代碼如下:SPSA0.set0x38;McBSP0的子地址寄存器地址

SPSD0.set0x39;McBSP0的子地址數(shù)據(jù)寄存器地址

SPCR10.set0x00;SPCR10的子地址

STM#SPCR10,SPSA0;初始化SPSA0

STM#0,SPSD0;#0寫入SPSD0,SPSD0自動將數(shù)據(jù)按子地址復(fù)制到SPCR10中有關(guān)寄存器說明如下:

(1)PCR(引腳控制寄存器):主要為串口引腳和通用I/O引腳設(shè)置切換及時鐘模式等。PCR的結(jié)構(gòu)如圖3.17所示,各比特位的功能如表3.15所示。圖3.17PCR寄存器的結(jié)構(gòu)

(2)SPCR1和SPCR2(串口控制寄存器1和2):控制串口的總體情況,反映串口的總體狀態(tài),SPCR1和SPCR2的結(jié)構(gòu)如圖3.18和圖3.19所示,各比特位的功能見表3.16和表3.17。圖3.18

SPCR1寄存器的結(jié)構(gòu)圖3.19

SPCR2寄存器的結(jié)構(gòu)

(3)RCR1和RCR2(接收控制寄存器1和2):接收控制寄存器配置接收的有關(guān)參數(shù),RCR1和RCR2的結(jié)構(gòu)如圖3.20和圖3.21所示,各比特位的功能見表3.18和表3.19。

(4)XCR1和XCR2(發(fā)送控制寄存器1和2):發(fā)送控制寄存器配置發(fā)送的有關(guān)參數(shù),XCR1和XCR2的結(jié)構(gòu)如圖3.22和圖3.23所示,各比特位的功能見表3.20和表3.21。

(5)SRGR1和SRGR2(采樣率發(fā)生器寄存器1和2):采樣

率發(fā)生器寄存器配置有關(guān)發(fā)送與接收時鐘、幀同步時鐘等,SRGR1和SRGR2的結(jié)構(gòu)如圖3.24和圖3.25所示,各比特位的

功能見表3.22和表3.23。幀周期、幀脈沖寬度與CLKG之間的關(guān)系如圖3.26所示,其中FPER=15,F(xiàn)WID=1。圖3.26幀周期、幀脈沖寬度與CLKG之間的關(guān)系3.6.3

McBSP的發(fā)送與接收

1.采樣率發(fā)生器時鐘和幀同步時鐘的配置

如圖3.27所示,設(shè)置SRGR1和SRGR2可配置采樣率發(fā)生器時鐘CLKG和幀同步時鐘FSG。設(shè)置CLKSM位選擇時鐘來源是來自CPU時鐘還是外部時鐘CLKS,然后經(jīng)CLKGDV分頻得到采樣率發(fā)生器時鐘CLKG,它的頻率與輸入時鐘的頻率的關(guān)系如式3.4所示。圖3.27采樣率發(fā)生器工作原理框圖(3.4)

CLKG再經(jīng)FPER分頻,并經(jīng)FWID設(shè)置脈沖寬度,得到幀同步脈沖信號,其頻率與CLKG之間的關(guān)系如式3.5所示。(3.5)

2.McBSP串行數(shù)據(jù)的接收

設(shè)接收的數(shù)據(jù)幀參數(shù)如下:

(R/X)PHASE=0;單相幀

(R/X)FRLEN1=0;每幀一個字

(R/X)WDLEN1=0;每字8bit

(R/X)FRLEN2=x,(R/X)FRLEN2=x;不考慮

CLK(X/R)P=0;接收數(shù)據(jù)在時鐘下降沿采樣,發(fā)送數(shù)據(jù)在時鐘上升沿采樣

FS(R/X)P=0;幀同步信號高電平有效

(R/X)DATDLY=1;1bit數(shù)據(jù)延遲

FPER=11

;接收幀周期=12

FWID=0

;幀脈沖脈沖寬度=1

RINTM=0;詞尾驅(qū)動產(chǎn)生接收中斷

RCOMPAND=0;無壓擴(kuò),高位MSB先傳輸

McBSP串行數(shù)據(jù)的接收時序圖如圖3.28所示。圖3.28McBSP串行數(shù)據(jù)的接收時序圖當(dāng)接收幀同步信號(FSR)變?yōu)橛行顟B(tài)時,它將在CLKR的第一個下降沿被檢測,DR引腳上的數(shù)據(jù)經(jīng)XDATDLY指定的延遲后移位存入RSR,當(dāng)收滿一個字(8bit、12bit、16bit、20bit、24bit或32bit)后,在字尾的上升沿將FSR的內(nèi)容復(fù)制到RBR,如果DRR空,RBR再復(fù)制到DRR,并使RRDY的

狀態(tài)位在CLKR的下降沿置1,如圖3.28的B0處所示。然后由RRDY信號驅(qū)動產(chǎn)生接收中斷信號RINT或DMA事件,CPU或DMA響應(yīng)中斷并讀取DRR(可能會有一定延遲),然后置RRDY=0,如圖3.28的C5處所示。

3.McBSP串行數(shù)據(jù)的發(fā)送

有關(guān)參數(shù)設(shè)置同接收部分,發(fā)送時序圖如圖3.29所示。圖3.29

McBSP串行數(shù)據(jù)的發(fā)送時序圖一旦產(chǎn)生發(fā)送幀同步信號,XSR[1,2]的值就經(jīng)XDATDLY指定的延遲移出到DX引腳上,如圖3.29的B7處,XRDY在DXR[1,2]復(fù)制到XSR[1,2]之后的CLKX下降沿置1,如圖3.29的B0處所示,可以寫入下一個數(shù)據(jù),如果DXR[1,2]已被CPU或DMA寫入數(shù)據(jù),則XRDY=0,如圖3.29的C5處所示。數(shù)據(jù)延遲是DX或DR引腳相對于幀同步脈沖的有效時刻而言的,圖3.30顯示了延遲0、1和2個CLK(R/X)時鐘時,串行數(shù)據(jù)發(fā)送和接收的情況。圖3.30

McBSP串行數(shù)據(jù)的發(fā)送或接收延遲示意圖

3.7主機(jī)接口

3.7.1概述

5416的主機(jī)接口(HPI,HostPortInterface)是增強(qiáng)的8/16位接口,如圖3.31所示,可將5416連接到8/16位的主機(jī)上。如果設(shè)置引腳HPI16=0(L電位),可將HPI配置為8位的接口(HPI8);如果要在HPI8模式下傳送16位數(shù)據(jù),可通過設(shè)置引腳HBIL電位及相關(guān)寄存器來完成;如果HPI=1(H電位),且外部I/O的地址總線和數(shù)據(jù)總線沒有使用時,則可將HPI配置為16位的接口(HPI16)。圖3.31

HPI8接口結(jié)構(gòu)當(dāng)采用HPI8接口時,主機(jī)通過5416內(nèi)部的三個映射寄存器HPIA(HPI地址寄存器)、HPID(HPI數(shù)據(jù)寄存器)、HPIC(HPI控制寄存器)與5416進(jìn)行通信,其中HPIA和HPID僅由主機(jī)訪問,而HPIC可由主機(jī)和5416訪問。3.7.2

HPI8接口結(jié)構(gòu)

HPI8接口內(nèi)有HPIC、HPIA、HPID等寄存器及相關(guān)邏輯控制單元,可以通過8位外部接口提供16位的數(shù)據(jù)給DSP。主機(jī)發(fā)送的連續(xù)兩字節(jié)自動組成一個16位的字,由HBIL引腳電位的高低表明第一字節(jié)是高8位還是低8位。DSP將數(shù)據(jù)傳送給主機(jī)的操作與此類似。HPI8接口和主機(jī)都能訪問DSP的整個片內(nèi)RAM,且兩者與DSP時鐘同步。3.7.3

HPI8引腳功能

HPI8引腳功能如表3.24所示。具體說明如下:

(1)HDS1、HDS2、HCS及HRDY之間的邏輯關(guān)系如圖3.32所示。圖3.32

HDS、HCS和HRDY之間的邏輯關(guān)系

(2)HCNTL0和HCNTL1的功能如表3.25所示。對于5416來說,片內(nèi)RAM有5段存儲器可以訪問,它們分別是:

①0060H~007FH,ScratchPadRAM;

②0080H~7FFFH,DARAM0~3;

③18000H~1FFFFH,DARAM4~7;

④28000H~2FFFFH,SARAM0~3;

⑤328000H~3FFFFH,SARAM4~7。3.7.4

HPI8有關(guān)寄存器

HPI8有關(guān)寄存器的功能如表3.26所示。

HPIC采用類似高8位與低8位對稱的結(jié)構(gòu)。DSP以映射寄存器形式訪問HPIC,雖然高8位不使用,但主機(jī)也把它看做16位的寄存器,寫入時高8位和低8位必須相同。

由于比特位的功能及讀寫要求不同,HPIC在主機(jī)讀寫時與DSP讀寫時的內(nèi)容也不同,具體如圖3.33所示。圖3.33

HPIC在主機(jī)讀寫時與DSP讀寫時的內(nèi)容3.7.5非復(fù)用模式下的HPI16接口

HPI16有兩種模式連接到主機(jī),即復(fù)用和非復(fù)用模式。設(shè)置引腳HMODE=0時為復(fù)用模式,復(fù)用模式允許主機(jī)操作時使用HCTL0和HCTL1引腳控制信號;設(shè)置引腳HMODE=1時為非復(fù)用模式,這種模式僅在HPI地址總線和數(shù)據(jù)總線完成讀寫操作時使用。

5416沒有HMODE引腳,僅支持非復(fù)用模式。其地址線為18位,能訪問片內(nèi)全部存儲器。在非復(fù)用模式下,主機(jī)通過數(shù)據(jù)總線訪問HPID,通過地址總線訪問HPIA,而HPIC不可用,因?yàn)镠PIC沒有HCNTL信號,自然也沒有DSPINT和HINT中斷發(fā)生。主機(jī)用HDS1、HDS2和HCS引腳信號初始化訪問過程,用HR/W引腳信號控制傳輸方向,HPI16用HRDY引腳信號延遲主機(jī)訪問,但不使用HAS、HCNTL0、HCNTL1等引腳。而在非復(fù)用模式下,所有的主機(jī)訪問都是初始化一個DMA讀/寫操作。圖3.34為HPI16接口在非復(fù)用模式下的方框圖。圖3.34非復(fù)用模式下的HPI16接口方框圖

3.8

DMA控制器

直接存儲器訪問控制器(DMA)允許在沒有CPU參與的情況下,實(shí)現(xiàn)片內(nèi)存儲器之間及片內(nèi)存儲器與片外存儲器之間的數(shù)據(jù)傳輸。5416共有6個獨(dú)立的可編程DMA傳輸通道,允許6種不同內(nèi)容的數(shù)據(jù)傳輸,它有以下主要特點(diǎn)。

(1)后臺操作,DMA控制獨(dú)立于CPU,當(dāng)一幀或一塊數(shù)據(jù)傳輸結(jié)束時,每個DMA通道會發(fā)送一個中斷到CPU。

(2)6個通道相互獨(dú)立,但優(yōu)先級可編程設(shè)置。每個通道都可實(shí)現(xiàn)塊傳輸和幀傳輸,每個數(shù)據(jù)可以為單字模式(16位)或雙字模式(32位)。

(3)事件同步。讀、寫和幀操作都可以由指定的事件觸發(fā)。(4)地址產(chǎn)生可編程,且提供主機(jī)接口訪問。

有關(guān)DMA的操作如下。

(1)讀傳輸:DMA從源位置讀一個數(shù)據(jù),源位置可以為程序、數(shù)據(jù)或I/O空間。

(2)寫傳輸:DMA將源位置讀取的一個數(shù)據(jù)寫到目的位置,目的位置可以為程序、數(shù)據(jù)或I/O空間。

(3)單元數(shù)據(jù)傳輸:一個數(shù)據(jù)單元的讀傳輸與寫傳輸?shù)?/p>

結(jié)合。

(4)幀傳輸:DMA移動一幀中所有的數(shù)據(jù),每個DMA傳輸?shù)膸卸嗌賯€數(shù)據(jù)可獨(dú)立編程設(shè)置。

(5)塊傳輸:DMA移動一塊中所有的幀,每個DMA傳輸?shù)膲K有多少幀可獨(dú)立編程設(shè)置。3.8.1

DMA寄存器

DMA有關(guān)的寄存器較多,與McBSP類似,也采用了子地址尋址方式。5416的DMA有關(guān)寄存器的功能如表3.28所示。

1.子地址訪問

DMA的子地址訪問與McBSP類似,如圖3.35所示,也是通過復(fù)接器實(shí)現(xiàn)的,只是數(shù)據(jù)寄存器多了一個帶子地址自動增量的DMSDI寄存器。如果對子地址的讀寫是通過DMSDI來實(shí)現(xiàn)的,則每次讀寫DMSDI后,DMSA的子地址會自動增1,并指向下一個子地址,便于對連續(xù)子地址寄存器進(jìn)行賦值。如對通道5的5個寄存器初始化示例如下:

DMSA.set55H

DMSDI.SET56H

DMSRC5.SET19H

DMDST5.SET1AH

DMCTR5.SET1BH

DMSFC5.SET1CH

DMMCR5.SET1DH

STMDMSRC5,DMSA

;如果以下DMSDN都改為DMSDI,則相應(yīng)修改DMSA的指令可省略

STM#1000H,DMSDN

STMDMDST5,DMSA

STM#2000H,DMSDN

STMDMCTR5,DMSA

STM#0010H,DMSDN

STMDMSFC5,DMSA

STM#0020H,DMSDN

STMDMMCR5,DMSA

STM#0000H,DMSDN圖3.35

DMA的子地址訪問

2.DMPREC(DMA通道優(yōu)先級和使能控制寄存器)

DMPREC負(fù)責(zé)配置DMA每個通道的使能、優(yōu)先級別及中斷方式等信息,其結(jié)構(gòu)如圖3.36所示,各比特位的功能如表3.29所示。圖3.36

DMPREC的結(jié)構(gòu)

3.DMA中斷復(fù)用

由于DMA中斷較多,而IMR/IFR的比特位有限,只有DMAC4和DMAC5兩個通道的中斷安排在IMR/IFR的bit13~bit12位上,其他DMA中斷采用復(fù)用技術(shù)與其他中斷共IMR/IFR,DMPREC的INTOSEL位負(fù)責(zé)切換復(fù)用方式。C54x不同芯片的中斷不完全相同,5416的DMA中斷復(fù)用如表3.30所示。3.8.2

DMA各個通道寄存器

每個DMA通道都有5個通道寄存器,用于配置各自的操作,它們分別是源地址寄存器(DMSRCn,n=0~5,以下同)、目的地址寄存器(DMDSTn)、單元計(jì)數(shù)器(DMCTRn)、同步事件與幀個數(shù)寄存器(DMSFCn)和傳輸模式控制寄存器(DMMCRn)。

1.DMSRCn和DMDSTn(源地址和目的地址寄存器)

源地址和目的地址都是16位的地址,因此DMA通道不能跨頁傳輸數(shù)據(jù)。在傳輸過程中,DMA會按指定的方式實(shí)時地更新源地址和目的地址,CPU也可以讀取這些地址,以便監(jiān)控傳輸狀態(tài)。如果在塊傳輸過程中,CPU修改了這些地址,則立刻生效,并影響傳輸過程。

DMA源程序地址頁寄存器(DMSRCP,子地址為0x1E)的低7位指定源程序地址的所在頁,DMA目的程序地址頁寄存器(DMDSTP,子地址為0x1F)的低7位指定目的程序地址的所在頁,它們的其他位均保留,如圖3.37和圖3.38所示。

2.DMCTRn(單元計(jì)數(shù)器)

DMCTRn用來跟蹤第n個通道的傳輸次數(shù),看做16位無符號整數(shù),實(shí)際傳輸次數(shù)比DMCTRn多1。在多幀傳輸模式下,每次傳輸后,DMCTRn自動減1,當(dāng)?shù)竭_(dá)每幀的最后一個單元時,則從DMGCR中重載DMCTRn的初值。

在自動緩沖模式(ABU)下,DMCTRn為緩沖器的大小,但不會自動減1,其功能與McBSP相同。

3.DMSFCn(同步事件與幀個數(shù)寄存器)

DMSFCn確定傳輸?shù)膸L、字長及哪個同步事件用于DMA傳輸,其結(jié)構(gòu)如圖3.39所示,各比特位的功能如表3.31所示。圖3.39

DMSFC的結(jié)構(gòu)

DMA單元傳輸可以由各種事件觸發(fā),包括McBSP收發(fā)事件、定時中斷事件及外中斷事件等,也可以運(yùn)行在非同步事件(與任何事件無關(guān)的)。當(dāng)一個DMA通道與一個特定的事件同步時,每個傳輸單元要等待該事件出現(xiàn)才可以操作,如果不與任何事件同步,則以盡可能快的速度進(jìn)行。5416的DMA同步事件選擇如表3.32所示。幀計(jì)數(shù)器(FrameCount)指定在一個數(shù)據(jù)塊中傳輸?shù)膸瑪?shù),實(shí)際傳輸?shù)膸瑪?shù)比FrameCount大1。每完成一幀傳輸,F(xiàn)rameCount的值就自動減1。一旦傳輸?shù)阶詈笠粠?,如果自動初?/p>

化模式使能,則FrameCount會自動重載DMGFR中的值。單元計(jì)數(shù)器(DMCTRn)與DMSFCn中的FrameCount可以同時使用,傳輸單元數(shù)為兩者的乘積。

4.DMMCRn(傳輸模式控制寄存器)

DMMCRn配置DMA的自動初始化模式、中斷產(chǎn)生方式,源地址和目的地址的選擇空間、變址方式等,其結(jié)構(gòu)參見圖3.40,各比特位的功能參見表3.33。圖3.40

DMMCR的結(jié)構(gòu)自動初始化模式僅在多幀模式(CTMOD=0)下可用。在自動初始化模式使能的情況下,當(dāng)塊傳輸完成時,下列寄存器自動加載初值,為下一塊數(shù)據(jù)塊傳輸做好準(zhǔn)備。

DMSRCn加載DMGSA(DMA全局源地址重載寄存器);

DMDSTn加載DMGDA(DMA全局目的地址重載寄存器);

DMCTRn加載DMGCR(DMA全局單元個數(shù)重載寄存器);DMSFCn的FrameCount加載DMGFR(DMA全局幀個數(shù)重載寄存器)的低8位,高8位保留。

DINM、CTMOD和IMOD組合確定DMA塊傳輸中斷模式,見表3.34。

DMA的源地址和目的地址尋址非常靈活,共有7種模式。正常情況下地址有增1、減1、不變及增DMIDX0或DMIDX1等5種模式。在多幀模式下,如果在幀結(jié)束處,還可以利用幀變址寄存器DMFRI0或DMFRI1參與修改下一幀的地址。所有16位DMA傳輸都是由一次讀傳輸后接一次寫傳輸組成的。從片內(nèi)源地址到目的地址的一次DMA傳輸需4個CPU周期,其中讀傳輸和寫傳輸各需2個CPU周期。如果源地址或目的地址來自片外存儲器,則一次DMA的傳輸時間與等待狀態(tài)、分區(qū)轉(zhuǎn)換周期、有效的DMA通道數(shù)和HPI的活動情況有關(guān)。例3.3利用DMA的通道1同步接收McBSP0的數(shù)據(jù),McBSP0的數(shù)據(jù)格式為一塊分4幀,每幀4個單元,所有相同編號的單元按幀順序存儲在一起,存儲順序?yàn)閹?~3的單元0,幀0~3的單元1,…,幀0~3的單元3。參考程序如下:

3.9外部總線操作

C54x的外部總線由數(shù)據(jù)總線、地址總線和一組訪問片外存儲器和I/O端口的控制線組成。不同芯片的控制線略有不同,5416有以下總線端口:

(1)地址線A22~A0;

(2)數(shù)據(jù)線D15~D0;

(3)控制線PS、DS、IS、MSTRB、IOSTRB、R/W、HOLD、HOLDA、MSC、IAQ、IACK、READY等。其中MSTRB用于訪問程序或數(shù)據(jù)存儲器,而IOSTRB用于訪問I/O設(shè)備。3.9.2外部總線時鐘

外部總線時鐘CLKOUT由DSP時鐘經(jīng)DIVFCT分頻而來。5416的分區(qū)切換控制寄存器(BSCR,地址為0x29)的DIVFCT位控制主時鐘的輸出頻率。時鐘輸出CLKOUT的頻率等于1/(DIVFCT+1)×fCPU,DIVFCT=0,1,2,3,默認(rèn)DIVFCT=3。3.9.3外部總線優(yōu)先權(quán)及等待

C54x片內(nèi)有1條程序總線(PB)、3條數(shù)據(jù)總線(DB)和4條地址總線(PAB、

溫馨提示

  • 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

提交評論