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