0 引 言
近年來,隨著DSP技術(shù)的普及、高性能DSP芯片的出現(xiàn),DSP已越來越多地被廣大的工程師所接受,并越來越廣泛地被應(yīng)用于各個(gè)領(lǐng)域,例如:語音處理、圖像處理、模式識(shí)別及工業(yè)控制等,并且已日益顯示出其巨大的優(yōu)越性。DSP是利用專門或通用的數(shù)字信號(hào)處理芯片,以數(shù)字計(jì)算的方法對(duì)信號(hào)進(jìn)行處理,具有處理速度快、靈活、精確、抗干擾能力強(qiáng)、體積小及可靠性高等優(yōu)點(diǎn),滿足了對(duì)信號(hào)快速、精確、實(shí)時(shí)處理及控制的要求。
在語音處理、圖像處理、模式識(shí)別及工業(yè)控制中,少不了對(duì)必要的數(shù)據(jù)進(jìn)行存儲(chǔ)保護(hù)。如果存儲(chǔ)在內(nèi)外RAM之中,掉電數(shù)據(jù)就丟失,起不到保護(hù)數(shù)據(jù)的作用;存儲(chǔ)在FLASH中,由于對(duì)FLASH進(jìn)行數(shù)據(jù)寫入時(shí),要先進(jìn)行擦除操作,然后才能整頁的寫入,如果每次寫入的數(shù)據(jù)比較少,這樣就要占據(jù)很大的CPU時(shí)間,操作比較麻煩。
針對(duì)這些缺點(diǎn),根據(jù)多年的研發(fā)經(jīng)驗(yàn),結(jié)合實(shí)際,提出一種基于SPI方式的外部數(shù)據(jù)擴(kuò)展方式。本文所用到的數(shù)據(jù)存儲(chǔ)器是Xicor公司生產(chǎn)的帶有塊鎖保護(hù)的4 Kb CMOS串行E2PROM X5043(接口符合SPI協(xié)議)。該器件利用Xicor專有的直接寫入晶片,提供最小為10萬次擦寫和最少100年的數(shù)據(jù)保存期。數(shù)據(jù)寫入之前不需要外部進(jìn)行擦除操作,芯片本身自動(dòng)完成。同時(shí)X5043還具有上電復(fù)位、看門狗定時(shí)器、電源電壓監(jiān)控四種常用的功能。這種組合不但降低了系統(tǒng)成本、減少了電路板空間,還增加了系統(tǒng)可靠性。
1 SPI協(xié)議
圖1是典型的SPI協(xié)議。SPI協(xié)議采用主從設(shè)置,相互連接的設(shè)備中一個(gè)作為主設(shè)備,其他的設(shè)備作為從設(shè)備。接口連線主要包括4條信號(hào)線:串行數(shù)據(jù)輸入信號(hào)線,(Master In Slave Out,MIS());串行數(shù)據(jù)輸出信號(hào)線(Master Out Slave In,MOSI);移位時(shí)鐘信號(hào)線(SCK);從設(shè)備片選信號(hào)線(SS)。
2 VC5402的多通道緩存串行口(McBSP)
2.1 McBSP的功能特點(diǎn)
TMS320V5402是TI生產(chǎn)的第二代低功耗定點(diǎn)數(shù)字信號(hào)處理器,提供了兩個(gè)高速、全雙工、多通道緩存串行口,每個(gè)串行口可以支持128通道,速度達(dá)100 Mb/s。McBSP是在標(biāo)準(zhǔn)串行接口的基礎(chǔ)之上對(duì)功能進(jìn)行擴(kuò)展,因此,具有與標(biāo)準(zhǔn)串行接口相同的基本功能:
(1)全雙工通信;
(2)擁有兩級(jí)緩沖發(fā)送和三級(jí)緩沖接收數(shù)據(jù)寄存器,允許連續(xù)數(shù)據(jù)流傳輸;
(3)為數(shù)據(jù)發(fā)送和接收提供獨(dú)立的幀同步脈沖和時(shí)鐘信號(hào);
(4)能夠與工業(yè)標(biāo)準(zhǔn)的解碼器、模擬接口芯片(AICs)和其他串行A/D和D/A設(shè)備直接連接;
(5)支持外部移位時(shí)鐘或內(nèi)部頻率可編程移位時(shí)鐘。
此外,McBSP還具有的其他特殊功能,本文所用到的有:
(1)串行字長(zhǎng)度可選,包括8,12,16,20,24和32位可選。
(2)進(jìn)行8位數(shù)據(jù)傳輸時(shí),可以選擇LSB或MSB為起始位;
(3)幀同步脈沖和時(shí)鐘信號(hào)的極性可編程;
(4)內(nèi)部時(shí)鐘和幀同步脈沖的產(chǎn)生可編程,具有相當(dāng)大的靈活性。
2.2 McBSP與X5043的接口設(shè)計(jì)
X5043的外部接口符號(hào)SPI協(xié)議規(guī)范。DIP封裝的X5043有8個(gè)管腳組成,各個(gè)管腳功能如下所示:
CS:片選端,當(dāng)CS為低時(shí),X5043選中。在任何操作之前,需要先在CS上有一次由高至低的跳變;
SO:串行數(shù)據(jù)輸出端,當(dāng)讀周期時(shí),數(shù)據(jù)從該引腳移出;
SI:串行數(shù)據(jù)輸入引腳,所要寫入存儲(chǔ)器的操作碼,字節(jié)地址和數(shù)據(jù)都從該引腳輸入;
WP:當(dāng)WP為低時(shí),向X5043的非易失性寫被禁止,但器件其他功能正常,為高時(shí),所用功能都正常;
SCK:串行時(shí)鐘端。串行時(shí)鐘控制串行總線數(shù)據(jù)輸入和輸出的時(shí)序。
McBSP的時(shí)鐘停止模式與SPI協(xié)議兼容。當(dāng)McBSP處于時(shí)鐘停止模式時(shí),發(fā)送器和接收器是內(nèi)部同步的,因此可以將McBSP作為SPI主設(shè)備或從設(shè)備。當(dāng)設(shè)置McBSP為主設(shè)備時(shí),發(fā)送端輸出信號(hào)DXR就作為SPI協(xié)議的MOSI信號(hào),接收端輸入信號(hào)DRR就作為SPI協(xié)議的MISO信號(hào)。發(fā)送幀同步脈沖信號(hào)FSX作為從設(shè)備片選信號(hào)SS,而發(fā)送時(shí)鐘信號(hào)CLKX就與SPI協(xié)議的串行時(shí)鐘信號(hào)SCK相對(duì)應(yīng)。由于接收時(shí)鐘信號(hào)CLKR和接收幀同步脈沖信號(hào)FSR與發(fā)送端的相應(yīng)部分CLKX和FSX在內(nèi)部相互連接,因此這些信號(hào)不用于時(shí)鐘停止模式。該設(shè)計(jì)中McBSP作為主設(shè)備使用。X5043與McBSP的接口電路如圖2所示。
3 軟件設(shè)計(jì)
軟件設(shè)計(jì)主要包括DSP相關(guān)寄存器的配置,X5043狀態(tài)寄存器的配置,以及X5043的讀寫操作。
3.1 寄存器的配置
DSP端需要配置的寄存器主要包括CLKMD,SPCR[1,2],XCR[1,2],RCR[1,2],SRGR[1,2],PCR等。
其中CLKMD主要配置DSP的時(shí)鐘;XCR[1,2],RCR[1,2]主要配置接收和發(fā)送數(shù)據(jù)的幀的個(gè)數(shù)、幀長(zhǎng)以及字長(zhǎng)。根據(jù)對(duì)X5043操作的不同,發(fā)送和接收的字長(zhǎng)也不同,但是針對(duì)某一種操作,接收和發(fā)送字長(zhǎng)是一樣的;SRGR[1,2]主要是對(duì)CLKGDV,CLKSM,F(xiàn)SGM三個(gè)位域的配置;SPCR[1,2]主要是對(duì)CLKSTP位域的配置,因?yàn)樗鼪Q定了McBSP是采用時(shí)鐘停止模式(SPI模式)還是正常模式;引腳控制寄存器(PCR)配置了各個(gè)引腳的工作狀態(tài)。
值得注意的是在配置McBSP的寄存器之前,首先要使發(fā)送、接收和分頻器復(fù)位,配置完SPCR[1,2],XCR[1,2],RCR[1,2],PCR后,使分頻器置位,等待兩個(gè)時(shí)鐘周期,在配置SRGR[1,2],然后使發(fā)送和接收置位在等待兩個(gè)時(shí)鐘周期,這時(shí)才可以進(jìn)行其他操作。
3.2 X5043的讀寫操作
X5043的讀操作包括讀狀態(tài)寄存器、讀存儲(chǔ)器陣列(即讀數(shù)據(jù))。寫操作包括寫使能/寫禁止、寫狀態(tài)寄存器、寫存儲(chǔ)器陣列(寫數(shù)據(jù))。X5043的指令組如表1所示。
下面主要講一下對(duì)單個(gè)數(shù)據(jù)的讀寫操作。
3.2.1 寫一個(gè)字節(jié)操作
寫操作之前必須寫使能,即向X5043先發(fā)送數(shù)據(jù)(06H)。首先將CS拉低,然后向器件輸入WREN指令,在將CS拉高。再次將CS拉低并輸入WRITE指令,后面跟隨8位地址,在后面需要寫入的數(shù)據(jù)。WRITE指令的位3是地址位A8,它選擇是陣列的高半部分還是低半部分。如果CS在WREN和WRITE之間沒變?yōu)楦?,則WRITE指令被忽略。寫操作時(shí)序如圖3所示。
在字節(jié)的最后一個(gè)位0寫入后,CS必須被拉高。如果它在其他時(shí)間拉高,寫操作不完全。在存儲(chǔ)器寫操作之后跟隨一次非易失性寫操作。可以通過讀狀態(tài)寄存器的WIP位來判斷非易失性寫是否結(jié)束。只有非易失性寫結(jié)束之后才可以進(jìn)行下次寫操作。
值得注意的是McBSP在SPI模式下,只有數(shù)據(jù)發(fā)送的時(shí)候CLKX端才有時(shí)鐘輸出,F(xiàn)SX端才輸出低電平的幀同步信號(hào)。因?yàn)樵诎l(fā)送寫使能和寫數(shù)據(jù)指令之間要求CS(即FSX)變高,所以DSP要分兩次把數(shù)據(jù)送給X5043。且這兩次發(fā)送的字長(zhǎng)不同(寫使能一個(gè)字節(jié),寫數(shù)據(jù)三個(gè)字節(jié)),所以在發(fā)送之前需要重新配置McBSP。
3.2.2 讀一個(gè)字節(jié)操作
當(dāng)從E2PROM存儲(chǔ)器陣列讀數(shù)據(jù)時(shí),首先CS通過FSX引腳拉低為低電平,然后送READ指令到器件,后面跟隨8位地址,在后面就是發(fā)送8位無意義的數(shù)據(jù)(目的是為了繼續(xù)產(chǎn)生時(shí)鐘信號(hào))。發(fā)送結(jié)束后,所選地址中的數(shù)據(jù)從SO端移出到McBSP的數(shù)據(jù)接收引腳。讀操作時(shí)序如圖4所示。
讀操作和寫操作一樣,都是發(fā)送三個(gè)字節(jié)的數(shù)據(jù),所以McBSP的串口字長(zhǎng)要配置為24位。讀操作發(fā)出以后,通過查看SPCR1寄存器的RRDY位來判斷接收數(shù)據(jù)是否完成,若RRDY為1,則讀DRR寄存器獲取數(shù)據(jù)。
3.3 值得注意的地方
無論是寫使能/寫禁止、寫狀態(tài)寄存器還是寫數(shù)據(jù),當(dāng)McBSP相應(yīng)數(shù)據(jù)發(fā)送結(jié)束后,McBSP的時(shí)鐘和幀同步信號(hào)都將變?yōu)闊o效狀態(tài),這種無效狀態(tài)要保持至少10μs之上(否則數(shù)據(jù)將無法正確寫入),然后在讀取X5043的狀態(tài)寄存器,判斷非易失性寫是否結(jié)束,結(jié)束了才可以進(jìn)行其他操作。
4 結(jié) 語
通過SPI接口外接E2PROM,簡(jiǎn)化了硬件電路,提高了系統(tǒng)的可靠性和開發(fā)難度,具有很實(shí)際的應(yīng)用價(jià)值。