新聞中心

        EEPW首頁 > 元件/連接器 > 設計應用 > CAN總線與RS-485總線的通信接口設計

        CAN總線與RS-485總線的通信接口設計

        ——
        作者: 時間:2010-01-25 來源:電子產品世界 收藏

          1簡介

        本文引用地址:http://www.104case.com/article/103905.htm

          (ControllerAreaNetwork)是由德國Bosch公司于20世紀80年代專門為汽車電子控制系統(tǒng)開發(fā)的一種串行數據通信協(xié)議,特別適合應用于分布式控制或實時控制領域。它的應用范圍遍及高速網絡和低成本的分布式控制系統(tǒng)。具有以下特點:

          (1)無破壞的依據優(yōu)先權的仲裁;

          (2)多主站點依據優(yōu)先級進行總線訪問;

          (3)嚴格的錯誤檢測和界定;

          (4)支持遠程數據請求;

          (5)借助接收濾波的多地址幀傳送;

          (6)通信介質多樣,組合方式靈活;

          (7)全系統(tǒng)數據兼容,系統(tǒng)靈活;

          (8)最遠傳輸距離為10Km(總線傳輸速率為5kbps),最大傳輸速率為1Mbps(總線傳輸距離為40m)。

          標準是美國EIA(電子工業(yè)聯(lián)合會)公布的串行通信協(xié)議。它比RS-232C標準信號傳輸距離長、速度快、抗干擾性能好,廣泛應用于各種工業(yè)、樓宇、能源等領域。在實際應用中,許多工業(yè)控制設備(如PLC)都帶有接口。因此,有必要設計CAN總線與RS-485總線的通信接口電路。

          2硬件設計

          整個通信接口電路由單片機AT89C52、CAN控制器SJA1000、CAN收發(fā)器82C250、高速光電耦合器6N137和RS-485收發(fā)器MAX485組成。如圖1所示。單片機AT89C52主要完成SJA1000的初始化,及CAN總線和RS-485總線之間的數據通信任務。SJA1000是CAN控制器82C200的替代產品。它主要由下列功能模塊構成:接口管理邏輯、發(fā)送緩沖器、接收緩沖器、接收過濾器、位流處理器、位時序邏輯和錯誤管理邏輯。除了與82C200兼容之外,它增加了許多新功能:PeliCAN工作模式、讀/寫訪問的錯誤計數器、標準和擴展結構信息的接收和發(fā)送、可編程的錯誤限制報警、只聽模式和仲裁丟失中斷。單片機對SJA1000內部寄存器的控制是以訪問外部寄存器的方式進行的。CAN收發(fā)器82C250是CAN總線控制器和物理總線之間的接口,主要負責提供對總線的差分發(fā)送能力和對CAN控制器的差分接收能力。它的引腳8(RS)控制3種不同的工作方式的選擇:待機、斜率控制和高速。

          (1)給RS接上高電平,則82C250以低電流待機方式工作;

          (2)若RS通過連接電阻接地,則進入斜率控制方式,該方式可以通過改變電阻的阻值來調節(jié)斜率,適用于低速和較短的總線長度的應用場合;

          (3)如果RS接地,就選擇了高速工作方式。高速光電耦合器6N137實現了CAN控制器和收發(fā)器之間的電氣隔離,增強了系統(tǒng)的穩(wěn)定性和抗干擾能力。RS-485收發(fā)器MAX485是一種差分平衡型的小功率收發(fā)器,包含一個驅動器和一個接收器,使用單+5V電源供電,專門用于TTL協(xié)議(即通用于各型CPU的通信協(xié)議)和485標準之間的相互轉換,使微控制器可以利用RS-485串行通信協(xié)議直接進行串行通信。

          整個轉換過程可分為:CAN總線轉換到RS-485總線和RS-485總線轉換到CAN總線。CAN總線轉換到RS-485總線的流程如下:微控制器接收到CAN總線節(jié)點發(fā)送的報文,根據CAN總線規(guī)定的數據格式取出報文的有用信息,然后由微控制器通過MAX485將信息發(fā)送到RS-485總線。而RS-485總線轉換到CAN總線則是上述流程的逆過程。

          

         

          3軟件設計

          軟件設計的主要任務是實現數據和控制命令在CAN總線網絡和RS-485總線之間的傳輸。它主要包括RS-485和CAN接口的初始化程序、報文發(fā)送和接收程序、中斷服務程序和錯誤處理程序等。其中,SJA1000的初始化程序是軟件設計中的難點,需要完成各種工作參數的設置。其中,控制寄存器用來改變CAN控制器的行為,包括進入復位狀態(tài),激活不同類型的中斷源,如接收中斷、發(fā)送中斷和數據溢出中斷等。驗收代碼寄存器和驗收屏蔽寄存器共同作用定義了能被節(jié)點所接收報文的條件:所收信息的標識符的相應位與驗收代碼寄存器驗收碼的相應位相等。驗收屏蔽寄存器的作用是確定驗收碼的哪些位對于驗收濾波是相關的或不相關的。總線時序寄存器0定義了波特率的預設值及同步跳轉寬度;總線時序寄存器1則定義了位周期的長度、采樣點的位置和采樣數目。輸出控制寄存器可以設置不同的輸出模式(如正常輸出模式、雙相輸出模式和時鐘輸出模式等)。時鐘分頻寄存器不僅可以控制SJA1000的輸出頻率及屏蔽CLKOUT引腳,而且還能夠對BasicCAN和PeliCAN模式進行選擇。具體的SJA1000初始化程序流程如圖2所示。

          CAN總線轉換到RS-485總線的程序如下:

          CAN-RS485_TR

          ANSITION:

          MOVDPTR,#SR;狀態(tài)寄存器

          MOVXA,@DPTR;

          JNBACC.0,CAN_QUIT;

          是否接收到信息,無數據則退出轉換程序

          CAN-RS485_HANDLE:

          MOVDPTR,#CANR;接收緩沖區(qū)首地址

          MOVXA,@DPTR;接收幀的格式

          JNBACC.6,RECEIVE_FRAME

          ;RTR=1則報文是遠程請求幀

          LCALLTRANSMIT_DATA

          ;發(fā)送對方請求的數據

          LJMPCAN_QUIT;退出轉換程序

          RECEIVE_FRAME:MOVXA,@DPTR;

          ANLA,#0FH;

          ADDA,#05H

          ;獲得接收數據的長度

          MOVR7,A

          MOVR0,#43H

          ;設定MCU接收數據緩沖區(qū)

          DATAFRAME:MOVXA,@DPTR

          ;接收數據

          MOV@R0,A

          LCALLRS485_SEND;將有效信息通過MAX485轉發(fā)到RS-485總線

          INCDPTR

          INCR0

          DJNZR7,DATAFRAME;判斷接收是否結束

          RECOUT:MOVDPTR,#CMR

          MOVA,#04H

          ;釋放接收緩沖區(qū)

          MOVX@DPTR,A

          CAN_QUIT:RET;退出轉換程序

          

         

          4結束語

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



        關鍵詞: CAN 總線 RS-485

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 泰来县| 芦溪县| 沾化县| 巩留县| 丽江市| 大港区| 庆城县| 利辛县| 海丰县| 永胜县| 九龙城区| 吉林市| 晴隆县| 乌鲁木齐县| 神木县| 维西| 恭城| 清原| 延川县| 道孚县| 敦煌市| 永顺县| 宿迁市| 侯马市| 泾阳县| 梅州市| 高碑店市| 勐海县| 霍山县| 班玛县| 祁东县| 衢州市| 宜兰市| 南康市| 阿拉尔市| 青冈县| 云浮市| 札达县| 西乌珠穆沁旗| 乌恰县| 葫芦岛市|