版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第9課 20世紀(jì)以來人類的經(jīng)濟(jì)與生活 說課稿-2023-2024學(xué)年高中歷史統(tǒng)編版(2019)選擇性必修二001
- 2024年07月浙江義烏農(nóng)商銀行大學(xué)生社會實踐活動招募筆試歷年參考題庫附帶答案詳解
- 2024年??谑旋埲A區(qū)金盤社區(qū)衛(wèi)生服務(wù)站高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 大班科學(xué)預(yù)防感冒
- 創(chuàng)業(yè)公司工作流程
- 2024年海南省平山醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 企業(yè)經(jīng)營成本管理課件
- 2024版商鋪?zhàn)赓U合同備忘錄
- 2024版學(xué)校特色文化活動服務(wù)協(xié)議版B版
- 2024版高清影視制作與發(fā)行合同
- 計量經(jīng)濟(jì)學(xué)復(fù)習(xí)資料-概念和問答
- 2024年秋新人教PEP版3年級上冊英語教學(xué)課件 Unit 4 第4課時 Part B Let's talk
- 企業(yè)發(fā)展部部門管理手冊
- 2024新版(外研版三起孫有中)三年級英語上冊單詞帶音標(biāo)
- 2023年員工手冊范本(適用于公司全體員工手冊)
- 2025屆安徽省合肥市一六八中高二數(shù)學(xué)第一學(xué)期期末經(jīng)典試題含解析
- 自來水廠考試題庫單選題100道及答案解析
- 冷庫建設(shè)項目可行性研究報告5篇
- 教育學(xué)院院長述職報告范文
- 杭州市西湖區(qū)2024年三年級數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 2022-2023學(xué)年廣東省廣州市花都區(qū)六年級(上)期末英語試卷(含答案)
評論
0/150
提交評論