SPI接口是TMS320C6713的多緩沖串口的一種用法。多緩沖串口McBSP中的傳輸時(shí)鐘具有停止模式控制選項(xiàng),這就保證了McBSP與SPI協(xié)議的兼容性。
SPI接口是一種4根信號(hào)線的接口協(xié)議,包含串行數(shù)據(jù)輸入(MISO)、串行信號(hào)輸出(MOSI)、移位時(shí)鐘(SCK)和從設(shè)備使能(SS)信號(hào)。SPI是由主設(shè)備時(shí)鐘控制數(shù)據(jù)的傳輸過(guò)程,在從設(shè)備使能的情況下,主設(shè)備內(nèi)部的數(shù)據(jù)寄存器與從設(shè)備內(nèi)部的數(shù)據(jù)寄存器構(gòu)成一個(gè)環(huán)形寄存器,在主設(shè)備的時(shí)鐘信號(hào)控制下,主設(shè)備內(nèi)部的數(shù)據(jù)寄存器依次傳入從設(shè)備的數(shù)據(jù)寄存器中,而與此同時(shí),從設(shè)備內(nèi)部的數(shù)據(jù)寄存器的數(shù)據(jù)依次傳入主設(shè)備的數(shù)據(jù)寄存器中。在這個(gè)通訊過(guò)程中,完全由主設(shè)備的時(shí)鐘控制傳輸速度。
TMS320C6713的SPI接口既支持主設(shè)備模式,也支持從設(shè)備模式。
TMS320C6713用SPI作為主控端時(shí),由McBSP內(nèi)部的采樣時(shí)鐘發(fā)生器產(chǎn)生時(shí)鐘CLKx和從設(shè)備使 能信號(hào)SS,如圖2所示。
這時(shí)的主時(shí)鐘頻率由SRGR寄存器中的CLKSM位來(lái)選擇時(shí)鐘源,由CLKG DV設(shè)置時(shí)鐘的頻率。這時(shí)的時(shí)鐘頻率需要受到從設(shè)備的最高接收時(shí)鐘的限制,一般帶SPI接口的單片機(jī)SPI口的最高速度低于4 Mb/s,因此需要使用較低的通訊速率,例如2 Mb/s。
TMS320C6713的McBSP串口作為SPI接口時(shí),需要進(jìn)行初始化。其時(shí)序如圖3所示。
在實(shí)際通訊中,若DSP的McBSP作為SPI的主設(shè)備,則需要分兩次向單片機(jī)發(fā)命令,首先發(fā)控 制命令,然后再發(fā)取數(shù)命令,便于單片機(jī)有足夠的時(shí)間響應(yīng)命令。McBSP作為主設(shè)備定時(shí)的時(shí)序如圖4所示。單片機(jī)平時(shí)按照DSP的命令顯示數(shù)據(jù),并執(zhí)行鍵盤(pán)控制功能,若收到DSP的命令,則立即停止當(dāng)前的工作,快速響應(yīng)DSP的命令,減少DSP的等待時(shí)間。
在實(shí)際應(yīng)用中,為了控制傳輸速度,需要設(shè)置CLKx的時(shí)鐘源取自CPU時(shí)鐘,并且CLKGDV=95或是更大。由于分頻后的時(shí)鐘占空比為50%,這樣高電平寬度=低電平寬度。這樣CLKx時(shí)鐘周期 T為:
T=(1+CLKGDV)×P(1)
其中P是CPU時(shí)鐘周期。若CPU取200 MHz,則P=5 ns,這時(shí)CLKGDV=95,則T=480 ns,相應(yīng)的位傳輸速度為2.1 Mb/s,這是一個(gè)較低的速度。由于CLKGDV取值范圍在0~255之間,這時(shí)SPI的傳輸速度可以在0.78~200 Mb/s之間變化。
另外,還需要注意,DSP的McBSP接口的電壓在3.3 VDC,而外部單片機(jī)一般在5 VDC左右,需要考慮適當(dāng)?shù)碾娖睫D(zhuǎn)換接口,例如SN54LVT16373。
若是擴(kuò)展鍵盤(pán)、LED顯示器等低速外部接口,可以通過(guò)單片機(jī)實(shí)現(xiàn),若是構(gòu)造RS232接口與PC機(jī)通訊時(shí),可以采用MAX3100接口。
DSP通過(guò)MAX3100與PC機(jī)或其他設(shè)備之間的異步數(shù)據(jù)傳輸?shù)脑砣鐖D5所示。由于DSP的接口電源為3.3 VDC,而MAX3100也可以工作在3.3 VDC,因此可以直接接口,這是需要采用一款可以工作于3.3 VDC的RS232接口芯片,SP3232可以工作在3.3 VDC,接口電平符合設(shè)計(jì)要求。
MAX3100工作前需要做初始化。在用MAX3100構(gòu)成RS232接口,與PC機(jī)之間異步數(shù)據(jù)傳輸時(shí),一般采用8 b模式,不傳校驗(yàn)位,通訊速度取9 600~115.2 kb/s,接收FIFO打開(kāi),部分中斷打開(kāi)。當(dāng)對(duì)MAX3100初始化后,MAX3100的UART發(fā)送部分接收SPI數(shù)據(jù),按照配置參數(shù),加上起始位和停止位,并按要求的波特率通過(guò)TX按異步串行發(fā)送出去,當(dāng)發(fā)送緩沖器空后,可以產(chǎn)生中斷;MAX3100的UART接收部分按照配置參數(shù),以16倍波特率時(shí)鐘采樣接收端,若發(fā)現(xiàn)接收端由高變低作為起始位,然后繼續(xù)以16倍波特率時(shí)鐘采樣接收端,按第7,8,9次的結(jié)果確定數(shù)據(jù),并根據(jù)設(shè)置參數(shù),每字節(jié)讀取7~9位數(shù)據(jù),最后根據(jù)停止位停止。MAX3100的接收數(shù)據(jù)進(jìn)入接收FIFO中,若達(dá)到8 B可以產(chǎn)生中斷,便于DSP快速獲取數(shù)據(jù)。
4GPIO接口擴(kuò)展低速外圍接口
TMS320C6713的通用IO(GPIO)共有16個(gè),可以用指令直接控制輸入和輸出。GPIO由通用IO 使能寄存器GPEN(GPIO Enable Register)和通用IO方向寄存器GPDIR(GPIO Direction Re gister)控制。使用GPIO前需要對(duì)通用IO使能寄存器GPEN和通用IO方向寄存器GPDIR初始化。
對(duì)GPIO的控制是通過(guò)對(duì)GPIO的數(shù)值寄存器GPVAL的讀寫(xiě)實(shí)現(xiàn)的。一旦設(shè)置好GPEN寄存器和GPD IR寄存器,DSP就可以直接利用GPIO控制外圍的低速I(mǎi)O接口了。但是這樣操作需要DSP用軟件搜索來(lái)實(shí)現(xiàn)IO控制,DSP的開(kāi)銷太大,特別是對(duì)鍵盤(pán)、LED等需要經(jīng)常操作的低速接口更是如此。解決辦法是增加一片89S52單片機(jī)(見(jiàn)圖6)。這時(shí)可以將16個(gè)GPIO口分為8 b數(shù)據(jù)線和必要的2根聯(lián)絡(luò)線。鍵盤(pán)和LED顯示可以用單片機(jī)來(lái)控制,僅僅需要DSP將需要顯示的數(shù)據(jù)通過(guò)接口傳給單片機(jī),或是單片機(jī)將鍵盤(pán)數(shù)據(jù)傳送給DSP,這樣DSP的負(fù)擔(dān)大大降低。在單片機(jī)一側(cè),可以用中斷實(shí)現(xiàn)快速接口,而DSP這一側(cè)目前仍然采用搜索/等待的辦法,對(duì)需要高速計(jì)算的DSP來(lái)說(shuō),接口負(fù)擔(dān)仍然較重。
為了降低DSP用GPIO控制外設(shè)的開(kāi)銷,TMS320C6713專門(mén)針對(duì)GPIO設(shè)計(jì)了中斷和EDMA,如圖7所示。
在GPIO中,僅僅GPIO 0和GPIO 4~7具有中斷功能,同時(shí)所有GPIO都有EDMA功能。這可以通過(guò)對(duì)GPIO相應(yīng)寄存器設(shè)置實(shí)現(xiàn)。由于采用簡(jiǎn)單的接口設(shè)計(jì),因此DSP的GPIO采用中斷方式更簡(jiǎn)單一些,對(duì)高速數(shù)據(jù)計(jì)算影響也不是很大。將DSP與單片機(jī)的通訊協(xié)議設(shè)計(jì)為:
幀頭: 8位特殊字符;命令: 8位字符;幀長(zhǎng)度: 8位字符;數(shù)據(jù)1: 8位字符;…;數(shù)據(jù) N: 8位字符;CRC校驗(yàn): 8位字符。
在實(shí)際通訊中,當(dāng)DSP向單片機(jī)發(fā)命令時(shí),先發(fā)數(shù)據(jù),然后發(fā)字節(jié)同步信號(hào)到單片機(jī)的INT0 腳(中斷),這樣單片機(jī)采用中斷方式快速接收處理。規(guī)定通訊間隙為1~10 ms,這樣對(duì)兩 者的要求都不高。一旦啟動(dòng)一幀通訊后,在DSP內(nèi)部采用定時(shí)器的EDMA實(shí)現(xiàn)定時(shí)發(fā)送,不必再消耗DSP的資源。
在單片機(jī)向DSP發(fā)命令時(shí),單片機(jī)先發(fā)數(shù)據(jù),然后發(fā)字節(jié)同步信號(hào)到DSP的GPIO腳(中斷),這樣DSP采用中斷方式快速接收處理,計(jì)算資源消耗很少。
5結(jié)語(yǔ)
采用上述兩種方法解決了在進(jìn)行網(wǎng)絡(luò)傳輸音視頻圖像時(shí)所需的數(shù)據(jù)壓縮和轉(zhuǎn)換運(yùn)算必須 采用高速DSP芯片,而在處理其他事務(wù)性管理時(shí)運(yùn)算小耗時(shí)大,因此選用單片機(jī)為宜的多CPU 處理器系統(tǒng)中的接口同步問(wèn)題。研究?jī)烧叩奶攸c(diǎn)后,可視通訊需求選擇其中一種方法。本方 案選擇了SPI串行口的方法與單片機(jī)和PC進(jìn)行通訊,取得了較好的效果。