3 軟件設(shè)計
軟件設(shè)計的主要任務(wù)是實現(xiàn)數(shù)據(jù)和控制命令在CAN總線網(wǎng)絡(luò)和RS-485總線之間的傳輸。它主要包括RS-485和CAN接口的初始化程序、報文發(fā)送和接收程序、中斷服務(wù)程序和錯誤處理程序等。其中,SJA1000的初始化程序是軟件設(shè)計中的難點,需要完成各種工作參數(shù)的設(shè)置。其中,控制寄存器用來改變CAN控制器的行為,包括進(jìn)入復(fù)位狀態(tài),激活不同類型的中斷源,如接收中斷、發(fā)送中斷和數(shù)據(jù)溢出中斷等。驗收代碼寄存器和驗收屏蔽寄存器共同作用定義了能被節(jié)點所接收報文的條件:所收信息的標(biāo)識符的相應(yīng)位與驗收代碼寄存器驗收碼的相應(yīng)位相等。 驗收屏蔽寄存器的作用是確定驗收碼的哪些位對于驗收濾波是相關(guān)的或不相關(guān)的??偩€時序寄存器0定義了波特率的預(yù)設(shè)值及同步跳轉(zhuǎn)寬度;總線時序寄存器1則定義了位周期的長度、采樣點的位置和采樣數(shù)目。輸出控制寄存器可以設(shè)置不同的輸出模式(如正常輸出模式、雙相輸出模式和時鐘輸出模式等)。時鐘分頻寄存器不僅可以控制SJA1000的輸出頻率及屏蔽CLKOUT引腳,而且還能夠?qū)asic CAN和Peli CAN模式進(jìn)行選擇。具體的SJA1000初始化程序流程如圖2所示。
CAN總線轉(zhuǎn)換到RS-485總線的程序如下:
CAN-RS485_TR
ANSITION:
MOV DPTR, #SR; 狀態(tài)寄存器
MOVX A, @DPTR;
JNB ACC.0, CAN_QUIT;
是否接收到信息,無數(shù)據(jù)則退出轉(zhuǎn)換程序
CAN-RS485_HANDLE:
MOV DPTR, #CANR ;接收緩沖區(qū)首地址
MOVX A , @DPTR ;接收幀的格式
JNB ACC.6 , RECEIVE _ FRAME
;RTR=1則報文是遠(yuǎn)程請求幀
LCALL TRANSMIT_ DATA
;發(fā)送對方請求的數(shù)據(jù)
LJMP CAN_QUIT ;退出轉(zhuǎn)換程序
RECEIVE_ FRAME: MOVX A, @DPTR;
ANL A, #0FH;
ADD A, #05H
;獲得接收數(shù)據(jù)的長度
MOV R7, A
MOV R0,#43H
;設(shè)定MCU接收數(shù)據(jù)緩沖區(qū)
DATAFRAME: MOVX A, @DPTR
;接收數(shù)據(jù)
MOV @R0, A
LCALL RS485_SEND ;將有效信息通過MAX485轉(zhuǎn)發(fā)到RS-485總線
INC DPTR
INC R0
DJNZ R7, DATAFRAME ;判斷接收是否結(jié)束
RECOUT: MOV DPTR, #CMR
MOV A, #04H
;釋放接收緩沖區(qū)
MOVX @DPTR, A
CAN_QUIT: RET ;退出轉(zhuǎn)換程序
4 結(jié)束語
CAN總線是當(dāng)前應(yīng)用最為廣泛的現(xiàn)場總線之一,而RS-485總線則是常用的串行總線,兩者之間的相互轉(zhuǎn)換具有很高的實用價值。本文設(shè)計的CAN-RS485通信接口電路能夠很好地解決這兩種串行數(shù)據(jù)總線之間的相互轉(zhuǎn)換問題,并已成功應(yīng)用于某地區(qū)的智能交通控制系統(tǒng)。
CAN總線首先在汽車上得到了廣泛應(yīng)用,之后又在工業(yè)生產(chǎn)領(lǐng)域有了很大發(fā)展,那么面對不同的應(yīng)用場景和工況,如何選擇合適的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)慢慢成為一個讓人頭疼的問題。在這篇文章中,我將重點介紹用于驅(qū)動這些總線電壓的 CAN 驅(qū)動器...
關(guān)鍵字: CAN總線 CAN總線拓?fù)?/a>今天,小編將在這篇文章中為大家?guī)碇悄軅鞲衅鞯挠嘘P(guān)報道,通過閱讀這篇文章,大家可以對智能傳感器具備清晰的認(rèn)識,主要內(nèi)容如下。
關(guān)鍵字: 智能傳感器 物聯(lián)網(wǎng) 通信接口大家好,我是小麥。最近在調(diào)試一個CAN總線的設(shè)備遇到一些問題,簡單總結(jié)一下。本文會對CAN總線進(jìn)行簡單介紹,CAN的硬件鏈路層,協(xié)議層,以及調(diào)試的一些心得。目錄什么是CAN總線?物理層差分信號連接方式CAN節(jié)點CAN協(xié)議...
關(guān)鍵字: CAN總線大家好,我是小麥。最近在調(diào)試一個CAN總線的設(shè)備時遇到了一些問題,在此簡單總結(jié)一下。本文將對CAN總線進(jìn)行簡單介紹,包括CAN的硬件鏈路層、協(xié)議層,以及調(diào)試的一些心得。目錄什么是CAN總線?物理層差分信號連接方式CAN節(jié)...
關(guān)鍵字: CAN總線摘 要 :視頻監(jiān)控系統(tǒng)是計算機(jī)應(yīng)用中的重要領(lǐng)域之一。數(shù)字化攝像頭網(wǎng)絡(luò)化之后,監(jiān)控系統(tǒng)正在不斷引入新的功能,為使現(xiàn)有監(jiān)控系統(tǒng)能更好地應(yīng)對復(fù)雜環(huán)境,滿足不同監(jiān)控要求,就需要追加新功能,在系統(tǒng)架構(gòu)與設(shè)計上進(jìn)行調(diào)整。因此,如何將...
關(guān)鍵字: 智能監(jiān)控 系統(tǒng)架構(gòu) 模塊化設(shè)計 接口設(shè)計 數(shù)據(jù)傳輸 深度相機(jī)