McBSP在數(shù)據(jù)傳輸中的應(yīng)用
DSP芯片主要完成數(shù)字信號(hào)的采集、存儲(chǔ)、處理與傳輸?shù)娜蝿?wù)。多通道緩沖串口(McBSP)是最重要的數(shù)據(jù)采集和傳輸設(shè)備之一,是一種典型的可配置外設(shè),通過對其接口參數(shù)和數(shù)據(jù)格式的編程設(shè)定,可以實(shí)現(xiàn)對具有同步串行口的編碼器等外部IC芯片的無縫連接。這里將以TMS32 0VC5502DSP和TLV1572模數(shù)轉(zhuǎn)換器為例介紹DSP的多通道緩沖串口(McBSP)在數(shù)據(jù)傳輸中的應(yīng)用。
本文引用地址:http://cafeforensic.com/article/257783.htm1 硬件構(gòu)成
1.1 TMSC320VC5502
DSP芯片采用TI公司的TMS 320 VC5502,它是一種高性能、低功耗、定點(diǎn)數(shù)字信號(hào)處理器,它主要有以下特點(diǎn):
1)最高主頻能夠達(dá)到300 MHz,指令周期3.33ns。
2)包括1條32位的程序數(shù)據(jù)總線,5條16位的數(shù)據(jù)總線,6條24位的程序地址總線。這種并行的多總線結(jié)構(gòu),使CPU能夠在一個(gè)CPU周期內(nèi)完成一個(gè)32程序代碼的讀、3個(gè)16位數(shù)據(jù)的讀和2個(gè)16位數(shù)據(jù)的寫。5502還擁有2個(gè)乘法累加器,每個(gè)累加器都能夠在一個(gè)周期內(nèi)執(zhí)行一個(gè)17x17 bit的乘法運(yùn)算。
3)包含28kx16bit的片上ROM,包括64kBytes的DARAM(8塊,每塊4 kx16 bit),192 kBytes的SARAM(24塊,每塊4 kx16 bit)、64 kBytes的一等待片上ROM(32 kx16 bit)和最大可尋址8 Mx16 bit的外部存儲(chǔ)空間。16位的外部存儲(chǔ)器擴(kuò)展接口可實(shí)現(xiàn)與異步存儲(chǔ)器件(SRAM、EPROM)和同步存儲(chǔ)器件(SDRAM)的無縫連接。
4)片上外設(shè)包含1個(gè)六通道的直接存儲(chǔ)器訪問控制器(DMA)、3個(gè)多通道緩沖串行口(McBSP)、1個(gè)可編程的數(shù)字鎖相環(huán)時(shí)鐘發(fā)生器、2個(gè)64 bit通用定時(shí)器、1個(gè)64 bit看門狗定時(shí)器、1個(gè)64 bit DSP/BIOS計(jì)數(shù)器、8 bit/16 bit主機(jī)接口(HPI)、7個(gè)通用輸入輸出口(GPIO)和1個(gè)外部標(biāo)志輸出引腳(XF)、1個(gè)內(nèi)部集成電路模塊(I2C)、1個(gè)通用異步接收/發(fā)送器(UART)、1個(gè)符合IEEEl941.1標(biāo)準(zhǔn)(JTAG)邊界掃描邏輯的JTAG仿真接口。
1.2 McBSP(多通道緩沖串口)
TMS320VC5502 DSP提供了3個(gè)高速多通道同步緩沖串口(McBSP),使得TMS320VC5502DSP可以直接和其它C55xDSP、多媒體數(shù)字信號(hào)編解碼器以及系統(tǒng)中的其它設(shè)備接口。該串口提供了全雙工通信;雙緩沖數(shù)據(jù)寄存器,允許傳送連續(xù)的數(shù)據(jù)流;獨(dú)立的收發(fā)時(shí)鐘和幀信號(hào):可與工業(yè)標(biāo)準(zhǔn)的編解碼器、模擬接口芯片及其它串行A/D、D/A芯片直接連接;可用128個(gè)通道進(jìn)行收發(fā);具有可編程的采樣率發(fā)生器;能夠向CPU發(fā)送中斷,向DMA控制器發(fā)送DMA事件;可設(shè)置幀同步脈沖和時(shí)鐘信號(hào)的極性;傳輸?shù)淖珠L可以是8位、12位、16位、20位、24位或32位;可將McBSP引腳配置為通用輸入輸出引腳。McBSP結(jié)構(gòu)框圖如圖1所示,可以分為數(shù)據(jù)通道和控制通道2部分。
數(shù)據(jù)發(fā)送引腳DX負(fù)責(zé)數(shù)據(jù)的發(fā)送,數(shù)據(jù)接收引腳DR負(fù)責(zé)數(shù)據(jù)的接收,發(fā)送時(shí)鐘引腳CLKX、接收時(shí)鐘引腳CLKR、發(fā)送幀同步引腳FSX和接收幀同步引腳FSR提供串行時(shí)鐘和控制信號(hào)。CPU和DMA控制器通過外設(shè)總線與McBSP進(jìn)行通信。當(dāng)發(fā)送數(shù)據(jù)時(shí),CPU和DMA將數(shù)據(jù)寫入數(shù)據(jù)發(fā)送寄存器(DXR1,DXR2),接著復(fù)制到發(fā)送移位寄存器(XSR1,XSR2),通過發(fā)送移位寄存器輸出至DX引腳。同樣當(dāng)接收數(shù)據(jù)時(shí),DR引腳上接收到的數(shù)據(jù)先移位到接收移位寄存器(RSR1,RSR2),接著復(fù)制到接收緩沖寄存器(RBR1,RBR2),RBR再將數(shù)據(jù)復(fù)制到數(shù)據(jù)接收寄存器(DRR1,DRR2)中,并通知串口事件通知CPU或DMA讀取數(shù)據(jù)。這種多級(jí)緩沖方式使得片內(nèi)數(shù)據(jù)通信和串行數(shù)據(jù)通信能夠同時(shí)進(jìn)行。
1.3 TLV1572
A/D轉(zhuǎn)換器用TI公司的10位高速串行逐次逼進(jìn)型A/D轉(zhuǎn)換器,采用5 V單電壓供電,最高采樣速率可達(dá)1.25 Msps,可與TMS320系列DSP通過McBSP(Multi-channel Buffered Serial Ports,多通道緩沖串口)實(shí)現(xiàn)無縫連接。TLV1572的采樣速率最高可達(dá)1.25 Msps、10位分辨率、單電壓供電是3~5V、低功耗(3 V時(shí)8 mW、5 V時(shí)25 mW)、自動(dòng)節(jié)電功能(最大電流為10μA)、具有內(nèi)部采樣保持功能。TLV1572的功能模塊圖如圖2所示。
TLV1572有2種工作模式,即DSP模式和微控制器模式,這2種工作模式是由它的P3(幀同步輸入信號(hào))的電平?jīng)Q定的,F(xiàn)S引腳連接電源VCC,一直為高電平,則TLV1572工作在微控制器工作模式下;如果TLV1572在DSP工作模式下,則FS引腳或者由TMS320 DSP的MCBSP的幀同步信號(hào)(FSR)提供,或者由系統(tǒng)外部引入。
1.4 TLV1572與DSP的McBSP緩沖串口的連接
TLV1572與TMS320VC5502 DSP串口連接如圖3所示。
TLV1572工作在DSP模式下,其典型時(shí)序圖如圖4所示。
在DSP模式下工作時(shí),當(dāng)TLV1572 A/D的片選信號(hào)/CS變低時(shí),F(xiàn)S也必須為低,而且為了確保TLV1572的DSP模式的正確鎖定,F(xiàn)S信號(hào)電平要被檢測2次,一次是在/CS下降沿時(shí)檢測FS電平(也就是對于/CS下降沿的FS建立時(shí)間,最小6 ns),一次是緊接其后的相對于/CS下降沿來說的一個(gè)內(nèi)部延遲檢測(也就是對于/CS下降沿的FS保持時(shí)間,最小為9 ns)。綜上所述,為了保證TLV1572能正確鎖定在DSP模式下,在/CS變低后FS要至少維持15ns的時(shí)間。
在確保TLV1572工作在DSP模式下后,也就是FS的低電平至少要維持15 ns的時(shí)間后,TLV1572 A/D要在每一個(gè)SCLK時(shí)鐘信號(hào)的下降沿檢測FS的電平狀態(tài),一旦FS變高,說明A/D進(jìn)入復(fù)位狀態(tài),之后當(dāng)FS變低時(shí),TLV1572等待DSP鎖存第一個(gè)0。這里,F(xiàn)S的上升沿對于對SCLK的下降沿來說有一個(gè)FS的建立時(shí)間(至少10 ns),然后相對應(yīng)這個(gè)SCLK的下降沿,F(xiàn)S有一個(gè)保持時(shí)間(至少要4 ns)。滿足至少上述的14 ns后,F(xiàn)S才能變低。
采樣從FS變低后的第一個(gè)SCLK的下降沿開始,一直到輸出第6個(gè)0時(shí)的那個(gè)SCLK的上升沿,在這個(gè)SCLK的上升沿,開始轉(zhuǎn)換并輸出相應(yīng)轉(zhuǎn)換的數(shù)據(jù),這里有1 bit的延遲,而DSP對轉(zhuǎn)換數(shù)據(jù)的采樣發(fā)生在SCLK的下降沿。經(jīng)TLV1572轉(zhuǎn)換的數(shù)據(jù)前導(dǎo)有6個(gè)0,之后才是轉(zhuǎn)換的由高位到低位的10 bit數(shù)據(jù)輸出。也就是說TLV1572對一次的數(shù)據(jù)完整轉(zhuǎn)換需要16個(gè)SCLK。如果在第16個(gè)SCLK時(shí)鐘的下降沿檢測到FS變高了,則在即后的下一個(gè)SCLK,也就是第17個(gè)SCLK開始下一次的新的數(shù)據(jù)的采樣與轉(zhuǎn)換,這樣就實(shí)現(xiàn)了TLV1572的對數(shù)據(jù)的連續(xù)轉(zhuǎn)換。
2 軟件構(gòu)成
當(dāng)所傳輸?shù)男盘?hào)從TLV1572的模擬信號(hào)輸入端輸入后,TLV1572再對輸入的信號(hào)進(jìn)行采樣,并將采樣后的數(shù)據(jù)傳送到DSP。程序主要包括初始化DSP和緩沖串口McBSP,將McBSP配置為接收器,包括復(fù)位MeBSP的接收器,根據(jù)需要對McBSP的寄存器編程,使能接收器,啟動(dòng)A/D,采集數(shù)據(jù)并存儲(chǔ),其流程如圖5所示。
在對DSP的McBSP進(jìn)行操作時(shí),McBSP的內(nèi)部采樣率發(fā)生器的輸出時(shí)鐘CLKG驅(qū)動(dòng)給CLKR,CLKR同時(shí)提供給A/D的SCLK。而McBSP的采樣率發(fā)生器的時(shí)鐘源(CLKSRG)由CPU提供的,對CPU時(shí)鐘進(jìn)行分頻以產(chǎn)生CLKG。由于CPU的時(shí)鐘極性總為正,因此CPU時(shí)鐘信號(hào)的上升沿產(chǎn)生CLKG的上升沿。對采樣率發(fā)生器的寄存器編程后,要等待2個(gè)CLKSRG(時(shí)鐘源)周期以確保內(nèi)部同步。當(dāng)采樣率發(fā)生器使能后,要等待2個(gè)CLKC周期,以保證采樣率發(fā)生器穩(wěn)定工作。在CLKSRG的下一個(gè)上升沿,CLKRG變?yōu)?,啟動(dòng)頻率如式(1)所示的時(shí)鐘。
幀同步信號(hào)(內(nèi)部FSR),對于串口來說,都是內(nèi)部信號(hào),都是高電平有效。如果將串口配置成外部幀同步(FSR輸入到McBSP),且FSRP=1(接收幀同步信號(hào)低有效),則外部低電平有效的信號(hào)在送給接收器(內(nèi)部FSR)之前要做轉(zhuǎn)換。當(dāng)McBSP的FSR為輸入時(shí),McBSP在CLKR的下降沿檢測這個(gè)FSR信號(hào)。到達(dá)DR引腳的接收數(shù)據(jù),也在內(nèi)部CLKR的下降沿采樣。這里的內(nèi)部時(shí)鐘CLKR是由采樣率發(fā)生器時(shí)鐘(CLKG)驅(qū)動(dòng),內(nèi)部送給McBSP。
接收器可以在時(shí)鐘的上升沿可靠的對輸入數(shù)據(jù)進(jìn)行采樣。接收時(shí)鐘的極性(CLKRP)設(shè)置成采樣接受數(shù)據(jù)所用的沿。注意:McBSP總是在內(nèi)部CLKR的下降沿對數(shù)據(jù)采樣,因此如果CLKRP=1,且選擇內(nèi)部時(shí)鐘(CLKRM=1),則內(nèi)部下降沿觸發(fā)的時(shí)鐘,在送給CLKR引腳輸出之前,要轉(zhuǎn)換成上升沿觸發(fā)的時(shí)鐘。
DSP的CPU或DMA控制器與McBSP的通信,是通過16 bit的寄存器訪問內(nèi)部的外設(shè)總線來實(shí)現(xiàn)的。McBSP的數(shù)據(jù)接收寄存器2個(gè),DRR1和DRR 2,當(dāng)字長小于16 bit時(shí)使用DRR1。把McBSP要傳輸?shù)拇凶侄x成為16 bit(剛好是10 bit A/D轉(zhuǎn)換數(shù)據(jù)出的6個(gè)0+10 bit二進(jìn)制數(shù)),并自行定義McBSP傳輸數(shù)據(jù)的一幀就是16 bit。這樣McBSP接收完一幀數(shù)據(jù)后,就觸發(fā)中斷,進(jìn)行這一幀數(shù)據(jù)的存儲(chǔ),然后進(jìn)行下一幀數(shù)據(jù)的采樣轉(zhuǎn)換與傳輸,直到數(shù)據(jù)傳輸采集完畢。
下面是MeBSP配置成接收器要做的操作。
1)全局設(shè)置包括設(shè)置接收器的引腳為McBSP的引腳、使能或者禁止數(shù)字回環(huán)模式、使能或者禁止時(shí)鐘停止模式、使能或者禁止多通道選擇模式。
2)設(shè)置數(shù)據(jù)即選擇每個(gè)接收幀是單段還是雙段、設(shè)置接收字長、設(shè)置幀長度、使用或者禁止忽略接收幀同步功能、設(shè)置接收壓縮擴(kuò)展模式、設(shè)置接收數(shù)據(jù)延遲、設(shè)置接收數(shù)據(jù)擴(kuò)展和校驗(yàn)?zāi)J?、設(shè)置接收中斷模式。
3)幀同步設(shè)置 即設(shè)置接收幀同步模式、設(shè)置接收幀同步極性、設(shè)置采樣率發(fā)生器幀同步周期和脈沖寬度。
4)時(shí)鐘設(shè)置即設(shè)置接收時(shí)鐘模式、設(shè)置接收時(shí)鐘極性、設(shè)置采樣率發(fā)生器的時(shí)鐘分頻值、設(shè)置采樣率發(fā)生器的時(shí)鐘同步方式、設(shè)置采樣率發(fā)生器的時(shí)鐘模式(選擇輸入時(shí)鐘)、設(shè)置采樣率發(fā)生器輸入時(shí)鐘的極性。
調(diào)試程序所用的軟件是TI公司的Code Composer Studio(CCStudio),它是TI公司開發(fā)的專用于進(jìn)行TMS320系列DSP軟件設(shè)計(jì)的集成軟件開發(fā)環(huán)境。McBSP初始化程序如下:
3 結(jié)束語
本文以TMS320VC5502 DSP芯片與TLV1572模數(shù)轉(zhuǎn)換芯片為例,詳細(xì)討論了TLV1572與DSP的多通道緩沖串口(MeBSP)通信的硬件接口和軟件設(shè)計(jì)。其設(shè)計(jì)方案簡單易行,具有一定的通用性,根據(jù)需要可以在中斷服務(wù)子程序中嵌入適合的數(shù)據(jù)處理程序代碼,就可以構(gòu)成一個(gè)完整的數(shù)據(jù)采集與傳輸程序。本文中采集的數(shù)據(jù)是存放在TMS320VC5502芯片內(nèi)部的RAM中,由于TMS320VC55x DSP的外部存儲(chǔ)器接口(EMIF)支持8bi-t、16 bit、32 bit數(shù)據(jù)的訪問,并為異步存儲(chǔ)器、同步突發(fā)SRAM、同步DRAM提供了無縫接口,所以如果系統(tǒng)所要采集的數(shù)據(jù)量很大,也可以通過EMIF接口外擴(kuò)存儲(chǔ)器。
評(píng)論