工業(yè)現場CAN總線技術在航天領域的應用
圖5 SJA1000寫時序(Intel模式)
按照SJA1000的數據手冊,確保SJA1000的讀寫正確,如下的時序參數必須滿足:
l tW(AL):必須保證ALE的時間,最小不能小于8ns;
l tLLRL/tLLWL:讀寫時ALE無效到讀寫信號有效的時間,最小不能小于10ns;
l tLCRL/tLCWL:片選信號有效后讀寫信號有效的時間,最小不能小于0,即片選有效必須出現在讀寫信號有效前;
l tW(R):讀信號有效寬度,最小不能小于40ns;
l tW(R):寫信號有效寬度,最小不能小于20ns;
l tWHLH:寫信號無效到下一次ALE有效的時間,最小不能小于15ns;
l th(AL-A):在ALE為低電平后地址應該保持時間,最小不能小于2ns。
CPU和CAN總線接口采用地址直接映射。接口時序設計重點是接口控制邏輯必須產生符合上述關鍵參數的讀寫時序。如果簡單的按照ALE=not nADS方法處理,不滿足要求時序關系,這在調試過程中已經得到驗證。為此,在設計中采用了FPGA技術,以求很好地解決CAN總線與CPU的接口問題。圖6描述了通過VHDL編寫實現接口電路的狀態(tài)轉移圖和FPGA設計產生的讀寫CAN總線時序,其中時鐘周期不低于67ns,該時序滿足SJA1000要求。
圖6 CAN總線接口時序設計的狀態(tài)轉移和時序
6 CAN總線通訊軟件的設計
雙冗余總線結構的通訊軟件主要由初始化、接收和發(fā)送三個模塊組成,控制流圖見圖7。在程序設計時采用了SJA1000的Basic模式,初始化中需要對BUS0和BUS1分別進行初始化,包括SJA1000的控制寄存器、接收代碼寄存器、接收屏蔽寄存器、總線時序寄存器等。
圖 7 CAN總線通訊軟件的控制流圖
發(fā)送模塊采用主動發(fā)送方式,BUS0為優(yōu)先通訊通道,若BUS0通道狀態(tài)不正常,則啟動BUS1通道進行通訊,并對BUS0通道進行初始化以備下次通訊時使用。
接收模塊采用中斷接收方式,為了保證接收到的數據被實時處理,CAN總線的接收中斷被設置為高優(yōu)先級中斷。在接收中斷中首先判斷接收通道是BUS0還是BUS1,然后從接收通道按數據長度進行數據接收。
7 結束語
CAN總線技術的諸多優(yōu)點如實時性好,通信速率高,抗干擾能力強,低廉的價格等使它不僅廣泛應用于工業(yè)控制領域,而且開始向航天領域進軍。其COTS工業(yè)級器件SJA1000經過飛行也得到了驗證,CAN總線適宜航天應用的特點得到了充分的展示和飛行驗證。
評論