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