一種基于MAX3232的TMS320F2812異步串行通信系統(tǒng)研究和實(shí)現(xiàn)
摘要:采用TI公司MAX3232芯片實(shí)現(xiàn)TMS320F2812數(shù)字信號處理芯片與PC機(jī)的通信,研究了SCI模塊發(fā)送和接收數(shù)據(jù)的方式,完成了SCI模塊的初始化程序設(shè)計(jì)和發(fā)送與接收數(shù)據(jù)的流程。經(jīng)過實(shí)驗(yàn)測試,該系統(tǒng)結(jié)構(gòu)簡單、傳輸可靠,可直接用于油田勘探開發(fā)的測井和多種數(shù)據(jù)采集與傳輸。
關(guān)鍵詞:TMS320F2812;SCI;異步串行通信
數(shù)字信號處理器自20世紀(jì)80年代誕生以來,在短短的二十幾年里得到了飛速發(fā)展,在通信、航空航天、醫(yī)療、工業(yè)控制方面得到了廣泛應(yīng)用,美國德州儀器公司是DSP研發(fā)和生產(chǎn)的領(lǐng)先者,也是世界上最大的DSP供應(yīng)商。TMS320F2812是TI公司的一款用于控制的高性能、多功能、高性價比的32位定點(diǎn)DSP芯片,最高可以工作在150MHz主頻下,片內(nèi)集成了眾多資源。目前,串行通信在各行各業(yè)發(fā)揮著重要作用,它可以將各種數(shù)據(jù)發(fā)送給計(jì)算饑以便我們實(shí)時監(jiān)控。由于中國海洋石油國家科技重大專項(xiàng)“隨鉆地層壓力測量系統(tǒng)研制”項(xiàng)目需要,作者設(shè)計(jì)了一種基于MAX3232的TMS320F2812異步串行通信系統(tǒng),經(jīng)過實(shí)驗(yàn)測試,該系統(tǒng)結(jié)構(gòu)簡單、傳輸可靠,達(dá)到了要求,可直接用于油田勘探開發(fā)的測井和多種數(shù)據(jù)采集與傳輸。
1 硬件電路
采用符合RS-232協(xié)議的MAX232芯片來實(shí)現(xiàn)F2812與PC之間的通信。MAX3232采用專有的低壓差發(fā)送器輸出級,利用雙電荷泵在3.0~
5.5V電源供電時能夠?qū)崿F(xiàn)真正的RS-232性能,器件僅需四個0.1μF的外部小尺寸電荷泵電容,具有兩路接收器和兩路驅(qū)動器,提供1μA關(guān)斷模式,有效降低功耗并延長便攜式產(chǎn)品的電池壽命。在關(guān)斷模式下,接收器保持有效狀態(tài),對外部設(shè)備進(jìn)行監(jiān)測,僅消耗1μA電源電流,原理電路如圖1所示。
從圖中我們可以看出MAX3232具有兩路接收和驅(qū)動器,本次設(shè)計(jì)中僅用了其中一路,而另一路采取懸空方式。其引腳連接方式為:T1IN
與 F2812的SCITXDA相連,R1OUT與SCIRXDA相連,T1OUT和R1IN分別于DB9的2和3號引腳相連,其余引腳分別接4個0.1μF的電容。該電路設(shè)計(jì)簡單,易于實(shí)現(xiàn)。
2 工作原理簡述
異步串行通信接口(SCI)是一個采用發(fā)送、接收雙線制的異步串行通信接口,即通常所說的UART口。所謂異步傳輸就是將比特分成組進(jìn)行傳送,組可以是8位的一個字符或更長。發(fā)送方可以在任何時刻發(fā)送這些比特組,而接收方不知道它們會在什么時候到達(dá)。因此,每次異步傳輸?shù)男畔⒍夹枰砸粋€起始位開頭,它通知接收方數(shù)據(jù)已經(jīng)到達(dá)了。在傳輸結(jié)束時,一個停止位表示這次傳輸信息的終止。異步傳輸實(shí)現(xiàn)容易,通常用于低速設(shè)備。
TMS320F2812的SCI模塊具有很強(qiáng)大的功能。它包括兩個外部引腳SCITXD和SCIRXD,分別復(fù)用到通用I/O口上,通過設(shè)置GPIO口為特殊功能口可以使能這兩個外部引腳,可以編程配置多種的不同的通信速率和可編程的數(shù)據(jù)格式,具有四個錯誤檢測標(biāo)志位,可以工作在半雙工或全雙工通信模式,發(fā)送和接收可以采用中斷和查詢的方式進(jìn)行,采用NRZ格式并且擁有13個寄存器來完成整個模塊的控制,它還具有自動波特率檢測和16級發(fā)送/接收等增強(qiáng)功能一本設(shè)計(jì)正是利用SCI模塊的兩個外部引腳SCITXD和SCIRXD分別連接MAX3232的一路接收發(fā)驅(qū)動器并通過DB9計(jì)算機(jī)接口來實(shí)現(xiàn)TMS320F2812和PC之間的相互通信。
3 軟件設(shè)計(jì)
3.1 SCI模塊的初始化
對DSP芯片的控制是通過對它的寄存器的讀寫來完成的,TMS320F2812的SCI模塊包括13個寄存器。要使SCI模塊能夠正常工作,必須對它進(jìn)行初始化。其中設(shè)置主要包括:運(yùn)行模式、協(xié)議、波特率、字符長度、奇/偶校驗(yàn)、停止位個數(shù)、中斷使能及級別確定等。下面為本設(shè)計(jì)中對SCI模塊的初始化程序:
void InitSciA ()
{
//配置SCITXD和SCIRXD
EALLOW:
GpioMuxRegs.CPFMUX.bit.SCITXDA_GPIOF4=1;
GpioMuxRegs.CPFMUX.bit.SCIRXDA_GPIOF5=1;
EDIS:
//軟件復(fù)位SCI
SciaRegs.SCIGTL1.bit.SWRESET=0;
//設(shè)置字符格式、通信協(xié)議、通信模式
SciaRegs.SCICCR. bit. SCICHAR=7;
SciaRegs.SCICCR.bit.PARITYENA=0;
SciaRegs.SCICCR.bit.LOOPBKENA=0;
SciaRegs.SCICCR.bit.STOPBITS=0;
SciaRegs.SCICCR. bit.ADDRIDLE. MODE=0;
//設(shè)置波特率為9600,LSPCLK=30MHz
SciaRegs.SCIHBAUD=0x0001;
SciaRegs.SCILBAUD=0x0085;
//使能發(fā)送和接收器
SciaRegs.SCICTL1.bit.TXENA=1;
SciaRegs.SCICTL1.bit.RXENA=1;
//使能中斷
PieCtrl.PIEIER9. bit.INTx1=1;
PieCtrl.PIEIER9. bit.INTx2=1;
//退出復(fù)位狀態(tài)
SciaRegs.SCICTL1.bit.SWRESET=1;
}
3.2 SCI模塊發(fā)送和接收數(shù)據(jù)的機(jī)制
SCI模塊發(fā)送和接收數(shù)據(jù)有兩種方式:一種是查詢方式,另一種是中斷方式。
查詢方式:就是程序不斷去查詢各自的狀態(tài)標(biāo)志位。對于發(fā)送數(shù)據(jù),需要查詢的是TXRDY位,如果該位為1,說明SCITXBUF已經(jīng)準(zhǔn)備好接收下一個發(fā)送數(shù)據(jù)。當(dāng)數(shù)據(jù)寫入SCITXBUF后,該位會自動清零,此時如果TXENA=1,發(fā)送移位寄存器就會將SCITXBUF中的數(shù)據(jù)發(fā)送出去。而接收數(shù)據(jù)時需要查詢RXRDY位,當(dāng)SCIRXBUF已經(jīng)準(zhǔn)備好一個等待CPU讀取的數(shù)據(jù)時,就會將該位置1,當(dāng)數(shù)據(jù)被CPU讀走后,RXRDY會自動清零。
中斷方式:在該種方式下,需要我們首先使能外設(shè)級、PIE級和CPU級中斷。此時TXRDY和RXRDY變成了中斷標(biāo)志位,當(dāng)TXRDY為1時,就會產(chǎn)生中斷事件,如果各級中斷都已經(jīng)使能,則程序會進(jìn)入相應(yīng)的中斷處理函數(shù),完成數(shù)據(jù)的發(fā)送。而當(dāng)RXRDY置位時,就會產(chǎn)生接收中斷,如果各級中斷都已經(jīng)使能,則程序進(jìn)入相應(yīng)的中斷處理函數(shù),完成數(shù)據(jù)的接收。這里值得注意的是,2812的外設(shè)的中斷標(biāo)志位一定要手動復(fù)位,但是SCI模塊是個例外,它的中斷標(biāo)志位會在響應(yīng)中斷后自動復(fù)位。
通過對查詢和中斷方式程序的分析可以看出,查詢函數(shù)位于主函數(shù)的for循環(huán)內(nèi),通過for循環(huán)不斷查詢TXRDY和RXRDY的狀態(tài),因此,程序的運(yùn)行效率比較低,但是程序比較簡單,易于實(shí)現(xiàn)。對于中斷方式,只要相應(yīng)的中斷標(biāo)志位置位,并且所有中斷級都已被使能,就能直接進(jìn)入中斷處理函數(shù),實(shí)現(xiàn)相應(yīng)的功能。因此,程序的運(yùn)行效率高,但程序比較復(fù)雜。綜合考慮,最終選取數(shù)據(jù)接收采用中斷方式,數(shù)據(jù)發(fā)送采用查詢方式。圖2和圖3分別為查詢方式和中斷方式的程序流程圖。
4 實(shí)驗(yàn)與測試結(jié)果
將串口調(diào)試工具做如下設(shè)置:將波特率設(shè)置為程序中的波特率19200bps,數(shù)據(jù)位8位,無極性校驗(yàn),停止位1位,然后打開串口,將16進(jìn)制復(fù)選框上的勾去掉,這樣數(shù)據(jù)將按照ASCII碼進(jìn)行發(fā)送。在這里我們輸入swpu,點(diǎn)擊發(fā)送后,接收框馬上顯示swpu,說明SCI與PC通信成功。具體結(jié)果如圖4所示。
除此之外,我們還可以通過CCS中的watchwindow來觀察2812接收到的數(shù)據(jù),如圖5所示。
通過查ASCII碼表我們可以得到表1所列。
由表1我們也可以看出2812與PC通信成功,發(fā)送和接收的數(shù)據(jù)一致。
通過硬件設(shè)計(jì)和軟件調(diào)試,已經(jīng)達(dá)到了項(xiàng)目要求。該系統(tǒng)結(jié)構(gòu)簡單、易于實(shí)現(xiàn)。