基于CPLD的DSP多SPI端口通信設(shè)計(jì)
2.3 DSP與LTC6903的接口配置
由于LTC6903芯片本身具有SPI接口,需要在DSP的程序中設(shè)置相應(yīng)的SPI寄存器。LTC6903采用上升沿接收,且接收時(shí)高位在前,所以需要DSP設(shè)置為下降沿傳輸,傳輸時(shí)高位在前。在傳輸?shù)倪^(guò)程中,在脈沖信號(hào)的下降沿?cái)?shù)據(jù)發(fā)生變化,傳輸數(shù)據(jù);在脈沖信號(hào)的上升沿?cái)?shù)據(jù)穩(wěn)定,便于LTC26903鎖存數(shù)據(jù),傳輸時(shí)序如圖6 所示。從圖中可以看出,所要傳輸?shù)臄?shù)據(jù)是十六進(jìn)制數(shù)019A,下降沿?cái)?shù)據(jù)發(fā)生變化,上升沿?cái)?shù)據(jù)穩(wěn)定,傳輸16位數(shù)據(jù),有16個(gè)脈沖。實(shí)驗(yàn)結(jié)果表明,DSP 配置是與LTC26903的SPI接口工作時(shí)序相匹配的。
3 DSP中SPl的開(kāi)發(fā)過(guò)程
SPI端口數(shù)據(jù)傳輸?shù)奶攸c(diǎn)是:主設(shè)備的時(shí)鐘信號(hào)出現(xiàn)與否決定數(shù)據(jù)傳輸?shù)拈_(kāi)始,一旦檢測(cè)到時(shí)鐘信號(hào)即開(kāi)始傳輸,時(shí)鐘信號(hào)無(wú)效后傳輸結(jié)束。這期間,從設(shè)備使能時(shí)鐘信號(hào)的起停狀態(tài)很重要[2]。 DSP56F801的SPI端口的時(shí)鐘信號(hào)起停狀態(tài)如表1所列。在設(shè)計(jì)中設(shè)置的SPI控制寄存器的CPOL和CPLA位是“11”。ScLK空閑時(shí)為高電平,傳輸中數(shù)據(jù)變化發(fā)生在下降沿,穩(wěn)定在上升沿。從圖2可看出實(shí)現(xiàn)了與CPLD中的移位鎖存電路的匹配,傳輸正確。SPI端口協(xié)議要求系統(tǒng)上電復(fù)位后,從機(jī)先于主機(jī)開(kāi)始工作。如果從機(jī)在主機(jī)之后開(kāi)始工作,就有可能丟掉部分時(shí)鐘信號(hào),使得從機(jī)并不是從數(shù)據(jù)的第一位開(kāi)始接收,造成數(shù)據(jù)流的不同步??赏ㄟ^(guò)硬件延時(shí)或軟件延時(shí)的方法,來(lái)確保從機(jī)先于主機(jī)工作口[2]。本設(shè)計(jì)采用軟件延時(shí)的辦法來(lái)實(shí)現(xiàn)數(shù)據(jù)流的同步。這個(gè)延時(shí)由兩部分組成,一部分是DSP串行輸出數(shù)據(jù)的時(shí)間延時(shí),另外一部分就是后續(xù)數(shù)字電路中的延時(shí)。延時(shí)的具體計(jì)算過(guò)程如下:數(shù)據(jù)傳輸時(shí)使用的時(shí)鐘信號(hào)是對(duì)總線時(shí)鐘的2分頻,當(dāng)DSP的主頻是60 MHz時(shí),總線時(shí)鐘頻率是30MHz,對(duì)它進(jìn)行2分頻,可以計(jì)算出SCLK的周期是66.6ns(實(shí)際所測(cè)出的周期是78.2 ns)。另外通過(guò)測(cè)試得到PwM電路的延時(shí)最長(zhǎng)時(shí)間是23.6 ns,鎖存器的最大延時(shí)是7.6 ns,移位寄存器的最大延時(shí)是3.0 ns。由上述對(duì)CPLD數(shù)字電路的延時(shí)和對(duì)SCLK周期的測(cè)試,就可以得到這樣一個(gè)結(jié)論:設(shè)PwM電路的延時(shí)時(shí)間為t1、鎖存器的延時(shí)時(shí)間為t2、移位寄存器的延時(shí)時(shí)間為t3,SCLK的時(shí)鐘周期是Tc,在SPI傳輸?shù)倪^(guò)程中,整個(gè)電路的延時(shí)t可以這樣計(jì)算:
由于數(shù)字電路傳輸中存在這樣的延時(shí),所以在寫(xiě)DSP程序時(shí),需要加入一定的延時(shí)。此實(shí)驗(yàn)中加入的延時(shí)是2μs,可以實(shí)現(xiàn)可靠傳輸。
4 實(shí)驗(yàn)結(jié)果
本設(shè)計(jì)采用全數(shù)字結(jié)構(gòu),易于用CPLD實(shí)現(xiàn)。以 EPM7256為目標(biāo)芯片,設(shè)計(jì)并實(shí)現(xiàn)了正確的數(shù)據(jù)傳輸。當(dāng)DSP56F801輸出的十六進(jìn)制參數(shù)分別為頻率字DBOE,相位字0403,A相的占空比字 04CE,B相的占空比字04CD時(shí),波形輸出如圖7、圖8所示。圖7給出了信號(hào)發(fā)生器A相輸出信號(hào)的實(shí)測(cè)波形,信號(hào)占空比調(diào)節(jié)為20%;圖8給出了A相輸出信號(hào)1和B相輸出信號(hào)1的實(shí)測(cè)波形,兩相信號(hào)相位差調(diào)節(jié)為常用的90。。該實(shí)驗(yàn)結(jié)果表明,參數(shù)傳輸正確,波形輸出良好。
結(jié)語(yǔ)
SPI通信方法具有硬件連接簡(jiǎn)單、使用方便等優(yōu)點(diǎn),應(yīng)用廣泛。采取硬件和軟件相結(jié)合的措施,可以確保SPI通信中數(shù)據(jù)的同步,實(shí)現(xiàn)可靠通信。本文給出了DSP多SPI端口通信的實(shí)際與實(shí)現(xiàn)過(guò)程,討論了其中的關(guān)鍵技術(shù)問(wèn)題。SPI多端口通信方法基于CPLD實(shí)現(xiàn),易移植,易于實(shí)現(xiàn)功能擴(kuò)展,可廣泛應(yīng)用于各種采用SPI通信方式的自動(dòng)化裝置。
評(píng)論