CAN(Controller Area Network)即控制器局域網,由于具有高性能、高可靠性以及簡單的網絡結構,在工業系統中越來越受到人們的重視,并迅速成為了目前國際上應用最廣泛的現場總線之一。英創公司推出了各種以支持通訊接口為特色的工控主板,ESMARC系列的主板都能夠支持2路CAN總線,為了滿足客戶現場對多路CAN總線的需求,英創公司利用主板上的ISA總線,設計出擴展4路CAN總線的擴展底板ETA704,再配合ESMARC系列主板上板載的2路CAN總線,就能夠實現6路CAN總線的方案,支持ISA總線的主板型號如下:
主板型號 | 板載CAN總線 | ISA總線 |
ESM3354 | 2路 | 支持 |
ESM6802 | 2路 | 支持 |
ESM7000 | 2路 | 支持 |
硬件組成
ETA704是通過四片SJA1000和一片邏輯控制器擴展出四路CAN總線。SJA1000是一款獨立的控制器,主要用于汽車和一般工業環境中的控制器局域網絡(CAN)芯片。它是PHILIPS半導體PCA82C200 CAN控制器(BasicCAN)的替代產品,而且它增加了一種新的工作模式(PeliCAN),這種模式支持具有很多新特性的CAN 2.0B協議。 通過主板上的ISA總線接口,就能夠把ETA704和主板連接起來,為了方便客戶評估,ETA704設計有專用的評估底板,可通過帶線與ESMARC底板上的精簡ISA總線接口連接,同時ETA704的硬件設計,可以讓客戶方便的將ETA704作為一個可插拔的模塊嵌入在整體產品中,這樣可以獲得最佳的數據傳輸性能。對于實現CAN總線通訊所引出的接口電路,用戶可以參考相應開發評估底板的電路原理圖和PCB圖。下表是ETA704和ESMARC評估底板ISA總線連接的接口定義:
ISA總線接口信號 | ISA | ISA總線接口信號 | |
PIN# | PIN# | ||
RESET#,復位,低電平有效 | 1 | 2 | ISA_ADV#,地址鎖存,低電平有效 |
ISA_SD0,地址數據總線 | 3 | 4 | ISA_SD4,地址數據總線 |
ISA_SD1,地址數據總線 | 5 | 6 | ISA_SD5,地址數據總線 |
ISA_SD2,地址數據總線 | 7 | 8 | ISA_SD6,地址數據總線 |
ISA_SD3,地址數據總線 | 9 | 10 | ISA_SD7,地址數據總線 |
MSL#,模塊選擇 | 11 | 12 | ISA_WE#,數據寫,低電平有效 |
GPIO9,中斷IRQ4,上升沿有效 | 13 | 14 | ISA_RD#,數據讀,低電平有效 |
GPIO8,中斷IRQ3,上升沿有效 | 15 | 16 | ISA_CS#,總線片選,低電平有效 |
GPIO25,中斷IRQ2,上升沿有效 | 17 | 18 | +5V,電源輸入 |
GPIO24,中斷IRQ1,上升沿有效 | 19 | 20 | GND,公共地 |
ETA704的專用評估底板將四路CAN總線接口全部引出,并且設計有帶隔離的驅動電路,可直接與設備相連進行測試。下面展示了ETA704專用評估底板將CAN總線通訊接口引出和CAN總線驅動電路的原理圖:
CAN接口和驅動電路
由上圖可以看出,從ETA704引出的CAN總線收發管腳,通過評估底板上的磁耦器件ADuM1201隔離后,和CAN驅動芯片TJA1050連接,就組成了一個典型的CAN總線通訊電路,同時還能夠通過跳線選擇是否介入匹配電阻。客戶可以直接參考ETA704評估底板的方法進行設計。帶隔離CAN總線通訊模塊的CAN收發器端的所有信號和電源與其它部分完全隔離,可承受至少1Kv(有效值)的電壓沖擊,有效的保護了電路的安全。
軟件開發
ETA704的驅動程序已經以模塊的形式放在文件系統中,只是沒有加載,因此在需要使用時,可通過加載文件系統中的ko文件eta704_of_platform.ko來激活ETA704,通過modprobe命令就可以方便的加載驅動了:
加載驅動
ESMARC系列主板自帶有2路CAN總線,在系統中為can0、can1節點,所以加載完驅動程序后,系統就會識別出can2-can5,如下圖:
CAN總線節點
ETA704的驅動程序接口和標準socketcan完全一致,因此用戶使用擴展CAN總線的方式和標準CAN接口保持不變,即使用標準的socketcan編程。在此基礎上,客戶可利用英創公司提供的基本CAN通訊應用程序源代碼,快速評估四CAN擴展單元的基本性能是否滿足其具體的應用需求。只是需要注意CAN設備名稱的序號,對于擴展網絡ETA704所接出的四路CAN接口分別對應can2-can5。對于socketcan接口的詳細說明可以參考專門的資料和英創公司的介紹:《Linux Socket CAN驅動簡介》。
成都英創信息技術有限公司 028-8618 0660