CAN總線與RS485總線的通訊接口設計
CAN總線轉換到RS-485總線的程序如下:
CAN-RS485_TRANSITION:
MOV DPTR, #SR; 狀態寄存器
MOVX A, @DPTR;
JNB ACC.0, CAN_QUIT;
是否接收到信息,無數據則退出轉換程序
CAN-RS485_HANDLE:
MOV DPTR, #CANR ;接收緩沖區首地址
MOVX A , @DPTR ;接收幀的格式
JNB ACC.6 , RECEIVE _ FRAME
;RTR=1則報文是遠程請求幀
LCALL TRANSMIT_ DATA
;發送對方請求的數據
LJMP CAN_QUIT ;退出轉換程序
RECEIVE_ FRAME: MOVX A, @DPTR;
ANL A, #0FH;
ADD A, #05H
;獲得接收數據的長度
MOV R7, A
MOV R0,#43H
;設定MCU接收數據緩沖區
DATAFRAME: MOVX A, @DPTR
;接收數據
MOV @R0, A
LCALL RS485_SEND ;將有效信息通過MAX485轉發到RS-485總線
INC DPTR
INC R0
DJNZ R7, DATAFRAME ;判定接收是否結束
RECOUT: MOV DPTR, #CMR
MOV A, #04H
;開釋接收緩沖區
MOVX @DPTR, A
CAN_QUIT: RET ;退出轉換程序

4 結束語
CAN總線是當前應用最為廣泛的現場總線之一,而RS-485總線則是常用的串行總線,兩者之間的相互轉換具有很高的實用價值。本文設計的CAN-RS485通訊接口電路能夠很好地解決這兩種串行數據總線之間的相互轉換題目,并已成功應用于某地區的智能交通控制系統。


評論