CAN/RS232接口卡的設計及實現(xiàn)方法
控制器局域網(wǎng)(Controller Area Network,CAN)屬于現(xiàn)場總線的范疇,其總線規(guī)范已被ISO國際標準化組織制定為國際標準,并被公認為是最有前途的現(xiàn)場總線之一。CAN總線廣泛應用于控制系統(tǒng)中的各檢測和執(zhí)行機構之間的數(shù)據(jù)通信。因為CAN總線數(shù)據(jù)的傳輸和處理都由節(jié)點的單片機完成。這樣就使設計者和觀察者沒有辦法以比較直觀的方式掌握總線的運行情況。
本文引用地址:http://m.butianyuan.cn/article/157543.htm現(xiàn)在市場上主要有兩種CAN的接口卡,使用PCI總線和使用USB接口。前者具有傳輸速度快的特點,但卻要占用一個計算機的插槽,并且設計上十分困難;后者的傳輸速度也很快,且價格較便宜,但要花費很大的精力進行USB的固件開發(fā)和維護,并要編寫復雜的驅動程序。根據(jù)此,需要設計一種能夠方便讀取CAN總線數(shù)據(jù),并通過RS 232串行口將數(shù)據(jù)送給PC機處理和顯示的接口卡;此外還需對其串行傳輸?shù)膮f(xié)議進行加強,以使能有效地降低傳輸過程中出現(xiàn)的錯誤。
1 接口卡的硬件設計
硬件部分主要包括主控制器、CAN總線控制器、CAN總線收發(fā)器以及與計算機的RS 232通信接口芯片等。系統(tǒng)的總體結構如圖1所示。主控制器通過CAN總線接口接收和緩存數(shù)據(jù)。根據(jù)PC機的命令進行選擇性的數(shù)據(jù)傳輸。
1.1 與CAN總線接口
如圖2所示,接口卡的控制器選用Atmel公司的AT89S51,該單片機的引腳和功能與8051兼容,并且內部含有4 KB的FLASH ROM,支持在系統(tǒng)編程(ISP),這樣可以很方便地將應用程序下載到單片機里。
CAN總線控制器選用Philips公司生產的SJA1000,該芯片是PCA82C200CAN控制器的替代品,而且新增加了一種PeliCAN工作模式,能夠支持CAN 2.0B協(xié)議。它還支持錯誤中斷、報警限制、驗收濾波器擴展和自接收請求等功能。在系統(tǒng)中,將SJA1000的中斷輸出引腳INT接到單片機的中斷輸入引腳,這樣可以在接收數(shù)據(jù)或者總線錯誤時產生中斷,由控制器進行相應的處理。SJA1000的片選CS端接單片機的P2.7引腳,這樣SJA1000的地址就確定為7F00H~7FFFH。
選用芯片82C250作為CAN控制器和物理總線間的驅動接口,可以提供對總線的差動發(fā)送能力和對CAN控制器的差動接收能力,其最高速可達1 Mb/s。由于實際系統(tǒng)中存在干擾,故增加高速光隔6N137,以起到隔離的作用。電氣接口很簡單,有CANH和CANL兩根線,用以完成CAN的數(shù)據(jù)傳輸。在CAN總線的兩端有一個120Ω的電阻,其作用為匹配總線阻抗,用于提高數(shù)據(jù)通信的抗干擾性及可靠性。具體電路如圖2所示。
1.2 與RS 232接口
RS 232標準是美國電子工業(yè)聯(lián)合會(EIA)制定的一種串行物理接口標準,它適合于數(shù)據(jù)傳輸率在O~20 000 b/s范圍內的通信,目前廣泛用于計算機與終端或外設之間的近端連接。實際工作時,應保證電平在5~15V之間。所以為了與單片機進行通信。必須對其電平進行轉換。現(xiàn)在常用的轉換芯片是MAX232。MAX232內部有電壓倍增電路和轉換電路,只需5V電源便可實現(xiàn)TTL電平與RS 232電平的轉換,使用十分方便。串口接口電路如圖3所示。
2 接口卡的軟件設計
2.1 RS 232接口軟件設計
單片機與PC端的數(shù)據(jù)通信需要設計一個通信協(xié)議,采用同步通信方式進行。將通信協(xié)議分成命令幀、應答幀和數(shù)據(jù)幀三種格式。每種幀都包含有起始字節(jié)、數(shù)據(jù)長度、校驗字節(jié)和幀結束字節(jié)。具體格式如圖4所示。
評論