《DSP處理器原理與應(yīng)用》課件第6章_第1頁
《DSP處理器原理與應(yīng)用》課件第6章_第2頁
《DSP處理器原理與應(yīng)用》課件第6章_第3頁
《DSP處理器原理與應(yīng)用》課件第6章_第4頁
《DSP處理器原理與應(yīng)用》課件第6章_第5頁
已閱讀5頁,還剩167頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章利用DSP實現(xiàn)外部控制與通信

6.1通用輸入/輸出端口(GPIO)6.2多通道緩沖串口(McBSP)

6.3通用異步接收/發(fā)送器

6.4本章小結(jié)習(xí)題與思考題一個DSP系統(tǒng)一般都需要對外部的設(shè)備進(jìn)行一些控制或者與外部設(shè)備之間進(jìn)行通信來達(dá)到系統(tǒng)設(shè)計的要求。在本章里,我們介紹DSP是如何通過通用輸入/輸出端口(GPIO)、EMIF來實現(xiàn)對外部的控制的,以及多通道緩沖串口(McBSP)和通用異步串口(UART)的一些知識。

5509A提供8個專門的通用輸入/輸出管腳,分別是GPIO0~GPIO7。每個管腳可以通過I/O方向寄存器(IODIR)被獨(dú)立設(shè)置為輸入或者輸出。I/O數(shù)據(jù)寄存器(IODATA)在管腳被設(shè)置為輸入狀態(tài)時用來監(jiān)測管腳邏輯電平的變化,在管腳被設(shè)置為輸出狀態(tài)時用來控制輸出的邏輯狀態(tài)。IODIR的地址為0x3400,IODATA的地址為0x3401。

IODIR寄存器的描述如圖6-1所示,IODATA寄存器的描述如圖6-2所示。6.1通用輸入/輸出端口(GPIO)

圖6-1IODIR寄存器圖6-2IODATA寄存器將IODIR寄存器的對應(yīng)位清0,可以將對應(yīng)的GPIO管腳設(shè)置為輸入,其輸入可以從IODATA寄存器相應(yīng)的位讀出。反之,將IODIR寄存器的對應(yīng)位置1,可以將對應(yīng)的GPIO管腳設(shè)置為輸出,其輸出可以通過IODATA寄存器相應(yīng)的位設(shè)置。

除了上述的專門的GPIO管腳之外,EMIF的地址總線A[15~0]、增強(qiáng)主機(jī)接口(EHPI)、McBSP的部分管腳也可以被設(shè)置為GPIO功能。

TMS320C55XDSP提供了多個高速的多通道緩沖串口(McBSP),使得TMS320C55XDSP可以直接和其他的C55XDSP、多媒體數(shù)字信號編解碼器以及系統(tǒng)中的其他設(shè)備接口。6.2多通道緩沖串口(McBSP)6.2.1同步串行通信基礎(chǔ)知識

在介紹McBSP之前,我們先來回顧一下同步串行通信的基礎(chǔ)知識。

根據(jù)信息的傳送方向,串行通信可以分為單工、半雙工和全雙工三種。信息只能單向傳送為單工;信息能雙向傳送但不能同時雙向傳送稱為半雙工;信息能夠同時雙向傳送則稱為全雙工。

串行通信又分為異步通信和同步通信兩種方式。串行通信中發(fā)送器將并行數(shù)據(jù)逐位移出成為串行數(shù)據(jù)位流,接收器將串行數(shù)據(jù)位流逐位接收組合成并行數(shù)據(jù),串行數(shù)據(jù)位流以一定時序和一定格式呈現(xiàn)在連接收/發(fā)器的數(shù)據(jù)線上。串口通信有以下一些基本概念:

(1)幀同步:串行數(shù)據(jù)位流起始條件。

(2)位時鐘:每個串行數(shù)據(jù)位持續(xù)的時間。

(3)數(shù)據(jù)元:

一次串并變換所產(chǎn)生的串行數(shù)據(jù)位流長度,是串行通信最基本的數(shù)據(jù)單位,

以數(shù)據(jù)位長度為單位,一般為8、12、16、20、24、32位。

(4)數(shù)據(jù)相:由多個數(shù)據(jù)元組成的一串連續(xù)不間斷的串行數(shù)據(jù)位流,以數(shù)據(jù)元個數(shù)為單位。在數(shù)據(jù)相中每個數(shù)據(jù)元的數(shù)據(jù)位長度均相同。

(5)數(shù)據(jù)幀:由多個獨(dú)立的數(shù)據(jù)相組成的一串連續(xù)不間斷的串行數(shù)據(jù)位流。以數(shù)據(jù)相的個數(shù)為單位。在數(shù)據(jù)幀中不同數(shù)據(jù)相所包含的數(shù)據(jù)元的個數(shù)和數(shù)據(jù)元的數(shù)據(jù)位長度可以不同。

(6)同步串行通信:發(fā)送器和接收器以統(tǒng)一的位時鐘工作。

同步串行通信接口信號有:

(1)位時鐘:CLKR(CLKX)。

(2)幀同步:FSR(FSX)。

(3)串行數(shù)據(jù):DR(DX)。

同步串行通信標(biāo)準(zhǔn)如下:

(1)串行數(shù)據(jù)流位起始條件稱為幀同步事件。幀同步事件由位時鐘采樣幀同步信號給出。

(2)串行數(shù)據(jù)位流長度:串行傳輸?shù)臄?shù)據(jù)流位數(shù)達(dá)到設(shè)定的長度后(由數(shù)據(jù)元、數(shù)據(jù)相和數(shù)據(jù)幀設(shè)定),結(jié)束本次傳輸,等待下一個幀同步信號達(dá)到時,再發(fā)起另一次串行傳輸。

(3)串行數(shù)據(jù)流傳輸速度:即每一個串行位的持續(xù)時間,由位時鐘決定。

(4)接口信號及其極性、幀同步事件、幀同步與串行位流起始時刻的關(guān)系、串行數(shù)據(jù)位流的格式(數(shù)據(jù)元、數(shù)據(jù)相和數(shù)據(jù)幀的格式)、串行數(shù)據(jù)位流傳輸速率等的不同,構(gòu)成多種不同的同步串行通信標(biāo)準(zhǔn)。

(5)常見的同步串行通信標(biāo)準(zhǔn)有:SPI、IIS、T1/E1、ST-BUS等。6.2.2TMS320C55XDSP的McBSP

1.?McBSP的特點(diǎn)

McBSP是MultichannelBufferedSerialPort的縮寫,即多通道緩沖型串行接口,是一種多功能的同步串行接口,具有很強(qiáng)的可編程能力,可以配置為多種同步串口標(biāo)準(zhǔn),直接與各種器件高速接口。McBSP可以配置為以下串口標(biāo)準(zhǔn):

T1/E1標(biāo)準(zhǔn):通信器件;

MVIP和ST-BUS標(biāo)準(zhǔn):通信器件;

IOM-2標(biāo)準(zhǔn):ISDN器件;

AC97標(biāo)準(zhǔn):PCAudioCodec器件;

IIS標(biāo)準(zhǔn):Codec器件;

SPI:串行A/D、D/A,串行存儲器等器件。如果采用特殊配置再配合軟件,McBSP就可與特殊器件接口。如將McBSP引腳配置為通用I/O引腳,可用軟件實現(xiàn)I2C標(biāo)準(zhǔn);將McBSP引腳進(jìn)行特殊連接,結(jié)合DMA與軟件編程,可方便實現(xiàn)UART。

McBSP與DMA控制器配合,達(dá)到數(shù)據(jù)緩沖的目的。接收/發(fā)送的單個數(shù)據(jù)單元由DMA控制器寫/讀接收/發(fā)送緩沖器;接收/發(fā)送一批數(shù)據(jù)后,再申請CPU服務(wù),處理這批接收/發(fā)送的數(shù)據(jù)。

2.?McBSP的工作

McBSP包括一個數(shù)據(jù)流通路和一個控制通路,通過7個引腳與外部設(shè)備連接,如圖6-3所示。

圖6-3McBSP的模塊示意圖圖中McBSP的模塊的各引腳功能如下:

CLKX:串行發(fā)送器位時鐘引腳,也可設(shè)置為通用輸入/輸出引腳;

FSX:串行發(fā)送器幀同步引腳,也可設(shè)置為通用輸入/輸出引腳;

DX:串行發(fā)送器數(shù)據(jù)引腳,也可設(shè)置為通用輸出引腳;

CLKR:串行接收器位時鐘引腳,也可設(shè)置為通用輸入/輸出引腳;

FSR:串行接收器幀同步引腳;

DR:串行接收器數(shù)據(jù)引腳,也可設(shè)置為通用輸入引腳;

CLKS:外部位時鐘輸入引腳,也可設(shè)置為通用輸入/輸出引腳。

數(shù)據(jù)通路寄存器如下:

RSR:接收移位寄存器;

RBR:接收緩沖寄存器;

Expand:A律、μ律擴(kuò)展;

DRR:數(shù)據(jù)接收寄存器;

DXR:數(shù)據(jù)發(fā)送寄存器;

Compress:A律、μ律壓縮;

XSR:發(fā)送移位寄存器??刂萍拇嫫魅缦拢?/p>

PCR:引腳控制寄存器。它可配置引腳的功能、極性和方向。

SPCR:串口控制寄存器。它可配置McBSP串行收/發(fā)器的狀態(tài)和中斷;

SRGR:采樣率發(fā)生器寄存器。它配置內(nèi)部產(chǎn)生的位時鐘,配置內(nèi)部產(chǎn)生的幀同步時鐘。

RCR、XCR:接收/發(fā)送控制寄存器。它們可配置接收/發(fā)送的數(shù)據(jù)相個數(shù),配置接收/發(fā)送的數(shù)據(jù)元個數(shù)和位數(shù)。如圖6-3所示:通過McBSP與外部設(shè)備的數(shù)據(jù)交換,由DX引腳發(fā)送數(shù)據(jù),RX引腳接收數(shù)據(jù)。通信的時鐘和幀同步信號由CLKX(發(fā)送時鐘)、CLKR(接收時鐘)、FSX(發(fā)送幀同步)以及FSR(接收幀同步)引腳來控制。

DSP的CPU或DMA控制器與McBSP的通信,通過16bit寄存器訪問內(nèi)部的外設(shè)總線來實現(xiàn)。發(fā)送時,CPU或DMA控制器將數(shù)據(jù)寫到數(shù)據(jù)發(fā)送器(DXR1、DXR2)。寫給DSR的數(shù)據(jù),通過發(fā)送移位寄存器(XSR1、XSR2)移位輸出到DX。同樣,McBSP通過DR引腳接收數(shù)據(jù),移位存儲到接收移位寄存器(RBR1、RBR2)。然后,再由(RBR1、RBR2)復(fù)制到DRRs,由CPU或DMA控制其讀取。這樣,就可以進(jìn)行內(nèi)部和外部的數(shù)據(jù)通信了。以下是數(shù)據(jù)從DR引腳傳輸?shù)紺PU或者DMA控制器的說明:

(1)

McBSP等待內(nèi)部FSR上接收幀同步脈沖信號。

(2)幀同步脈沖信號到達(dá)時,McBSP根據(jù)RSR2中RDATDLYbit的設(shè)置,插入適當(dāng)?shù)臄?shù)據(jù)延遲。在前面的時序里,選擇了1bit的數(shù)據(jù)延遲。

(3)

McBSP接收DR引腳上的數(shù)據(jù)bit,并將其移送到接收移位寄存器。如果字長等于或小于16bit,則只用RSR1;如果字長大于16bit,則要使用RSR1和RSR2,且RSR2中是高位數(shù)據(jù)。

(4)當(dāng)接收了一個完整的字,如果RSR1為空,McBSP將接收移位寄存器的內(nèi)容復(fù)制到接收緩沖寄存器。

(5)如果DRR1沒有被前面的數(shù)據(jù)占滿,McBSP將接收緩沖寄存器的值,復(fù)制到數(shù)據(jù)接收寄存器。當(dāng)DRR1收到新的數(shù)據(jù),SPCR1里的接收就緒bit置位,表示接收數(shù)據(jù)已經(jīng)準(zhǔn)備好被CPU或者DMA控制器讀取。

(6)

CPU或者DMA控制器從數(shù)據(jù)接收寄存器讀取數(shù)據(jù)。當(dāng)DRR1被讀取,RRDY清0,開始下一個從RBR到DRR的復(fù)制。以下是數(shù)據(jù)從CPU或者DMA控制器傳輸?shù)紻X引腳的說明:

(1)

CPU或者DMA控制器將數(shù)據(jù)寫到數(shù)據(jù)發(fā)送寄存器。數(shù)據(jù)寫到DXR1后,SPCR2中的發(fā)送就緒bit清0,表示DXR1不能接收新的數(shù)據(jù)。如果字長大于16bit,

則要使用DXR1和DXR2,且DXR2中是高位數(shù)據(jù)。

(2)

DXR1接收到一個新的數(shù)據(jù),McBSP將發(fā)送寄存器中的值復(fù)制到發(fā)送移位寄存器。發(fā)送就緒bit(XRDY)置位,表示發(fā)送器已經(jīng)準(zhǔn)備好從CPU或DMA控制器接收數(shù)據(jù)。如果字長大于16bit,則要使用XSDXR1和XSR2,且XSR2中是高位數(shù)據(jù)。

(3)

McBSP等待FSX引腳上的發(fā)送幀同步脈沖。

(4)

McBSP根據(jù)XCR2中XDATDLYbit的設(shè)置,在幀同步脈沖后插入相應(yīng)的周期,設(shè)置了1bit延遲。

(5)

McBSP將發(fā)送移位寄存器的數(shù)據(jù)移位到DX引腳。

3.?McBSP寄存器

1)數(shù)據(jù)接收寄存器(DRR2和DRR1)

CPU和DMA控制器從DRR2和DRR1讀取接收數(shù)據(jù)。如果字長不超過16bit,則只需使用DRR1;如果字長超過16bit,則要使用DRR1和DRR2。每個接收的幀可以有一段或兩段,每段的字長可以不同。DRR2和DRR1如圖6-4所示。

圖6-4數(shù)據(jù)接收寄存器(DRR2和DRR1)

DRR1和DRR2是I/O映射寄存器,可以通過訪問I/O空間來訪問該寄存器。

當(dāng)串行字長不超過16bit時,DR引腳上的接收數(shù)據(jù)移位到接收移位寄存器1(RSR1),然后復(fù)制到接收緩沖寄存器(RBR1)。RBR1的數(shù)據(jù)再復(fù)制到DRR1,CPU或DMA控制器從DRR1讀取數(shù)據(jù)。

當(dāng)串行字長超過16bit時,DR引腳上的接收數(shù)據(jù)移位到接收移位寄存器1和2(RSR2、RSR1),然后復(fù)制到接收緩沖寄存器(RBR2、RBR1)。RBR2和RBR1的數(shù)據(jù)再復(fù)制到DRR2和DRR1,CPU或DMA控制器從DRR2和DRR1讀取數(shù)據(jù)。

如果從RBR1復(fù)制到DRR1的過程中,使用壓縮擴(kuò)展(RCOMPAND=10b或11b),RBR1中的8bit壓縮數(shù)據(jù)擴(kuò)展為16bit左校驗數(shù)據(jù)。如果未使用壓縮擴(kuò)展,RBR[1,2]根據(jù)RJUST的設(shè)置,將數(shù)據(jù)填充后送到DRR[1,2]。

RSRs和RBRs不是I/O映射寄存器,用戶不能訪問這幾個寄存器。

2)數(shù)據(jù)發(fā)送寄存器(DXR2和DXR1)

發(fā)送數(shù)據(jù)時,CPU或DMA控制器將數(shù)據(jù)寫到數(shù)據(jù)發(fā)送寄存器。如果字長不超過16bit,只用DXR1;如果字長超過16bit,需要使用DXR2和DXR1,DXR2中為高位數(shù)據(jù)。McBSP發(fā)送的數(shù)據(jù)幀可以有一段或兩段,每段的字長可以不同。

DXR1和DXR2是I/O映射寄存器,可以通過訪問I/O空間來訪問。DXR2和DXR1如圖6-5所示。

圖6-5數(shù)據(jù)發(fā)送寄存器(DXR2和DXR1)當(dāng)串行字長不超過16bit時,CPU或DMA控制器寫到DXR1上的數(shù)據(jù),復(fù)制到發(fā)送移位寄存器1(RSR1),然后再復(fù)制到發(fā)送緩沖寄存器1(XSR1)。然后,每個周期移位1bit數(shù)據(jù)到DX引腳。

當(dāng)串行字長超過16bit時,DXR1和DXR2的數(shù)據(jù)復(fù)制到發(fā)送移位寄存器(XSR2、XSR1),再移位到DX引腳。如果從DXR1復(fù)制到XSR1的過程中,使用壓縮擴(kuò)展(XCOMPAND=10b或11b),DXR1中的16bit數(shù)據(jù)壓縮為8bitμ律或A律數(shù)據(jù)后,送到XSR1;如果未使用壓縮擴(kuò)展,DXR(s)的數(shù)據(jù)直接復(fù)制到XSR(s)。

DXRs不是I/O映射寄存器,用戶不能訪問。

3)串口控制寄存器(SPCR1和SPCR2)

如圖6-6所示,每個McBSP有兩個串口控制寄存器:SPCR1和SPCR2。表6-1和表6-2分別說明SPCR1和SPCR2中的bit。這兩個寄存器都是I/O映射寄存器,它們的功能如下:

(1)選擇不同的McBSP模式,即數(shù)字回環(huán)模式(DLB)、接收數(shù)據(jù)的符號擴(kuò)展和校驗?zāi)J?RJUST)、時鐘停止模式(CLKSTP)、中斷模式(RINTM和XINTM)、仿真模式(FREE和SOFT)。

(2)使能或禁止DX引腳數(shù)據(jù)延遲器(DXENA)。

(3)檢測接收和發(fā)送數(shù)據(jù)的狀態(tài)(RSYNCERR、XSYNCERR、RFULL、XEMPTY、RRDY、XRDY)。

(4)將McBSP各個部分復(fù)位(RRST、XRST、FRST、GRST)。

圖6-6串口控制寄存器(SPCR1和SPCR2)

表6-1SPCR1寄存器續(xù)表6-2SPCR2寄存器續(xù)表

4)接收控制寄存器(RCR1和RCR2)

如圖6-7所示,McBSP有兩個接收控制寄存器:RCR1和RCR2。表6-3和表6-4分別描述了RCR1和RCR2寄存器的各個bit。這兩個寄存器都是I/O映射寄存器,通過這兩個寄存器,用戶可以進(jìn)行如下設(shè)置:

(1)接收幀為單段還是雙段(RPHASE)。

(2)定義段1和段2的字長(RWDLEN1、RWDLEN2)以及每個段的長(RFRLEN1、RFRLEN2)。

(3)選擇對接收數(shù)據(jù)的壓縮擴(kuò)展模式。

(4)使能或禁止忽略接收幀同步信號功能(RFIG)。

(5)設(shè)置接收數(shù)據(jù)延遲(RDATDLY)。

圖6-7接收控制寄存器(RCR1和RCR2)

表6-3RCR1寄存器表6-4RCR2寄存器續(xù)表

5)發(fā)送控制寄存器(XCR1和XCR2)

如圖6-8所示,McBSP有兩個發(fā)送控制寄存器:XCR1和XCR2。表6-5和表6-6分別說明了XCR1和XCR2寄存器的各個bit。這兩個寄存器都是I/O映射寄存器,通過這兩個寄存器,用戶可以進(jìn)行如下設(shè)置:

(1)設(shè)置發(fā)送幀為單段還是雙段(XPHASE)。

(2)定義段1和段2的串行字長(XWDLEN1、

XWDLEN2),以及每個段的字?jǐn)?shù)(FRLEN1、XFRLEN2)。

(3)選擇對發(fā)送數(shù)據(jù)的壓縮擴(kuò)展模式。

(4)使能或禁止接收幀同步信號忽略功能(FIG)。

(5)設(shè)置接收發(fā)送延遲(XDATDLY)。

圖6-8發(fā)送控制寄存器(XCR1和XCR2)

表6-5XCR1寄存器表6-6XCR2寄存器續(xù)表

6)采樣率發(fā)生器寄存器(SRGR1和SRGR2)

如圖6-9所示,McBSP有兩個采樣率發(fā)生器寄存器:SRGR1和SRGR2。表6-7和表6-8分別說明了SRGR1和SRGR2寄存器的各個bit。這兩個寄存器都是I/O映射寄存器,通過這兩個寄存器,用戶可以進(jìn)行如下設(shè)置:

(1)為采樣率發(fā)生器選擇輸入時鐘源(PCR中的CLKSM和SCLKMEbit一起控制)。

(2)選擇CLKG的分頻系數(shù)(CLKGDV)。

(3)選擇產(chǎn)生內(nèi)部發(fā)送幀同步信號的信號源是由FSG產(chǎn)生,還是由FSGM產(chǎn)生。

(4)設(shè)置幀同步信號的寬度(FWID)和周期(FPER)。當(dāng)采樣率發(fā)生器的時鐘源為外部信號時(通過CLKS、CLKR或CLKX引腳):

(1)如果CLKS引腳提供輸入時鐘,RGR2中CLKSPbit允許選擇是在CLKS的上升沿還是下降沿觸發(fā)CLKG和FSG;如果使用CLKX/CLKR引腳的輸入信號,PCR中的CLKXP/CLKRP選擇輸入時鐘的極性。

(2)設(shè)置SRGR2中的GSYNCbit使CLKG和外部幀同步信號同步,同時也和輸入時鐘同步。

圖6-9采樣率發(fā)生器寄存器(SRGR1和SRGR2)

表6-7SRGR1寄存器表6-8SRGR2寄存器

7)多通道控制寄存器(MCR1和MCR2)

如圖6-10所示,McBSP有兩個多通道控制寄存器:MCR1和MCR2。MCR1中是多通道模式下接收串口的控制位和狀態(tài)位(前綴為R)。MCR2中是多通道模式下發(fā)送串口的控制位和狀態(tài)位(前綴為X)。表6-9和表6-10分別說明寄存器MCR1和MCR2的各個bit。通過使能這兩個I/O映射寄存器,用戶可以進(jìn)行如下設(shè)置:

(1)使能所有通道,或只選部分通道用于接收數(shù)據(jù)(RMCM)。

(2)使能/禁止和屏蔽/不屏蔽發(fā)送通道(XMCM)。

(3)作兩個分區(qū)(32通道)或8個分區(qū)(128通道)。

(4)使用兩個分區(qū)時,給分區(qū)A和B分配16個通道的塊(RPABLK和RPBBLK用于接收,XPABLK和XPBBLK用于發(fā)送)。

(5)判斷哪16個通道的塊正在傳輸數(shù)據(jù)。

圖6-10多通道控制寄存器(MCR1和MCR2)

表6-9MCR1寄存器

續(xù)表

續(xù)表表6-10MCR2寄存器續(xù)表續(xù)表

8)引腳控制寄存器(PCR)

如圖6-11和表6-11所示,每個McBSP都有一個引腳控制寄存器:PCR。通過該I/O映射,用戶可以進(jìn)行如下設(shè)置:

(1)執(zhí)行IDLE指令,使McBSP進(jìn)入低功率模式。對于TMS320VC5509/5510芯片,通過PCR來實現(xiàn)。對于TMS320VC5501/5502芯片,通過外設(shè)IDLE控制寄存器(PICR)來實現(xiàn)。

(2)在接收器和/或發(fā)送器復(fù)位時,可將McBSP引腳用作通用I/O引腳。

(3)選擇發(fā)送器和接收器的幀同步模式。

(4)選擇發(fā)送器和接收器的時鐘模式。

(5)為采樣率發(fā)生器選擇輸入時鐘源。

(6)當(dāng)CLKS、DX和DR引腳配置為通用I/O引腳時,讀寫數(shù)據(jù)。

(7)選擇幀同步信號是高電平有效還是低電平有效。

(8)指定是在時鐘的上升沿還是下降沿對數(shù)據(jù)采樣。

圖6-11引腳控制寄存器(PCR)

表6-11PCR寄存器續(xù)表一續(xù)表一續(xù)表二

9)接收通道使能寄存器

如圖6-12和表6-12所示,McBSP有8個接收通道使能寄存器:RCERA、RCERB、RCERC、RCERD、RCERE、RCERF、RCRG、RCERH。每個對應(yīng)A、B、C、D、E、F、G和H分區(qū)中的一個。這幾個I/O映射寄存器,只有當(dāng)接收器配置為各通道可以單獨(dú)使能或禁止時(RMCM

=

1),才可以使用。

圖6-12接收通道使能寄存器

在選擇多通道時,將通道分配給RCERs,是32個通道還是128個通道單獨(dú)可選,由RMCMEbit定義。表6-13說明了在這兩種情況下,如何將塊分配給每個RCERs,以及每個bit對應(yīng)哪個通道。

表6-12接收通道使能寄存器

表6-13RCERs塊分配

續(xù)表

10)發(fā)送通道使能寄存器

如圖6-13和表6-14所示,MCBSP有8個發(fā)送通道使能寄存器:XCERA、XCERB、XCERC、XCERD、XCERE、XCERF、XCERG、XCERH。每個對應(yīng)A、B、C、D、E、F、G和H分區(qū)中的一個。這幾個I/O映射寄存器,只有當(dāng)發(fā)送器配置為各通道可以單獨(dú)使能/禁止或屏蔽/非屏蔽(XMCM非零)時,才可以使用。

圖6-13發(fā)送通道使能寄存器

表6-14發(fā)送通道使能寄存器在選擇多通道時,將通道分配給XCERs,是32個通道還是128個通道單獨(dú)可選,由XMCMEbit定義。表6-15說明了在這兩種情況下,如何將塊分配給每個XCERs,以及每個bit對應(yīng)哪個通道。

表6-15XCERs塊分配續(xù)表注意:當(dāng)XMCM=11b(對稱的發(fā)送和接收)時,發(fā)送器使用接收通道使能寄存器(RCERs)來使能通道,使用XCERS來解除發(fā)送通道的屏蔽。

4.?McBSP引腳用作通用I/O引腳

本章的任務(wù)主要是將McBSP引腳用作通用I/O引腳。表6-16說明了如何將McBSP引腳用作通用I/O引腳。其中,除XRST和RRSTbit為串口控制寄存器bit以外,其他所有的bit都位于引腳控制寄存器中。

表6-16如何將McBSP引腳用作通用I/O引腳要將接收串口引腳CLKR、FSR和DR用作通用I/O引腳,需作以下設(shè)置:

(1)接收串口復(fù)位(SPCR1中RRST=0)。

(2)將McBSP引腳設(shè)置為通用I/O引腳(PCR中XIOEN=I)。

CLKR和FSR引腳可以分別通過CLKRM和FSRM被置為輸入或輸出。DR只能作為輸入引腳。表6-16說明了PCR中哪些bit用于讀寫這些引腳的數(shù)據(jù)。圖6-14通用輸入/輸出管腳擴(kuò)展原理圖要將發(fā)送串口引腳CLKX、FSX和DX用作通用I/O引腳,需作以下設(shè)置:

(1)接收串口復(fù)位(SPCR2中XRST

=

0)。

(2)將McBSP引腳設(shè)置為通用I/O引腳(PCR中RIOEN

=

1)。

CLKX和FSX引腳可以分別通過CLKXM和FSXM被置為輸入或輸出。DX只能作為輸入/輸出引腳。表6-16說明了PCR中哪些bit用于讀寫這些引腳的數(shù)據(jù)。

對于CLKS,所有的復(fù)位和I/O使能條件都必須滿足:

(1)串口的接收和發(fā)送引腳復(fù)位(RRST

=

0和XRST

=

0)。

(2)對于接收器和發(fā)送器,通用I/O使能(RIOEN

=

1和XIOEN

=

1)。

CLKS引腳只能作為輸入引腳??梢酝ㄟ^讀PCR的CLKSSTATbit來讀取CLKS的狀態(tài)。

注意:當(dāng)McBSP的引腳配置成通用輸入引腳時,沒有對CLKRP、CLKXP、CLKSP、FSRP和FSXP作寫保護(hù),如果要寫這些bit,要到相關(guān)引腳的狀態(tài)下一次自動改變時,才能寫入。TMS320VC5509/5510中,這些bit每個CPU時鐘周期更新一次。

一、任務(wù)目的

通過任務(wù)學(xué)習(xí)使用5509ADSP的通用輸入/輸出管腳直接控制外圍設(shè)備的方法。

任務(wù)11通用輸入/輸出管腳應(yīng)用

二、所需設(shè)備

(1)

PC兼容機(jī)一臺,操作系統(tǒng)為Windows2000(或WindowsNT、Windows98、WindowsXP,以下假定操作系統(tǒng)為Windows2000)。Windows操作系統(tǒng)的內(nèi)核如果是NT的應(yīng)該安裝相應(yīng)的補(bǔ)丁程序(如:Windows2000為ServicePack3,WindowsXP為ServicePack1)。

(2)

ICETEK-VC5509-A-USB-EDU試驗箱一臺。

三、相關(guān)原理

1.TMS320C5509的通用輸入/輸出管腳

TMS320C5509DSP有7個專門的通用輸入/輸出管腳,還有1個通用輸出管腳XF。這些通用輸入輸出管腳通過專用寄存器可以由軟件控制,比如指定輸入或輸出,輸出值等。另外,TMS320C5509DSP的許多其他管腳,在不使用于特定功能時也能配置成通用輸入/輸出管腳。

2.ICETEK-CTR指示燈的控制

1)

GPIO與被控指示燈的連接

通過ICETEK-VC5509-A板的擴(kuò)展插座,通用輸出控制模塊ICETEK-CTR板直接連接了板上的一個指示燈和DSP的一個通用輸入/輸出管腳。這個管腳屬于McBSP1,可以設(shè)置成通用輸入/輸出管腳使用。擴(kuò)展原理如圖6-14所示。

2)

GPIO控制指示燈

如果要點(diǎn)亮發(fā)光二極管,需要在GPIO1上輸出低電平,如果輸出高電平則指示燈熄滅。如果定時使GPIO1上的輸出改變,指示燈將會閃爍。

3.程序說明

1)程序流程圖

程序流程圖如圖6-15所示。

圖6-15程序流程圖

2)文件main.c

#include"myapp.h"

#include"ICETEK-VC5509-EDU.h"

#include"scancode.h"

voidInitMcBSP();

main()

{

CLK_init();

SDRAM_init();

InitCTR();

InitMcBSP();

CTRGR=2; //使能I/O

while(1)

{

PCR1^=8;//

Delay(256);

}

}

voidInitMcBSP()

{

//IOPin:McBSP1.FSXS15將McBSP管腳設(shè)置作為輸出

//SPCR2.XRST_=0,PCR.XIOEN=1,PCR.FSXM=1,PCR.FSXP=0/1

SPCR2_1&=0x0fffe;

PCR1|=0x2800;

}

四、任務(wù)步驟

(1)準(zhǔn)備

①設(shè)置CCS2.21在硬件仿真(Emulator)方式下運(yùn)行。

②啟動CCS2.21。

(2)打開工程文件,瀏覽main.c文件的內(nèi)容,理解各語句作用。

(3)編譯、下載程序。

(4)運(yùn)行程序,觀察結(jié)果。

(5)結(jié)束程序運(yùn)行,退出CCS。

五、結(jié)果

可以觀察到紅色發(fā)光二極管定時閃爍。

六、問題與思考

(1)思考本任務(wù)與任務(wù)7的輸出原理有何不同。

(2)說明本任務(wù)是如何設(shè)置McBSP引腳的。

一、任務(wù)目的

學(xué)習(xí)使用5509ADSP的擴(kuò)展端口控制外圍設(shè)備的方法,了解發(fā)光二極管陣列的控制編程方法。任務(wù)12發(fā)光二極管陣列

二、所需設(shè)備

(1)

PC兼容機(jī)一臺,操作系統(tǒng)為Windows2000(或WindowsNT、Windows98、WindowsXP,以下假定操作系統(tǒng)為Windows2000)。Windows操作系統(tǒng)的內(nèi)核如果是NT的應(yīng)該安裝相應(yīng)的補(bǔ)丁程序(如:Windows2000為ServicePack3,WindowsXP為ServicePack1)。

(2)

ICETEK-VC5509-A-USB-EDU試驗箱一臺。

三、相關(guān)原理

1.EMIF接口

TMS320C5509DSP的擴(kuò)展存儲器接口(EMIF)用來與大多數(shù)外圍設(shè)備進(jìn)行連接,典型應(yīng)用如連接片外擴(kuò)展存儲器等。這一接口提供地址連線、數(shù)據(jù)連線和一組控制線。ICETEK-VC5509-A將這些擴(kuò)展線引到了板上的擴(kuò)展插座上供擴(kuò)展使用。

2.發(fā)光二極管顯示陣列擴(kuò)展原理

發(fā)光二極管顯示陣列的顯示由擴(kuò)展端口控制,擴(kuò)展在EMIF接口的兩個寄存器提供具體控制。擴(kuò)展原理圖如圖6-16所示。

圖6-16發(fā)光二極管顯示陣列擴(kuò)展原理圖

3.顯示原理

DSP需將顯示的圖形按列的順序存儲起來(8

×

8點(diǎn)陣,8個字節(jié),高位在下方,低位在上方),然后定時刷新控制顯示。具體方法是,將以下控制字按先后順序、每兩個為一組發(fā)送到端口0x602802,發(fā)送完畢后,隔不太長的時間(人眼觀察不閃爍的時間間隔)再發(fā)送一遍。由于位值為“0”時點(diǎn)亮,所以需要將顯示的數(shù)據(jù)取反。

0x01,第8列數(shù)據(jù)取反;0x02,第7列數(shù)據(jù)取反;

0x04,第6列數(shù)據(jù)取反;0x08,第5列數(shù)據(jù)取反;

0x10,第4列數(shù)據(jù)取反;0x20,第3列數(shù)據(jù)取反;

0x40,第2列數(shù)據(jù)取反;0x80,第1列數(shù)據(jù)取反。

4.程序流程圖

程序流程圖如圖6-17所示。

圖6-17程序流程圖四、任務(wù)步驟

(1)準(zhǔn)備

設(shè)置CCS2.21在硬件仿真(Emulator)方式下運(yùn)行。

②啟動CCS2.21,選擇菜單Debug→ResetCPU。

(2)打開工程文件,瀏覽main.c文件的內(nèi)容,理解各語句作用。

(3)編譯、下載程序。

(4)運(yùn)行程序,觀察結(jié)果。

(5)結(jié)束程序運(yùn)行,退出CCS。五、結(jié)果

結(jié)果:可以觀察到發(fā)光二極管陣列顯示從0到9的計數(shù)。

分析:本程序使用循環(huán)延時的方法,如果想實現(xiàn)較為精確的定時,可使用通用計時器,在通用計時器中斷中取得延時,改變顯示內(nèi)容。另外本程序中DSP一直在做刷新顯示的工作,如果使用通用計時器定時刷新顯示,將能減少DSP用于顯示的操作。適當(dāng)更新顯示可取得動畫效果。

六、問題與思考

(1)試設(shè)計用定時器定時刷新的程序,并顯示秒計數(shù)的最低位。

(2)本任務(wù)的頭文件是如何對LED顯示陣列進(jìn)行設(shè)置的。

一、任務(wù)目的

(1)學(xué)習(xí)用C語言編制中斷程序,控制VC5509DSP的通用I/O管腳產(chǎn)生不同占空比的PWM信號。

(2)學(xué)習(xí)VC5509DSP的通用I/O管腳的控制方法。

(3)學(xué)習(xí)直流電機(jī)的控制原理和控制方法。任務(wù)13直流電機(jī)的控制

二、所需設(shè)備

(1)

PC兼容機(jī)一臺,操作系統(tǒng)為Windows2000(或WindowsNT、Windows98、WindowsXP,以下假定操作系統(tǒng)為Windows2000)。Windows操作系統(tǒng)的內(nèi)核如果是NT的應(yīng)該安裝相應(yīng)的補(bǔ)丁程序(如:Windows2000為ServicePack3,WindowsXP為ServicePack1)。

(2)

ICETEK-VC5509-A-USB-EDU試驗箱一臺。

三、引腳設(shè)置相關(guān)原理

1.引腳設(shè)置

TMS320VC5509DSP的McBSP引腳通過設(shè)置McBSP的工作方式和狀態(tài),可以實現(xiàn)將它們當(dāng)成通用I/O引腳使用。

2.直流電機(jī)控制

直流電動機(jī)是最早出現(xiàn)的電動機(jī),也是最早能實現(xiàn)調(diào)速的電動機(jī)。近年來,直流電動機(jī)的結(jié)構(gòu)和控制方式都發(fā)生了很大的變化。隨著計算機(jī)進(jìn)入控制領(lǐng)域,以及新型的電力電子功率元器件的不斷出現(xiàn),使采用全控型的開關(guān)功率元件進(jìn)行脈寬調(diào)制(PulsWidthModulation,PWM)控制方式已成為絕對主流。

1)

PWM調(diào)壓調(diào)速原理

直流電動機(jī)轉(zhuǎn)速n的表達(dá)式為:

其中,U為電樞端電壓;I為電樞電流;R為電樞電路總電阻;Ф為每極磁通量;K為電動機(jī)結(jié)構(gòu)參數(shù)。直流電動機(jī)的轉(zhuǎn)速控制方法可分為兩類:對勵磁磁通進(jìn)行控制的勵磁控制法和對電樞電壓進(jìn)行控制的電樞控制法。其中勵磁控制法在低速時受磁極飽和的限制,在高速時受換向火花和換向器結(jié)構(gòu)強(qiáng)度的限制,并且勵磁線圈電感較大,動態(tài)響應(yīng)較差,所以這種控制方法用得很少?,F(xiàn)在,大多數(shù)應(yīng)用場合都使用電樞控制法。絕大多數(shù)直流電機(jī)采用開關(guān)驅(qū)動方式。開關(guān)驅(qū)動方式是使半導(dǎo)體功率器件工作在開關(guān)狀態(tài),通過脈寬調(diào)制PWM來控制電動機(jī)的電樞電壓,實現(xiàn)調(diào)速。

圖6-18是利用開關(guān)管對直流電動機(jī)進(jìn)行PWM調(diào)速控制的原理圖和輸入、輸出電壓波形。

圖6-18PWM調(diào)速控制原理圖圖中,當(dāng)開關(guān)管MOSFET的柵極輸入高電平時,開關(guān)管導(dǎo)通,直流電動機(jī)電樞繞組兩端有電壓Us。t1秒后,柵極輸入變?yōu)榈碗娖?,開關(guān)管截止,電動機(jī)電樞兩端電壓為0。t2秒后,柵極輸入重新變?yōu)楦唠娖?,開關(guān)管的動作重復(fù)前面的過程。這樣,對應(yīng)著輸入的電平高低,直流電動機(jī)電樞繞組兩端的電壓波形如圖6-18中所示。電動機(jī)的電樞繞組兩端的電壓平均值Uo為式中α為占空比,α=t/T。占空比α表示了在一個周期T里,開關(guān)管導(dǎo)通的時間與周期的比值。α的變化范圍為0≤α≤1。由此式可知,在電源電壓Us不變的情況下,電樞的端電壓的平均值Uo取決于占空比α的大小,改變α值就可以改變端電壓的平均值,從而達(dá)到調(diào)速的目的,這就是PWM調(diào)速原理。

2)

PWM調(diào)速方法

在PWM調(diào)速時,占空比α是一個重要參數(shù)。以下3種方法都可以改變占空比的值:

●定寬調(diào)頻法:這種方法是保持t1不變,只改變t2,這樣使周期T(或頻率)也隨之改變。

●調(diào)寬調(diào)頻法:這種方法是保持t2不變,只改變t1,這樣使周期T(或頻率)也隨之改變。

●定頻調(diào)寬法:這種方法是使周期T(或頻率)保持不變,而改變t1和t2。

前兩種方法由于在調(diào)速時改變了控制脈沖的周期(或頻率),當(dāng)控制脈沖的頻率與系統(tǒng)的固有頻率接近時,將會引起振蕩,因此這兩種方法用得很少。目前,在直流電動機(jī)的控制中,主要使用定頻調(diào)寬法。

3.ICETEK-CTR直流電機(jī)模塊

1)原理圖

ICETEK-CTR,即顯示/控制模塊上直流電機(jī)控制部分的原理圖如圖6-19所示。

圖6-19中PWM輸入對應(yīng)ICETEK-VC5509-A板上P4外擴(kuò)插座第26引腳的S22信號,DSP將在此引腳上給出PWM信號用來控制直流電機(jī)的轉(zhuǎn)速;圖6-19中的DIR輸入對應(yīng)ICETEK-VC5509-A板上P4外擴(kuò)插座第29引腳的S14信號,DSP將在此引腳上給出高電平或低電平來控制直流電機(jī)的方向。從DSP輸出的PWM信號和轉(zhuǎn)向信號先經(jīng)過2個與門和1個非門再與各個開關(guān)管的柵極相連。

圖6-19直流電機(jī)控制部分原理圖

2)控制原理

當(dāng)電動機(jī)要求正轉(zhuǎn)時,S14給出高電平信號,該信號分成3路:第1路接與門Y1的輸入端,使與門Y1的輸出由PWM決定,所以開關(guān)管V1柵極受PWM控制;第2路直接與開關(guān)管V4的柵極相連,使V4導(dǎo)通;第3路經(jīng)非門F1連接到與門Y2的輸入端,使與門Y2輸出為0,這樣使開關(guān)管V3截止;從非門F1輸出的另一路與開關(guān)管V2的柵極相連,其低電平信號也使V2截止。同樣,當(dāng)電動機(jī)要求反轉(zhuǎn)時,S14給出低電平信號,經(jīng)過2個與門和1個非門組成的邏輯電路后,使開關(guān)管V3受PWM信號控制,V2導(dǎo)通,V1、V4全部截止。

4.程序編制

程序中采用定時器中斷產(chǎn)生固定頻率的PWM波,100次中斷為一個周期,在每個中斷中根據(jù)當(dāng)前占空比判斷應(yīng)輸出波形的高低電平。主程序用輪詢方式讀入鍵盤輸入,得到轉(zhuǎn)速和方向控制命令。在改變電機(jī)方向時為減少電壓和電流的波動采用先減速再反轉(zhuǎn)的控制順序。

5.程序流程圖

程序流程圖如圖6-20所示。

圖6-20程序流程圖四、任務(wù)步驟

(1)準(zhǔn)備。

①設(shè)置CCS2.21在硬件仿真(Emulator)方式下運(yùn)行。

②啟動CCS2.21。

(2)打開工程文件,瀏覽main.c文件的內(nèi)容,理解各語句作用。

(3)編譯并下載程序。

(4)運(yùn)行并觀察程序運(yùn)行結(jié)果。開始運(yùn)行程序后,電機(jī)以中等速度轉(zhuǎn)動(占空比

=

60,轉(zhuǎn)速

=

2)。在小鍵盤上按數(shù)字‘1’~‘5’鍵將分別控制電機(jī)從低速到高速轉(zhuǎn)動(轉(zhuǎn)速

=

1~5)。在小鍵盤上按‘+’或‘-’鍵切換電機(jī)的轉(zhuǎn)動方向。如果程序退出或中斷時電機(jī)不停止轉(zhuǎn)動,可以將控制ICETEK-CTR模塊的電源開關(guān)關(guān)閉再開啟一次。有時鍵盤控制不是非常靈敏,這是因為程序采用了輪詢方式讀鍵盤輸入的結(jié)果,這時可以多按幾次按鍵。

(5)結(jié)束程序運(yùn)行。在小鍵盤上按“Enter”鍵停止電機(jī)轉(zhuǎn)動并退出程序。

(6)退出CCS。

五、結(jié)果

直流電機(jī)受控改變轉(zhuǎn)速和方向。

六、問題與思考

電動機(jī)是一個電磁干擾源。電動機(jī)的啟停還會影響電網(wǎng)電壓的波動,其周圍的電器開關(guān)也會引發(fā)火花干擾。因此,除了采用必要的隔離、屏蔽和電路板合理布線等措施外,看門狗的功能就會顯得格外重要??撮T狗在工作時不斷地監(jiān)視程序運(yùn)行的情況,一旦程序“跑飛”,會立刻使DSP復(fù)位。請查閱T1相關(guān)手冊,在本項目程序中使用看門狗定時器來監(jiān)視程序的運(yùn)行狀況。

6.3.1URAT簡介

UART是UniversalAsynchronousReceiver/Transmitter的縮寫,也就是通用異步收發(fā)器。它把從外部設(shè)備接收的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù),以及把從CPU接收到的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)。

UART發(fā)送或接收的數(shù)據(jù)幀結(jié)構(gòu)如圖6-21所示。6.3通用異步接收/發(fā)送器圖6-21UART發(fā)送或接收的數(shù)據(jù)幀結(jié)構(gòu)一般UART有以下要求:

●數(shù)據(jù)位長度可變,可以有5,6,7或8個數(shù)據(jù)位;

●停止位數(shù)可變,可以有1,1.5或2個停止位;

●波特率可編程;

●產(chǎn)生校驗位,發(fā)送時,UART應(yīng)能根據(jù)設(shè)定產(chǎn)生校驗位;

●校驗位檢測,接收時,UART應(yīng)能依據(jù)校驗位判斷數(shù)據(jù)是否出錯。6.3.2TMS320C5509上UART的實現(xiàn)

在C55X系列DSP中5501和5502有UART的外設(shè),5509和5510沒有。因此,對于5509來說要實現(xiàn)UART的功能只能通過其他途徑,如軟件實現(xiàn)或者外擴(kuò)芯片等。下面介紹外擴(kuò)芯片的方式。

利用TL16C550C和MAX232分別實現(xiàn)協(xié)議轉(zhuǎn)換和電平轉(zhuǎn)換。增加專用UART接口的硬件框圖如圖6-22所示。

圖6-22增加專用的UART的硬件接口原理圖主機(jī)通過并行方式訪問TL16C550C的寄存器,寄存器的設(shè)定將控制其內(nèi)部的控制邏輯模塊,實現(xiàn)對其工作方式的設(shè)定(如波特率、校驗位等),同時,訪問寄存器也可以實現(xiàn)對數(shù)據(jù)的操作(讀取和寫入數(shù)據(jù))。RS-232串行通信數(shù)據(jù)接口可大致分為三部分;接收模塊、發(fā)送模塊和Modem控制邏輯。接收模塊將從Sin引腳輸入的串行數(shù)據(jù),按照規(guī)定格式取出其數(shù)據(jù)部分并作校驗,數(shù)據(jù)接收部分被送入接收寄存器或接收FIFO中,校驗的結(jié)果反映在狀態(tài)位上;發(fā)送模塊將發(fā)送寄存器或發(fā)送FIFO中的數(shù)據(jù)按照規(guī)定格式加入起始位、停止位和校驗位,并以RS-232的串行方式發(fā)送至Sout引腳;Modem控制邏輯通過接收和發(fā)送引腳信號,實現(xiàn)對收發(fā)操作的控制。對DSP而言,TL16C550C是一系列寄存器,它們映射在I/O空間中,通過譯碼電路使它的起始地址為0x4000,那么對其操作即是對其某段地址的I/O進(jìn)行訪問。UART的每個寄存器都是8位的,大多數(shù)寄存器只能工作在一種模式下(讀或?qū)?。

1)串行傳輸

異步串行數(shù)據(jù)格式的設(shè)置是通過線路控制寄存器(LCR)來完成的。除了數(shù)據(jù)格式外,另外一個指標(biāo)是波特率,它是通過除數(shù)寄存器來設(shè)置的,實際的波特率為輸入時鐘信號進(jìn)行分頻后獲得,其公式為:BaudRate=CLK_IN/divisor。

2)數(shù)據(jù)接收

從Sin輸入的數(shù)據(jù)首先進(jìn)入接收移位寄存器(RSR),一個字符接收完成后,數(shù)據(jù)移入接收緩沖寄存器(RBR)。RBR實際是一個16字節(jié)的FIFO,在中斷設(shè)置時,UART會根據(jù)FIFO中接收數(shù)據(jù)的數(shù)目產(chǎn)生中斷,主機(jī)設(shè)備從RBR中讀取數(shù)據(jù)后,中斷會自動清除。

3)數(shù)據(jù)發(fā)送

發(fā)送操作和接收操作相反,主機(jī)數(shù)據(jù)寫入發(fā)送保持寄存器(THR),THR是一個16字節(jié)的FIFO,然后數(shù)據(jù)移入發(fā)送移位寄存器(TSR),之后送入Sout。在中斷設(shè)置時,UART會根據(jù)FIFO中發(fā)送數(shù)據(jù)的數(shù)目產(chǎn)生中斷,主機(jī)設(shè)備可根據(jù)中斷來決定是否繼續(xù)發(fā)送數(shù)據(jù)。

除了收發(fā)操作外,TL16C550C還可以產(chǎn)生其他類型的中斷,但它只有一根中斷信號引腳INTRPT,因此主機(jī)接收到中斷后必須判決產(chǎn)生中斷的信號源。

FIFO的操作通過FCR來設(shè)置。當(dāng)使用FIFO時,UART中最多可存放16字節(jié)數(shù)據(jù),反之則只能存放一個數(shù)據(jù),即相當(dāng)于FIFO只有一個字節(jié)大小。它有兩種工作方式:中斷方式和查詢方式。

UART中還有Modem控制寄存器(MCR)和Modem狀態(tài)寄存器(MSR),它們用于控制一些信號引腳,能把UART的工作狀態(tài)通過硬件的方式表達(dá)出來。6.3.3TL16C550寄存器

TL16C550是一個標(biāo)準(zhǔn)的串口接口芯片,它的控制寄存器基地址為0x400200,寄存器占用TMS320C5509的8個地址單元。串口中斷與TMS320C5509的INT0連接。用戶可以使用TMS320C5509的中斷0響應(yīng)串口中斷。TL16C550有11個寄存器,這11個寄存器是通過TMS320C5509的3個地址線(A2~A0)和線路控制寄存器中的DLAB位對它們進(jìn)行尋址的。表6-17是TL16C550寄存器地址分配。

表6-17TL16C550寄存器地址分配各個寄存器的功能說明如下:

1.線路控制寄存器

系統(tǒng)程序員通過LCR控制異步數(shù)據(jù)通信交換的格式。此外,程序員能取回、檢查、修改LCR的內(nèi)容。對此寄存器的內(nèi)容敘述如下:

(1)位0和位1:這兩位規(guī)定了每一發(fā)送或接收串行字符的位數(shù)。其字長如表6-18所示。

表6-18串行字符的字長

(2)位2:此位指定在每一發(fā)送字符中有一個、一個半或兩個停止位。當(dāng)位2被清零時,在數(shù)據(jù)中產(chǎn)生一個停止位。當(dāng)位2被置位時,所產(chǎn)生的停止位數(shù)取決于用位0和1所選擇的字長。接收器僅對第一個停止位定時而不管所選擇的停止位的個數(shù)。所產(chǎn)生的停止位的個數(shù)與字長以及與位2的關(guān)系見表6-19。

(3)位3:此位是奇偶校驗使能位。當(dāng)位3被置位時,在發(fā)送數(shù)據(jù)中最后一個數(shù)據(jù)字位與第一個停止位之間產(chǎn)生奇偶校驗位。在接收數(shù)據(jù)中,若位3被置位,那么將進(jìn)行奇偶校驗;當(dāng)位3被清零時,不產(chǎn)生也不檢查奇偶性。

表6-19所產(chǎn)生的停止位

(4)位4:此位是偶校驗選擇位。當(dāng)奇偶校驗被使能(位3被置位)且位4被置位時,選擇偶校驗(在數(shù)據(jù)和奇偶校驗位中邏輯1的個數(shù)為偶數(shù));當(dāng)奇偶校驗被使能且位4被清零時,選擇奇校驗(邏輯1的個數(shù)為奇數(shù))。

(5)位5:此位是附著校驗位(stickpartity)。當(dāng)位3、4、5被置位時,按清零方式(ascleared)發(fā)送和檢查奇偶校驗位;當(dāng)位3、5被置位而位4被清零時,按置位方式(asset)發(fā)送和檢查奇偶校驗位。如果位5被清零,那么禁止附著校驗。

(6)位6:此位是斷開控制位(breakcontrol)。為了強(qiáng)制斷開狀態(tài)就使位6置位,斷開狀態(tài)是強(qiáng)迫Sout為空白(被清零)的狀態(tài)。當(dāng)位6被清零時,斷開狀態(tài)被禁止且對發(fā)送器邏輯無影響,它僅影響Sout。

(7)位7:此位是除數(shù)鎖存器訪問位(DLAB)。在讀或?qū)懫陂g內(nèi),為了訪問波特率產(chǎn)生器的除數(shù)鎖存器,位7必須被置位;在讀或?qū)懫陂g內(nèi),為了訪問接收器緩沖器、THR或IER,必須清零位7。

2.線路狀態(tài)寄存器

LSR向CPU提供有關(guān)數(shù)據(jù)傳送狀態(tài)的信息。對此寄存器的內(nèi)容說明如下。

(1)位0:此位是接收器的數(shù)據(jù)準(zhǔn)備就緒(DR)指示位。當(dāng)整個輸入字符已被接收且傳送至RBR或FIFO時,該位置位。讀RBR或FIFO中的所有數(shù)據(jù)將清零該位。

(2)位1:此位是溢出錯指示位(OverrunError,OE)。當(dāng)OE被置位時,它指示在RBR中字符被讀出之前,它已被送入寄存器的下一個字符所重寫。每當(dāng)CPU讀LSR內(nèi)容時,OE被清零。如果超出觸發(fā)電平FIFO方式數(shù)據(jù)仍繼續(xù)填充FIFO,那么僅在FIFO滿且在移位寄存器中已完整地接收下一字符時才發(fā)生溢出錯。只要一發(fā)生溢出錯便把它指示給CPU。移位寄存器中的字符被重寫,但不把它傳送給FIFO。

(3)位2:此位是奇偶校驗錯指示位(PE)。當(dāng)PE被置位時,它指示所接收數(shù)據(jù)字符的奇偶性不符合在LCR(位4)中所選擇的奇偶性。每當(dāng)CPU讀LSR的內(nèi)容時,PE被清零。在FIFO方式下,此錯誤與FIFO中特定的字符有關(guān)。當(dāng)與其有關(guān)的字符位于FIFO的頂部時,此錯誤被送至CPU。

(4)位3:此位是幀出錯指示位(FramingError,F(xiàn)E)。當(dāng)FE被置位時,它指示所接收的字符沒有有效(設(shè)置)的停止位。每當(dāng)CPU讀LSR內(nèi)容時,F(xiàn)E被清零。在FIFO方式下,此錯誤與FIFO中特定的字符有關(guān)。當(dāng)與其有關(guān)的字符位于FIFO的頂部時,此錯誤被送至CPU。在幀出錯之后,ACE試圖重新同步。為了實現(xiàn)這一點(diǎn),它假設(shè)幀出錯是由下一起始位所引起。ACE對此起始位采樣兩次,然后接受輸入數(shù)據(jù)。

(5)位4:此位是斷開中斷指示位(BreakInterrupt,BI)。當(dāng)BI被置位時,它指示在長于完整字(fullword)傳送時間的期間內(nèi)接收的數(shù)據(jù)輸入保持為低電平。完整字傳送時間定義為發(fā)送起始位、數(shù)據(jù)、奇偶校驗以及停止位的總時間。每當(dāng)CPU讀LSR內(nèi)容時,BI被清零。在FIFO方式下,此錯誤與FIFO中特定的字符有關(guān)。當(dāng)與其有關(guān)的字符位于FIFO的頂部時,此錯誤被送至CPU。當(dāng)斷開發(fā)生時,僅一個0字符被裝入FIFO。在Sin變至記號狀態(tài)(markingstate)且接收下一有效起始位之后,允許下一個字符的傳送。

(6)位5:此位是THRE指示位。當(dāng)THR為空時,THRE置位,它指示ACE已準(zhǔn)備好接受新字符。當(dāng)THRE置位時,如果THRE中斷被使能,那么便產(chǎn)生中斷。當(dāng)THR的內(nèi)容傳送至TSR時,THRE被置位。在CPU裝載THR的同時THRE被清零。在FIFO方式下,當(dāng)發(fā)送FIFO為空時,THRE置位。當(dāng)至少有一個字節(jié)寫入發(fā)送FIFO時,它被清零。

(7)位6:此位是發(fā)送器空(TEMT)指示位。當(dāng)THR和TSR二者均為空時,TEMT被置位。當(dāng)THR或TSR包含數(shù)據(jù)字符時,TEMT被清零。在FIFO方式下,當(dāng)發(fā)送器FIFO和移位寄存器二者均為空時,TEMT被置位。

(8)位7:在TL16C550B、TL16C550BI及TL16C450方式下,此位總是被清零。在FIFO方式下,當(dāng)FIFO中至少有一個奇偶校驗、幀或斷開錯時,該位被置位;當(dāng)微處理器讀LSR且FIFO中沒有后續(xù)錯誤時,它被清零。

3.中斷使能寄存器

IER使能五種類型中斷的每一種并允許INTRPT輸出信號對中斷產(chǎn)生作出響應(yīng)。IER也可通過清零位0至3禁止中斷系統(tǒng)。該寄存器的內(nèi)容歸納如下。

(1)位0:置位時,此位使能接收數(shù)據(jù)可用中斷。

(2)位1:置位時,此位使能THRE中斷。

(3)位2:置位時,此位使能接收器線狀態(tài)中斷。

(4)位3:置位時,此位使能調(diào)制解調(diào)器狀態(tài)中斷。

(5)位4~7:這些位不使用(總是被清零)。

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

異步通信單元具有片內(nèi)中斷產(chǎn)生和確定優(yōu)先級的能力,它能靈活地與大多數(shù)常用微處理器相接口。異步通信單元提供四個中斷優(yōu)先級:

(1)優(yōu)先級1:接收器線狀態(tài)(最高優(yōu)先級)。

(2)優(yōu)先級2:接收器數(shù)據(jù)準(zhǔn)備就緒或接收器字符超時。

(3)優(yōu)先級3:發(fā)送保持寄存器空。

(4)優(yōu)先級4:調(diào)

溫馨提示

  • 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

提交評論