CAN(Controller Area Network)即控制器局域网,由于具有高性能、高可靠性以及简单的网络结构,在工业系统中越来越受到人们的重视,并迅速成为了目前国际上应用最广泛的现场总线之一。EM335x核心板已经自带了两路CAN总线,默认的配置为一路CAN总线,如果需要两路CAN总线,可以在购买的时候特别注明。为了丰富EM335x核心板的扩展资源并且满足客户对高效、低成本的多CAN总线扩展需求,英创公司推出利用精简ISA总线接口的四路CAN总线扩展单元ETA704。客户可以直接使用ETA704或者参考ETA704进行设计,在EM335x工控主板自带的两路CAN总线的基础上利用ISA总线再扩展出更多的CAN总线,构成多路CAN总线的嵌入式系统。
硬件组成
ETA704是基于EM335x工控主板的四路CAN总线扩展模块,通过四片SJA1000和一片逻辑控制器扩展出四路CAN总线。SJA1000是一款独立的控制器,主要用于汽车和一般工业环境中的控制器局域网络(CAN)芯片。它是PHILIPS半导体PCA82C200 CAN控制器(BasicCAN)的替代产品,而且它增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN 2.0B协议。
ETA704的硬件设计,可以让客户方便的将ETA704作为一个可插拔的模块嵌入在整体产品中,这样可以获得最佳的数据传输性能。对于实现CAN总线通讯所引出的接口电路,用户可以参考相应开发评估底板的电路原理图和PCB图。下图是ETA704和EM335x核心板ISA总线连接的接口定义:
根据上图CN1的信号定义,RESET信号为ISA总线输出的复位信号,低电平有效。在核心板系统启动的过程中会输出一个低电平给ETA704复位两个DM9000控制器,保证不管是上电还是复位,都会对SJA1000进行硬件复位操作。MSL#信号主要是为了支持使用两片ETA704扩展而设计的,在一般的情况下使用一片ETA704进行扩展,将这个管脚悬空即可,如果需求用两片ETA704扩展,MSL#管脚则需要接地。而IRQ1-IRQ4则分别为四片SJA1000的中断信号,在EM335x开发评估底板中,IRQ1接到GPIO24、IRQ2接到GPIO25,IRQ3接到GPIO8, IRQ4接到GPIO9,可参照下列表格,中断为低电平有效。其余的信号都为EM335x主板的ISA标准信号。
关于EM335x工控主板的ISA总线具体的读写操作时序可以参考手册和文章:EM335x精简ISA扩展总线地址总线的使用。
为了方便客户评估,ETA704设计有专用的评估底板,可通过带线与EM335x底板上的精简ISA总线接口连接,并且将四路CAN总线接口引出,可直接与设备相连进行测试。下图展示了ETA704评估底板将CAN总线通讯接口引出部分的原理图:
由上图可以看出,从ETA704引出的CAN总线收发管脚,通过评估底板上的磁耦器件ADuM1201隔离后,和CAN驱动芯片TJA1050连接,就组成了一个典型的CAN总线通讯电路,客户也可以直接参考ETA704评估底板的方法进行设计。带隔离CAN总线通讯模块的CAN收发器端的所有信号和电源与其它部分完全隔离,可承受至少1Kv(有效值)的电压冲击,有效的保护了电路的安全。需要注意的是如果扁平带线过长,会影响高速信号的完整性,所以在评估时使用的连接线尽量短一些,避免出现问题。
应用程序开发
ETA704的驱动程序已经以模块的形式放在文件系统中,只是没有加载,因此在需要使用该多网络扩展时,可通过加载文件系统中的ko文件sja1000.ko和sja1000_of_platform.ko来激活ETA704:
EM335x自带有一路CAN总线,在系统中为can0节点,所以加载完驱动程序后,系统就会识别出can1-can4(如果使用的双CAN接口配置,自带的CAN接口占用了can0-can1,那么加载了ETA704的驱动后,则会识别成can2-can5),如下图:
ETA704的驱动程序和标准socketcan完全一致,因此用户使用扩展CAN总线的方式和EM335x板卡上的CAN接口完全保持不变,即使用标准的socketcan编程。在此基础上,客户可利用英创公司提供的基本CAN通讯应用程序源代码,快速评估四CAN扩展单元的基本性能是否满足其具体的应用需求。只是需要注意CAN设备名称的序号,对于扩展网络ETA704所接出的四路CAN接口分别对应can1-can4(双CAN配置的核心板则为can2-can5)。客户可以直接参考光盘中的测试程序test_socketcan、test_can_filter和test_can_rcv。
测试情况
为了测试ETA704扩展出的CAN总线通讯能力,英创公司做了一些测试。使用ETA704扩展模块,在四路CAN总线同时启用的情况下进行发送测试,测试所使用的波特率为1Mbit/s,发送的数据为标准帧,发送500万个测试包,测试结果如下:
可以看到,扩展出来的四路CAN接口均使用的1113秒的时候来发送完成500万个包,也就是每毫秒能够发送4.49个包。
下面来看接收数据测试,使用另外的四张EM335x核心板,同时向ETA704扩展出来的四路CAN总线发送测试数据,测试数据为标准帧,2000万个包,波特率还是采用1Mbit/s,大约每毫秒发送2-3个包,测试结果如下图:
can1:
can2:
can3:
can4:
CAN接口每收到10万个包,就会打印一次信息,可以看出,四路扩展CAN总线在每毫秒接收2-3个包的情况下,均接收到了2000万个包,丢包率小于5*10-8分之一。
-
嵌入式系统
+关注
关注
41文章
3547浏览量
129074
发布评论请先 登录
相关推荐
评论