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