基于單片機(jī)控制的CAN與RS-232轉(zhuǎn)換器的研究與設(shè)計(jì)
2.2 SJA1000與AT89C51接口電路設(shè)計(jì)
CAN控制器SJA1000芯片采用片外24MHz晶振,其CLKOUT引腳輸出工作頻率接入微處理器的XTAL1引腳。片選/CS端與單片機(jī)的P2.7引腳直接相連,因此SJA1000的尋址空間從地址0開始。AD0~AD7直接與AT89C51的低8位數(shù)據(jù)/地址復(fù)用口P0口相連,MODE接高電平設(shè)置為Intel模式,中斷輸出信號/INT與微處理器的/INT0連接,使CAN通信可以采用中斷和查詢兩種方式。TLP113的外接390Ω電阻為限流保護(hù)電阻,為避免當(dāng)驅(qū)動器失效時(shí)出現(xiàn)過流導(dǎo)致控制器損壞。SJA1000與AT89C51接口電路如圖2所示。
2.3 CAN總線物理層接口電路設(shè)計(jì)
PCA82C250與CAN總線的接口部分采用一定的安全和抗干擾措施。CANH和CANL與地之間并聯(lián)了兩個(gè)30P的小電容,可以起到濾除總線的高頻干擾和一定的防電磁輻射的能力。另外在兩根CAN總線接入端與地之間分別反接一個(gè)保護(hù)二極管,當(dāng)CAN總線有較高的負(fù)電壓時(shí),通過二極管的短路可起到一定的過壓保護(hù)作用。PCA82C250的Rs腳上接有一個(gè)斜率電阻,電阻大小可根據(jù)總線通訊速度適當(dāng)調(diào)整,一般在16K~140K之間。用光電隔離芯片TLP113將CAN控制器SJA1000和收發(fā)器PCA82C250隔離,以便有效地增加通訊距離和抗干擾能力。CAN總線物理層接口電路如圖3所示。
3.基于單片機(jī)控制的CAN總線與RS-232轉(zhuǎn)換器軟件設(shè)計(jì)
主程序分為初始化和循環(huán)檢測兩個(gè)主要部分。初始化部分完成對看門狗電路及RS-232 串口和CAN總線的初始化并開啟INT0中斷和串口中斷。循環(huán)檢測部分通過調(diào)用CAN總線接收函數(shù)(CAN_Receive())和RS-232接收函數(shù)(RS232_Receive())檢測緩沖區(qū)內(nèi)是否收到到數(shù)據(jù),如果有數(shù)據(jù)接收則調(diào)用RS-232發(fā)送函數(shù)(RS232_Send())和CAN總線發(fā)送函數(shù)(CAN_Send())轉(zhuǎn)發(fā)數(shù)據(jù)。數(shù)據(jù)的發(fā)送和接收都是通過中斷來進(jìn)行的。每次循環(huán)檢測結(jié)束通過調(diào)用rst_wdog函數(shù)使看門狗復(fù)位。此外,由于CAN總線的速率與RS-232接口的速率并不相同,因此還需設(shè)置片外的存儲器(RAM),用于轉(zhuǎn)換雙方的數(shù)據(jù)緩沖區(qū)。主程序流程圖如圖4所示。
評論