DSP的軟件UART實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第1頁(yè)
DSP的軟件UART實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第2頁(yè)
DSP的軟件UART實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第3頁(yè)
DSP的軟件UART實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第4頁(yè)
DSP的軟件UART實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

精品文檔-下載后可編輯DSP的軟件UART實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用1前言ADSP218X作為16位的定點(diǎn)數(shù)字信號(hào)處理器,以其低成本、低功耗的特點(diǎn)在實(shí)際中有著廣泛的應(yīng)用。它主要面向通信系統(tǒng)等對(duì)處理數(shù)據(jù)精度和動(dòng)態(tài)范圍適中、更強(qiáng)調(diào)產(chǎn)品成本和功耗的應(yīng)用領(lǐng)域。ADSP218X系列定點(diǎn)DSP相對(duì)于其他定點(diǎn)DSP的突出優(yōu)點(diǎn)是片內(nèi)高速存儲(chǔ)器容量大,尋址能力強(qiáng),運(yùn)算速度快,對(duì)于需要較大存儲(chǔ)器(40~80kB)的應(yīng)用,ADSP218X可以構(gòu)成外圍設(shè)備少的系統(tǒng)[4]。除此之外,ADSP218X還有強(qiáng)大的系統(tǒng)接口,有兩個(gè)帶有自動(dòng)壓擴(kuò)功能的雙緩沖串口。ADSP218X的串口屬于同步串口,與標(biāo)準(zhǔn)的異步串行接口不同,要想實(shí)現(xiàn)ADSP218X與PC機(jī)串口的通信,我們必須在DSP中采用軟件模擬通用異步收發(fā)器(UART)的方法來實(shí)現(xiàn)兩者的通信。

2串行通信和DSP串口

目前,大部分PC機(jī)上的串口采用RS-232標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)規(guī)定采用一個(gè)25腳的DB25連接器,對(duì)連接器的每個(gè)引腳的信號(hào)內(nèi)容以及各種信號(hào)的電平加以規(guī)定[1]。在通信距離較近時(shí)(12m),可以用電纜線直接連接標(biāo)準(zhǔn)RS-232端口,若距離較遠(yuǎn),需附加調(diào)制解調(diào)器。實(shí)際上RS-232的25條引線中有許多是很少使用的,所以目前較為常用的串口有9針(DB9)和25針串口(DB25)。而在普通電路設(shè)計(jì)中為簡(jiǎn)單且常用的是三線制接法,即在通信中不需要RS-232的控制聯(lián)絡(luò)信號(hào),地(GND)、接收數(shù)據(jù)(RX)和發(fā)送數(shù)據(jù)(TX)三腳相連,便可實(shí)現(xiàn)全雙工異步串行通信。本文即采用這種方法實(shí)現(xiàn)PC與DSP的串口通信。在典型的RS-232接口中,由于沒有時(shí)鐘信號(hào),所以數(shù)據(jù)按照設(shè)定的固定波特率傳送。在一幀信號(hào)中通常包括開始位、停止位和數(shù)據(jù)位,校驗(yàn)位可選。其中數(shù)據(jù)位為5~8bits;奇偶校驗(yàn)位共有5種方式可選:奇校驗(yàn)、偶校驗(yàn)、始終為1、始終為0以及空;停止位也有3種選擇:1位、11/2位以及2位。串口傳數(shù)時(shí)低位優(yōu)先,由開始位表示數(shù)據(jù)的傳送。

ADSP218X有兩個(gè)雙向雙緩沖的同步串口,通過幀信號(hào)來控制數(shù)據(jù)流。每一個(gè)串口有5個(gè)信號(hào):串行時(shí)鐘SCLK、接收幀同步(RFS)、發(fā)送幀同步(TFS)、串行數(shù)據(jù)接收(DR)和串行數(shù)據(jù)發(fā)送(DT)。兩個(gè)串口都可以使用外部時(shí)鐘,也可以利用DSP的內(nèi)部時(shí)鐘,內(nèi)部產(chǎn)生串口時(shí)鐘時(shí)頻率由串行時(shí)鐘除法寄存器SCLKDIV確定。幀同步信號(hào)也有內(nèi)外選擇,既可以自己產(chǎn)生,也可以由外部設(shè)備提供,它用于指示串行數(shù)據(jù)字的開始。串口數(shù)據(jù)的字長(zhǎng)在3~16bit之間任意設(shè)置,共有4種格式:右對(duì)齊高位零填充、右對(duì)齊高位符號(hào)位填充、μ率壓縮及A率壓縮。SPORT在DR上接收數(shù)據(jù),在DT上發(fā)送數(shù)據(jù),可實(shí)現(xiàn)雙工操作。數(shù)據(jù)比特利用串口時(shí)鐘同步。在ADSP218X的兩個(gè)串口中,SPORT1除了可以作為普通串口,還可以作為外部中斷和標(biāo)志位使用。通過設(shè)置系統(tǒng)控制寄存器(0X3FFF)的bit10,DR1和DT1相應(yīng)可作為FLAGIN(標(biāo)志位輸入)和FLAGOUT(標(biāo)志位輸出),這兩個(gè)管腳在軟件UART的過程中可以作為數(shù)據(jù)的輸入和輸出管腳。ADSP218X的串口在傳輸時(shí)高位優(yōu)先。

ADSP218X的串口使用主要是通過設(shè)置各內(nèi)存映射控制寄存器來實(shí)現(xiàn),各寄存器的具體含義及設(shè)置請(qǐng)參閱文獻(xiàn)[2]。

3DSP軟件UART的實(shí)現(xiàn)

由以上看出,DSP的串口和PC機(jī)的串口在數(shù)據(jù)格式以及傳送控制上有區(qū)別,但是通過軟件模擬以及必要的硬件控制,就可實(shí)現(xiàn)DSP與標(biāo)準(zhǔn)串口間的通信。在ADSP218X上軟件模擬UART有3種主要的方法:直接利用DSP的串口,通過控制串口的傳送模式來實(shí)現(xiàn);利用DSP的定時(shí)器,通過標(biāo)志位管腳的輸入輸出來實(shí)現(xiàn);利用DSP的外部中斷,通過中斷處理程序來實(shí)現(xiàn)。本文主要介紹前兩種方法。

3.1DSP串口實(shí)現(xiàn)的軟件UART通過對(duì)DSP的串口控制寄存器進(jìn)行設(shè)置以及對(duì)接收和傳送數(shù)據(jù)進(jìn)行必要的處理,利用圖1所示的電路,DSP就可以與PC進(jìn)行數(shù)據(jù)交換。

接收數(shù)據(jù)時(shí),設(shè)置DSP串口為內(nèi)部時(shí)鐘和外部產(chǎn)生幀同步信號(hào)。內(nèi)部時(shí)鐘信號(hào)用來提取接收數(shù)據(jù)。由于DSP串口進(jìn)行數(shù)據(jù)接收時(shí),只知道數(shù)據(jù)率而不知道它們與內(nèi)部時(shí)鐘的相位關(guān)系,因此為了保證數(shù)據(jù)的正確性,內(nèi)部時(shí)鐘頻率設(shè)為PC串口波特率的奇數(shù)倍,本方案中取3,也就是說串口的一位數(shù)據(jù)DSP接收3次,這樣就可以確保在3bit接收數(shù)據(jù)中至少有2bit是正確的。外部幀同步信號(hào)通過硬件來實(shí)現(xiàn),來自RS-232的TX信號(hào)同時(shí)接到DSP的DR和RFS信號(hào)管腳,因?yàn)镈SP工作在有幀模式時(shí)只在等待新數(shù)據(jù)時(shí)檢測(cè)RFS信號(hào),傳送開始后就忽略RFS信號(hào),所以可以利用RS-232傳輸時(shí)的開始位來實(shí)現(xiàn)RFS信號(hào)。通常串口信號(hào)在無校驗(yàn)位時(shí)為10bit,以3倍的速率對(duì)其進(jìn)行抽樣就會(huì)得到30bit數(shù)據(jù),除去位作為RFS信號(hào),得到29bit數(shù)據(jù)。但DSP串口接收緩沖區(qū)通常是16bit,所以必須接收兩次。在接收個(gè)16bit時(shí),設(shè)置串口為有幀模式,第二次接收時(shí)設(shè)置串口為無幀模式,這樣就可以完全接收32bit數(shù)據(jù)。發(fā)送數(shù)據(jù)時(shí),設(shè)置串口為內(nèi)部時(shí)鐘,內(nèi)部產(chǎn)生幀同步信號(hào),傳送時(shí)可按照實(shí)際的波特率發(fā)送數(shù)據(jù)。但是由于接收時(shí)需要設(shè)置DSP串口速率為波特率的3倍,所以發(fā)送時(shí)仍然按3倍波特率發(fā)送,因此在傳送前必須對(duì)數(shù)據(jù)進(jìn)行處理,除了加上開始位和結(jié)束位外,還需將待傳數(shù)據(jù)按位擴(kuò)展,即將1和0分別擴(kuò)展為111和000,10bit數(shù)據(jù)因此變?yōu)?0bit,而DSP串口發(fā)送寄存器同樣為16bit,所以發(fā)送要分上下字進(jìn)行兩次。

需要注意的是DSP串口工作時(shí)高位優(yōu)先,而RS-232傳輸時(shí)低位優(yōu)先,因此我們必須通過軟件調(diào)整接收和發(fā)送數(shù)據(jù)的順序。圖2所示是DSP在接收數(shù)據(jù)時(shí)的中斷處理程序流程圖[3]。3.2用定時(shí)器實(shí)現(xiàn)的軟件UART用定時(shí)器來實(shí)現(xiàn)DSP的軟件UART主要是利用定時(shí)器中斷來處理數(shù)據(jù),用標(biāo)志位輸入和輸出管腳來傳送數(shù)據(jù)。ADSP218X共有13個(gè)可編程標(biāo)志位管腳,在本例中以SPORT1的FLAGIN和FLAGOUT作為輸入和輸出管腳,所以在初始化時(shí)首先要配置SPORT1工作在中斷和標(biāo)志位狀態(tài),使用其他標(biāo)志位管腳時(shí)需要相應(yīng)設(shè)置可編程標(biāo)志位控制寄存器。ADSP218X的定時(shí)器控制主要通過TPERIOD(定時(shí)器周期)、TCOUNT(定時(shí)器計(jì)數(shù))和TSCALE(定時(shí)器定標(biāo))寄存器完成。同串口UART一樣,為了保證數(shù)據(jù)的正確性,設(shè)置定時(shí)器工作在3倍的波特率,每個(gè)數(shù)據(jù)位接收3次,僅在中間一位判斷接收數(shù)據(jù)。相應(yīng)的在發(fā)送時(shí)必須通過軟件控制來實(shí)現(xiàn)3次中斷發(fā)送一位數(shù)據(jù)。采用定時(shí)器實(shí)現(xiàn)軟件UART的硬件連接如下:

DSPFO→電平轉(zhuǎn)換→RS232RX

DSPFI←電平轉(zhuǎn)換←RS232TX

中斷服務(wù)程序分接收和發(fā)送兩個(gè)部分。進(jìn)入中斷后,程序首先判斷是否有數(shù)據(jù)要發(fā)送,若沒有則直接進(jìn)入接收狀態(tài);若有就繼續(xù)判斷是否應(yīng)該在這次中斷發(fā)送數(shù)據(jù)位。因定時(shí)器工作于3倍的波特率,所以此定義參數(shù)TIMER_CENTREL為3,每次中斷TIMER_CENTREL減1,當(dāng)其為0時(shí)發(fā)送待傳比特位。在接收服務(wù)程序中,首先應(yīng)判斷上一個(gè)接收字的停止位是否已經(jīng)收到,收到就等待全部停止位接收完畢后,返回主程序;若沒有收到就表明DSP正在接收數(shù)據(jù)或者等待接收新的數(shù)據(jù)。當(dāng)DSP等待接收新的數(shù)據(jù)時(shí),不斷抽樣FLAGIN管腳檢測(cè)數(shù)據(jù)的開始位,檢測(cè)到開始位后,就在每3次中斷后檢測(cè)FLAGIN管腳,根據(jù)管腳電平高低判斷接收為1為0,并根據(jù)此值構(gòu)造接收數(shù)據(jù)。需要注意的是在剛剛檢測(cè)到開始位的時(shí)候,為了在數(shù)據(jù)位的中間取樣,應(yīng)該等到第4次中斷時(shí)再判斷,而此后就只需等待3次中斷。圖3和圖4分別是調(diào)用UART傳送數(shù)據(jù)和中斷處理時(shí)發(fā)送部分的程序流程圖。發(fā)送一組數(shù)據(jù)時(shí),為了判斷前一數(shù)據(jù)字是否傳送完成,在圖3中每調(diào)用傳送程序時(shí)我們加入標(biāo)志位進(jìn)行查詢,若有數(shù)據(jù)正在處理則等待,沒有則初始化相應(yīng)變量,置標(biāo)志位為0,表示有數(shù)據(jù)要發(fā)送,然后等待中斷。在圖4的發(fā)送程序中,同樣先判斷是否有數(shù)據(jù)要發(fā)送,若沒有則直接進(jìn)入接收部分[3]。4調(diào)試結(jié)果

為了驗(yàn)證上述方法的正確性,在ADSP2189系統(tǒng)中,以DSP壓縮系統(tǒng)為硬件環(huán)境,以VisualDSP++2.0為軟件環(huán)境分別采用串口和定時(shí)器的方法測(cè)試了數(shù)據(jù)傳輸。以定時(shí)器方式為例,設(shè)定波特率為9600,則TPERIOD和TCOUNT等于2603,TSCALE等于0。測(cè)試時(shí)將壓縮結(jié)果緩沖區(qū)DATA_OUT內(nèi)數(shù)據(jù)通過RS-232接口傳入PC機(jī),然后再由PC傳回DSP的接收緩沖區(qū)DATA_IN,通過在VisualDSP++編譯環(huán)境下設(shè)定PLOT選項(xiàng),得到如圖5所示的結(jié)果。圖中以輸出DATA_OUT為橫軸,以輸入DATA_IN為縱軸,如果輸入和輸出之間呈線性關(guān)系,則表明DSP和PC間通信無誤。由圖可以看出我們的數(shù)據(jù)傳輸完全正確。

這兩種方式都可以實(shí)現(xiàn)軟件的UART,但不同方法對(duì)系統(tǒng)資源占用要求不同。采用定時(shí)器方法時(shí),DSP必須時(shí)時(shí)檢測(cè)標(biāo)志位輸入管腳,每發(fā)送和接收一位數(shù)據(jù)就要調(diào)用3次中斷服務(wù)程序,導(dǎo)致處理器效率降低;采用DSP串口方法的好處是接收發(fā)送單獨(dú)處理,沒有定時(shí)器中斷,減少了不必要的中斷服務(wù)開銷,同時(shí)解放了定時(shí)器,它的缺點(diǎn)是控制寄存器的設(shè)置以及硬件連接相對(duì)復(fù)雜。在具體應(yīng)用中應(yīng)該從系統(tǒng)的角度出發(fā),選取合適的傳送方式。

5結(jié)論

主要討論了ADSP218X的同步串口在與計(jì)算機(jī)的異步串口通信過程中的軟件設(shè)計(jì)。本方法具有一定的普遍意義,基本思想可以同樣適用于其他同步串口與異步串口之間的通信。

參考文獻(xiàn):

[1]李建華,等.RS-232和調(diào)制解調(diào)器通信編程[M].人民郵電出版社.

[2]ADSP-218xDSPHardwareReference,F(xiàn)irstEdition,AnalogDevice[M],2022.

[3]ADSP-218xDSPInstruc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論