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驱动简介》。
全部0条评论
快来发表一下你的评论吧 !