TMS320F240型DSP的SPI口的擴(kuò)展
以DSP之間的相互擴(kuò)展和擴(kuò)展串行EEPROM為例,討論了TI公司的TMS320F240型DSP的串行外設(shè)接口(SPI)模塊的功能擴(kuò)展。
關(guān)鍵詞:DSP,串行外設(shè)接口,功能擴(kuò)展
1 引 言
DSP芯片,也稱數(shù)字信號(hào)處理器,是一種特殊結(jié)構(gòu)的微處理器。DSP芯片內(nèi)部采用程序和數(shù)據(jù)分開的哈佛結(jié)構(gòu),具有專門的硬件乘法器,廣泛采用流水線操作,提供特殊的DSP指令,可以用來快速實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法。因此,DSP在計(jì)算密集的實(shí)時(shí)控制領(lǐng)域得到了日益廣泛的應(yīng)用。TMS320F240是目前應(yīng)用比較廣泛的一款定點(diǎn)DSP,它具有20MIPS的指令執(zhí)行速度,強(qiáng)大的內(nèi)部事件管理器、I/O端口和其他外圍設(shè)備。其中,串行外設(shè)接口(SPI)是一個(gè)高速同步串行輸入/輸出(I/O)端口,它允許一個(gè)具有可編程長度(1到8位)的串行位流,以可編程的位傳送速率從設(shè)備移入或移出。SPI通常用于DSP控制器和外部設(shè)備或其它控制器間的通訊。典型的應(yīng)用包括通過EEPROM、移位寄存器、顯示驅(qū)動(dòng)器和模數(shù)轉(zhuǎn)換器(ADC)等設(shè)備進(jìn)行外設(shè)擴(kuò)展。
對(duì)于某一控制任務(wù)需要多個(gè)DSP協(xié)同完成時(shí),DSP之間的數(shù)據(jù)交換將會(huì)很頻繁,此時(shí),我們就可以通過SPI口進(jìn)行DSP之間的高速數(shù)據(jù)交換,實(shí)現(xiàn)相互間的功能擴(kuò)展。這種模式的DSP之間的通訊,較通過串行通訊接口(SCI)進(jìn)行通訊時(shí),速率提高近一倍,而且它還可以通過控制寄存器的TALK位實(shí)現(xiàn)多個(gè)DSP之間的數(shù)據(jù)交換。當(dāng)系統(tǒng)需要預(yù)先從EEPROM讀出定值時(shí),也可以通過TMS320F240的SPI口進(jìn)行外設(shè)擴(kuò)展。
2 DSP之間的擴(kuò)展
在多個(gè)DSP構(gòu)成的串行通訊網(wǎng)絡(luò)中,DSP分為主模式DSP和從模式DSP。主模式DSP的數(shù)據(jù)在SPISIMO引腳上輸出并從SPISOMI上鎖存,從模式DSP的數(shù)據(jù)在SPISOMI引腳上輸出并從SPISIMO上鎖存。主模式SPI為整個(gè)網(wǎng)絡(luò)提供串行時(shí)鐘SPICLK,并通過寫入SPIDAT寄存器的數(shù)據(jù)啟動(dòng)SPICLK信號(hào)從而啟動(dòng)數(shù)據(jù)傳送,當(dāng)預(yù)先設(shè)定的1到8位串行位流傳送完畢后,SPICLK信號(hào)中止,傳送結(jié)束。對(duì)于從控制器和主控制器,數(shù)據(jù)在SPICLK的一個(gè)沿從移位寄存器移出,在負(fù)跳沿鎖存到移位寄存器。可以通過SPI的兩個(gè)時(shí)鐘模式位選擇四種不同的時(shí)鐘模式,使得兩個(gè)控制器的發(fā)送和接收同時(shí)進(jìn)行,由軟件決定數(shù)據(jù)是有意義的還是啞數(shù)據(jù)。當(dāng)清除從設(shè)備控制寄存器的TALK位時(shí),數(shù)據(jù)發(fā)送被禁止并且輸出線(SPISOMI)處于高阻態(tài)。這種情況下允許許多從設(shè)備在網(wǎng)絡(luò)上連在一起,但每次只有一個(gè)從設(shè)備被允許講。圖1是SPI用于兩個(gè)控制器(一個(gè)主控制器和一個(gè)從控制器)之間通訊的典型連接方式。
splk#0h,SPIPRI
;設(shè)置SPI中斷為高優(yōu)先級(jí)
splk#07h,SPICCR
;上升沿發(fā)送,有時(shí)延,字符長度為8
在程序初始化控制寄存器后,就可以按設(shè)定值進(jìn)行DSP之間的發(fā)送和接收,下面是主模式和從模式的SPI子程序代碼。
為了節(jié)省中斷資源,SPI一般采用查詢方式進(jìn)行數(shù)據(jù)收發(fā)。
3 擴(kuò)展EEPROM
在開發(fā)DSP系統(tǒng)時(shí),某些情況下會(huì)讀取或者存儲(chǔ)一些定值,這時(shí)我們就需要通過SPI接口擴(kuò)展EEPROM。具有SPI接口的串行EEPROM均可被TMS320F240直接邏輯擴(kuò)展,方便易行。
X5043是Xicor公司的最高時(shí)鐘速率為3.3MHz的4Kbits串行EEPROM,它與TMS320F240型DSP的連接如圖2所示。
其軟件設(shè)置如下:
設(shè)置各控制寄存器:
TMS320F240的SPI接口有可選擇的四種不同的時(shí)鐘模式,如何選擇時(shí)鐘模式是它與各種擴(kuò)展SPI接口器件實(shí)現(xiàn)時(shí)鐘同步的關(guān)鍵。X5043的數(shù)據(jù)在時(shí)鐘下降沿從SO引腳上輸出并在時(shí)鐘上升沿從SI引腳上鎖存。讀操作時(shí),在其從SI引腳輸入的最低位地址所對(duì)應(yīng)的時(shí)鐘下降沿,其SO引腳開始輸出數(shù)據(jù)。因此,作為主器件的DSP就選擇‘下降沿、無時(shí)延’的時(shí)鐘模式。在這種模式下,無操作時(shí)鐘時(shí),DSP的SPICLK引腳位高,當(dāng)該引腳由高變低時(shí),啟動(dòng)發(fā)送。
寫子程序如下:
[!--empirenews.page--]
[!--empirenews.page--]
由于X5043是一個(gè)半雙工器件,故,在WRITE子程序中從SPIBUF中讀出來的數(shù)據(jù)是無效的,同時(shí),在READ子程序中寫向SPIDAT的數(shù)據(jù)也是無效的,只起啟動(dòng)發(fā)送時(shí)鐘的作用。這一點(diǎn)不同于SPI,SPI之間的發(fā)送和接收是全雙工的,可以同時(shí)進(jìn)行。
4 SPI擴(kuò)展在功角測量系統(tǒng)中的應(yīng)用
發(fā)電機(jī)功角是電力系統(tǒng)運(yùn)行的關(guān)鍵狀態(tài)量,是電力系統(tǒng)能否穩(wěn)定運(yùn)行的重要標(biāo)志。功角測量系統(tǒng)就是將機(jī)端電壓整型后的方波信號(hào)前沿,減去代替空載電勢(shì)的轉(zhuǎn)子位置脈沖信號(hào)前沿,以獲得負(fù)載時(shí)的上述兩種信號(hào)的相位差值,再用空載時(shí)兩種信號(hào)的相位差減去負(fù)載時(shí)兩種信號(hào)的相位差,即得發(fā)電機(jī)的功角值。該系統(tǒng)具有很強(qiáng)的現(xiàn)實(shí)意義,其原理圖如圖3所示。
上述系統(tǒng)中,空載相位差是定值,一旦裝置安裝完畢,其值不變。而在實(shí)際的電力系統(tǒng)中,轉(zhuǎn)子的極對(duì)數(shù)比較多,這些空載相位差值就需要存在相應(yīng)的EEPROM里,以便讀取。所以,該系統(tǒng)就通過主芯片的SPI口進(jìn)行串行EEPROM的擴(kuò)展。在系統(tǒng)上電時(shí),DSP將初始的相位差值從EEPROM導(dǎo)入內(nèi)存,進(jìn)行相應(yīng)的計(jì)算后通過ISA總線將所得的功角值送入主控器。這里的EEPROM仍然采用的是X5043,其具體操作在上面第3節(jié)中已作過詳細(xì)的說明。
5 結(jié)束語
本文介紹了TMS320F240型定點(diǎn)DSP的SPI接口的功能擴(kuò)展,其一般方法同樣適用于其它具有SPI接口的DSP。多個(gè)DSP通過SPI口的相互擴(kuò)展可實(shí)現(xiàn)DSP之間的高速數(shù)據(jù)交換,通過SPI口擴(kuò)展EEPROM可實(shí)現(xiàn)DSP對(duì)定值的存取。某些其它的串行設(shè)備,比如高精度的串行A/D,串行數(shù)字電位器等,也可通過類似方法進(jìn)行擴(kuò)展。通過這些擴(kuò)展可以使DSP的功能變得更加強(qiáng)大,同時(shí),深入了解這些擴(kuò)展方法對(duì)于開發(fā)DSP控制裝置有著重要的意義。