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