一、CAN/USB 轉(zhuǎn)接器基本原理
(一)CAN 總線協(xié)議概述 控制器局域網(wǎng)(CAN)是一種總線型 串行通信網(wǎng)絡,在汽車行業(yè)和工業(yè)上均有 廣 泛 應 用。Robert Bosch GmbH 的《CAN Specification Version 2.0》發(fā)布于 1991 年,在這篇文檔中該公司宣布了一種新版 本 的 CAN 總 線 協(xié) 議, 即 CAN2.0。 新 標 準 CAN2.0B 與舊標準 CAN2.0A 或 CAN1.2 的主 要區(qū)別在仲裁場識別符的位數(shù)上,新標準的 識別符擴展到了 29 位,這不但使得總線上 可以容納更多的節(jié)點設(shè)備,也使得節(jié)點設(shè)備 的識別符編號能夠更加標準化。
(二)轉(zhuǎn)接器的功能 本設(shè)計中的轉(zhuǎn)接器是用于連接 CAN 總線 和 USB 總線,包含兩方面的內(nèi)容:首先, 轉(zhuǎn)接器應該能夠從 CAN 總線上接收數(shù)據(jù),并 將其發(fā)送到 USB 總線上;其次,轉(zhuǎn)接器也應 該能夠從 USB 總線上接收數(shù)據(jù),然后將其發(fā) 送到 CAN 總線上。為了實現(xiàn)上述功能,該轉(zhuǎn) 接器必須具備的能力包括:CAN 總線數(shù)據(jù)接 收、CAN 總線數(shù)據(jù)發(fā)送、USB 總線數(shù)據(jù)接收 和 USB 總線數(shù)據(jù)發(fā)送。
(三)系統(tǒng)硬件結(jié)構(gòu) 本文設(shè)計的 CAN/USB 轉(zhuǎn)接器以 51 單片 機為核心。由單片機負責接收其中一個總線 上的信號,并將其轉(zhuǎn)發(fā)到另一個總線上,同 時也由單片機負責對來不及發(fā)送的數(shù)據(jù)進行 緩存。前者要求單片機有足夠快的處理速度, 后者則要求單片機有盡可能大的 RAM 空間。 51 單片機既沒有對 CAN 總線的支持,也沒 有對 USB 總線的支持,因此這兩種總線都需 要用專門接口額外連接相應的轉(zhuǎn)接芯片。常 見的 USB 轉(zhuǎn)接芯片是 CH340 系列,它可以將 USB 接口和 UART 串口的數(shù)據(jù)進行轉(zhuǎn)換。而 CAN 總線的硬件部分通常由處理器、CAN 控 制器和 CAN 收發(fā)器三部分構(gòu)成。這里讓單片 機通過 UART 接口連接 USB 轉(zhuǎn)串口芯片;通 過 P0 和 P2 兩個擴展存儲器接口連接 CAN 控 制器,CAN 控制器通過光耦合器與 CAN 收發(fā)器連接以實現(xiàn)信號隔離,避免干擾。硬件框 圖如下圖 1。
二、元件選取
(一)單片機的選取 單片機是整個設(shè)計的核心,是連接 CAN 總線和 USB 總線的中樞。由于 UART 的速度 通常只有幾 kbps 到幾百 kbps,因此瓶頸主 要在 UART 總線上。UART 的波特率最大值取 決于單片機所支持的最大時鐘頻率,時鐘頻 率越大,波特率越大。 國 產(chǎn) 51 單 片 機 STC15F2K60S2 的 最 大 頻率可達 28MHz,在 1T 模式下,波特率最 大 可 達 875000。 距 離 CAN 總 線 1Mbps 的 最高速度相差不大。因此本設(shè)計中使用 STC15F2K60S2 這款單片機。
(二)CAN 控制器 考 慮 到 CAN 總 線 協(xié) 議 標 準 的 最 新 版 本 為 CAN2.0B, 選 取 的 總 線 控 制 器 一 方 面必須能夠很好的兼容原有的協(xié)議,即 CAN.2.0A 協(xié)議,又應該支持新的擴展標準, 即 CAN2.0B。設(shè)計中的 CAN 控制器選擇了 SJA1000,這是一款獨立 CAN 控制器芯片。 具備 BasicCAN 和 PeliCAN 兩種模式,支持 CAN2.0A 和 CAN2.0B 協(xié)議標準。 SJA1000 提供了對 51 單片機的支持, 可以通過 P0 和 P2 兩組擴展存儲器的接口連 接到單片機,訪問的方式也與擴展存儲器的 訪問方式相同。
(三)CAN 收發(fā)器 CAN 收發(fā)器使用的是 PCA82C250 芯片, 具備最高 1Mbps 的高速率以及良好的抗干擾可以替換。
(四)USB 轉(zhuǎn)串口芯片 USB 轉(zhuǎn)串口芯片選用了 CH340T,這是一 款常用的 USB 轉(zhuǎn)串口芯片,并且提供了電 腦端 USB 模擬串口的驅(qū)動程序,使得電腦端 程序的開發(fā)和使用更加方便,已有的基于 RS232 的程序不需要重新編寫。
(五)光耦合器 為防止線路上的干擾,在控制器和收 發(fā)器之間有一個光耦合器來進行電流隔 離。本文的電流隔離使用了 6N137 這樣一款 光耦合器芯片。這個芯片的轉(zhuǎn)換速率可達 10Mbps,擺率可達 10kV/us。
三、硬件設(shè)計
硬件系統(tǒng)以 51 單片機為核心,通過單 片機運行的軟件進行 CAN 總線和 UART 串口 之間的中轉(zhuǎn),并通過 CH340T轉(zhuǎn)換為 USB總線。 電源模塊可以省略,直接依靠 USB 供電。
(一)CAN 總線連接 1. 單片機與控制器的連接 SJA1000 與 51 單片機之間的連接是以 擴展 RAM 存儲器的方式連接的。INT 端口提 供對單片機的外部中斷輸出,該中斷為低電 平有效。XTAL1 和 XTAL2 為外接振蕩器(海門市其林貝爾微型振蕩器MH-1型)的接 口。可以獨立接晶振,也可以和單片機共用 晶振。在本設(shè)計中,SJA1000 與單片機的晶 振是共用的。 2. 控制器與收發(fā)器的連接 控制器和收發(fā)器之間通過光耦合器6N137 連接,光耦合器使得兩個芯片的電路 部分沒有物理連接,增強了系統(tǒng)的穩(wěn)定性和 抗干擾性。CAN 收發(fā)器 PCA82C250 的 TXD 端 口用于輸入需要發(fā)送的數(shù)據(jù),接 SJA1000 的 TX0;RXD 端口用于輸出從總線上接收到的 數(shù)據(jù),接 SJA1000 的 RX0;Rs 是斜率電阻輸 入,通過一個斜率電阻接單片機的復位電路, Vref 是參考電壓輸出,直接懸空。CANH 和 CANL 兩個端口接 CAN 總線的高低電平線路。
(二)USB 總線連接 USB 總線一側(cè)是通過 CH340T 將單片機 輸出的 UART 總線轉(zhuǎn)換為 USB 總線。CH340T 的 TXD 和 RXD 兩個端口分別用于連接單片機 的對應端口,進行 UART 總線的輸入輸出;UD+ 和 UD- 兩個端口分別連接 USB 接口的 D+ 和 D- 端口,用于 USB 總線的輸入輸出;XI 和 XO 用于連接一個 12M 的晶振;V3 則連接 到一個 100pF 的退耦電容上。