CAN匯流排/RS232介面的設計

來源:互聯網
上載者:User
 

CAN匯流排/RS232介面的設計
[日期:2008-11-6] 來源:國外電子元器件  作者:趙傑,劉偉靜,孫慧佳,李楠 [字型: ]

 

1 引言
    CAN,全稱為“Controller Area Network”,即控制器區域網路,是一種國際標準的,高性價的現場匯流排,在自動控制領域具有重要作用。CAN是一種多主方式的串列通訊匯流排,具有較高的即時效能,因此,廣泛應用於汽車工業、航空工業、工業控制、安全防護等領域。
    由於PC機無CAN介面,因此,PC機與智能節點構成CAN匯流排系統可採用RS232/CAN、並口/CAN、USB/CAN、ISA卡/CAN以及PCI卡/CAN方式接入。而採用RS232/CAN接入時,需採用CAN/RS232介面標準轉換。針對這一問題,提出了CAN/RS232智能電平轉換器設計方案,以SJAl000作為獨立CAN控制器,完成CAN通訊協定。並在SJAl000與磁碟機之間串連高速光耦,從而實現匯流排各點間的電氣隔離。

2 硬體電路設計
    CAN/RS232智能電平轉換器硬體電路主要由微處理器AT89C52、獨立CAN通訊控制器SJAl000、CAN匯流排磁碟機82C250、高速光電耦合器6N136、TTL電平與RS232電平轉換器ICL232、LED數位管顯示電路以及為SJAl000提供初始地址的撥碼電路組成,其結構框圖1所示。

3 CAN控制器SJAlOOO
    SJAl000是一款獨立CAN控制器,應用於移動目標和工業局域地區網控制領域。該器件是Philips公司CAN控制器PCA82C200的替代產品。SJAl000具有兩種工作模式,本設計採用PeliCAN工作模式。
3.1 SJAl000與AT89C52的介面設計
    SJAl000與AT89C52的介面電路2所示。AT89C52負責sJAl000的初始化,控制SJAl000來實現資料的接收和發送等通訊任務。SJAl000的ADO~AD7串連至AT89C52的P0連接埠,CS串連至AT89C52的P3.4(AT89C52的定時器T0不起作用)。當P3.4為0時,AT89C52選中SJAl000,並通過訪問外部RAM低地址區實現P0連接埠的讀/寫操作,從而對SJAl000相應寄存器執行讀/寫操作。SJAl000的RD、WR、ALE引腳分別與AT89C52的對應引腳相連,SJAl000的INT引腳接AT89C52的INTO引腳。AT89C52還可通過中斷方式訪問SJAl000。為了增強系統的穩定性,採用雙晶體振蕩器,AT89C52採用11.059 2 MHz的晶體振蕩器,SJAl000選用16 MHz的晶體振蕩器。複位電路可選用DSl232,其輸出引腳ARES與SRES分別與AT89C5l的RESET引腳和SJAl000的RESET引腳相連。

3.2 SJAl000與磁碟機的串連
    SJAl000的TX0、RX0引腳不是直接與82C250的TXD、RXD引腳相連,而是通過高速光耦6N136與82C250相連,這樣可增強CAN匯流排節點的抗幹擾能力,從而實現匯流排各節點間電氣隔離。高速光耦6N136用於保護SJAl000型CAN匯流排控制器,該光耦兩側採用5 V的DC—DC電源.可使器件的VCC與VCCl完全隔離,提高系統的抗幹擾能力以及節點的穩定性和安全性。圖3所示為SJAl000與CAN磁碟機82C250的串連電路。

4 軟體程式設計
   
系統軟體程式設計包括:主程式、CAN節點初始化子程式、RS232報文發送子程式、RS232報文接收子程式、CAN報文接收子程式以及CAN報文發送子程式。其主程式流程圖4所示。

4.1 CAN節點初始化
    獨立CAN控制器SJAl000必須在上電或硬體複位後設定CAN通訊。上電後SJAl000的17引腳得到一個複位電平(低電平),使其進入複位元模式。初始化包括設定工作方式、接收濾波方式、接收屏蔽寄存器和接收代碼寄存器、傳輸速率參數和中斷允許寄存器。初始化設定完成後,SJAl000則進入工作狀態,開始執行通訊任務。
    SJAl000寄存器初始化,首先要將其模式寄存器(MOD)複位元模式位置為l,再通過時鐘分頻寄存器(CDR)選擇PeliCAN工作模式,同時關閉時鐘輸出(CLOCKOUT);通過中斷允許寄存器(IER)開啟發送中斷、溢出中斷和錯誤警告中斷;向接收屏蔽寄存器(AMR)和接收代碼(ACR)寄存器賦初值;通過匯流排定時寄存器0 (BTR0)和匯流排定時寄存器1(BTRl)設定傳輸速率;為輸出控制寄存器(OCR)賦初值;通過接收緩衝器起始地址寄存器(RBSA)來設定接收緩衝器FIF0的起始地址;清除發送錯誤計數寄存器(TXERR);清除錯誤碼捕捉寄存器(ECC),最後再次選擇方式寄存器(MOD),設定單濾波,並返回工作狀態。
4.2 RS232報文發送
    AT89C52內含一組全雙工系統串列傳輸介面,可同時接收或傳輸外部資料,其訊號為TTL電平。由於與標準的RS232介面不相容,須加電平準轉換IC才可與RS232相連。AT89C52串列發送及接收資料均是通過特殊功能暫存器SBUF完成,在設定通訊協議模式後,通過指令“MOV SUBF,A”就可將儲存在SBUF暫存器內的資料由引腳TXD串列傳輸。
4.3 RS232報文接收
    AT89C52串列傳輸控制暫存器是由特殊控制暫存器SCON控制,SCON設定串列傳輸工作模式,發送接收時其第9位及發送接收時中斷指示工作。通過指令“MOV A,SBUF”則將外界串列訊號經由RXD引腳讀入,並轉換成並列資料存入暫存器A。
4.4 CAN報文發送
    根據CAN協議,報文傳輸是由獨立CAN控制器SJAl000完成。主控制器必須將要發送的資料按特定格式組合成一幀報文傳輸到發送緩衝器,將命令寄存器中的“發送請求”置1,然後啟動SJAl000發送即可。
4.5 CAN報文接收
    CAN報文接收子程式負責節點的報文接收和其他情況的處理。接收子程式在結構上要比發送子程式複雜一些,因為在接收報文時,要對同處理諸如匯流排關閉、錯誤判警、接收溢出等情況。SJAl000報文接收和發送有兩種方式:中斷方式和查詢方式。查詢方式應禁止接收中斷使能,而中斷方式一般用於即時性要求較高的情況。
    在中斷方式下,如果SJAl000已接收一個報文,而且報文通過驗收濾波器並存入接收FIFO,則產生一個接收中斷。因此主控制器立刻工作,將收到的報文發送到報文儲存空間中,再通過置位命令寄存器的相應標誌“RRB”發送一個釋放接收緩衝器命令。接收FIF0裡的更多報文將產生一個新的接收中斷,因此不能將所有接收FIF0中的有效資訊在一個中斷周期內讀出。接收緩衝器釋放後,SJAl000會檢查狀態寄存器中接收緩衝器狀態(RBS)是否有更多報文,所有有效資訊都將迴圈讀出。

5 結語
   
本系統設計採用SJAl000作為CAN獨立控制器,以CAN/RS232智能電平轉換器為執行個體,論述了CAN匯流排與單片機之間的介面串連,對CAN匯流排的實際應用具有一定的參考價值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.