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