文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>EPC8900自带CAN测试程序使用说明

EPC8900自带CAN测试程序使用说明

时间:2010-09-06  来源:chenxibing008


1.1         接收例程

zlg-sja1000-read这个程序打开的是/dev/SJA1000_CAN1设备也就是CAN1。程序中没有显示设置波特率,也就是用的是默认的波特率1M。程序中设置了单滤波器,设置SJA1000的AC寄存器如下:

AC REG0 = 0;AC-REG1 = 0;AC REG2 = 0;AC REG3 = 0xa0;

AM REG0 = 0;AM REG1 = 0;AM REG2 = 0;AM REG3 = 0;

因为AM寄存器设置为全零,所以程序只接收AC中指定的ID号数据。如果接收的数据为扩展帧,则只接收帧ID号为0x00000014的帧。如果接收的数据帧为标准帧,则只接收帧ID号为0x0000,数据场的前两个字节分别为data[0] = 0,data[1] = 0xa0的帧。

程序启动时打印如下信息:

         ZLG ZCAN  Message Read Example Program

 

Initializing SJA1000 hardware

Receiving data  ...

如果发送方发送完后,在终端上输入Ctrl+C命令中断程序的执行,会看到如下输出:

Interrupted by user ... exiting.

    Messages received: 1

       Bytes received: 8

    Messages error   : 1

 

1.2         发送例程

zlg-sja1000-write程序打开的是/dev/SJA1000_CAN1设备也就是CAN1。程序中设置波特率为500K,向外发送1000000个扩展数据帧。数据帧的ID为0x00000000,数据为55 aa 55 aa 55 aa 55 aa。如果发送成功,则在输入Ctrl+C中断程序的发送时,就会打印已经发送了的帧数信息。发送完1000000帧数据后程序自动结束,打印信息如下:

         SJA1000  Message Write Example Program

 

Initializing SJA1000 hardware

Transmitting data ...

 

End of file transfer

    Messages transmitted: 1000000

       Bytes transmitted: 8000000

发送完1000000帧数据需要很长一段时间。



附,另外一个测试程序,附源码。

文件: Example.zip
大小: 7KB
下载: 下载
使用说明:

zlg-sja1000-test程序提供了一个通过命令行参数设置波特率、滤波器、发送帧的格式与数据、一次发送多帧、定时间隔发送等功能。以下先说明一下命令行参数。

1.1         命令行参数说明

-b –bitrate      设置波特率,需要带上一个波特率值的参数,参数值有如下这些:

1000000、800000、500000、400000、250000、200000、160000、125000、100000、80000、62500、50000、40000、31250、25000、20000、16000、15625、12500、10000、8000、7813、6150、5000。

-d –dual          设置双滤波模式,不需要参数,如果没有这个选项则是单滤波。

-f –filter         设置滤波器。需要带上参数。参数按照如下格式:00112233:00112233

其中冒号前面的数是十六进制表示方式,00这两个值将写入AC的reg0寄存器,11写入AC的reg1寄存器,22写入AC的reg2寄存器,33写入AC的reg3寄存器。冒号后面的数据也是十六进制表示方式,与前面的类似。例如只接收扩展帧ID号的0、1位为1的数据帧,则设置如下:

-f 00000018:ffffffe7

不接收远程帧:

-f 00000000:fffffffb

-e –echo               当收到数据后,立即返回相同的数据给发送方。不带参数

-i –increase     定时发送的数据需要递增它的ID号。不带参数。

-m –message  发送指定的数据。这个选项后的参数一定要按照如下格式:

每个字段都以冒号分隔,以i开头的字段识别为ID号,以d开关的字段识别为数据,eff段为扩展帧,sff为标准帧,rtr为远程帧。

如果要指定帧为扩展帧,就写上eff;如果指定帧为标准帧,就写上sff;eff和sff只能二选一。如果要发送的帧为远程帧,就写上rtr。指定帧的ID号要以i开头,后面带上ID号的十六进制的表示方式。指定帧的data部分的数据要以d开关,后面带上数据,数据的每个字节是以十六进制明文的方式指定的。例如:

--message eff:i001122:d0011223344556677

这是生成一个扩展帧,ID号为0x001122,数据长度为8,数据为data[0] = 0x00, data[1] = 0x11, data[2] = 0x22 data[3] = 0x33 data[4] = 0x44 data[5] = 0x55 data[6] = 0x66 data[7] = 0x77。

如果要生成一个远程的扩展帧,帧ID号为0x123,则如下所示:

--message eff:rtr:i123

如果要生在一个标准的数据帧,帧ID为0x3344,数据为”ZLGMCU”,则如下所示:

--message sff:i3344:d5A4C474D4355

其中’Z’字符的ascii码为0x5A, ‘L’为0x4C, ‘G’为0x47等。

-c –count              指明需要发送多少次数据。

-F –frame      指明每次发送多少帧数据。

-I –internal      指明每次发送数据的间隔。单位为毫秒。

1.2         例子

打开/dev/SJA1000_CAN1设备,用默认的波特率和滤波器,波特率为1M,滤波器为不滤波。将帧设为扩展帧,ID为00000000,数据为data[0] = 0xaa;data[1] = 0xbb;data[2] = 0xcc;data[3] = 0xdd;data[4] = 0xee;data[5] = 0xff;data[6] = 0x11 data[7] = 0x22。递增发送的数据帧的ID号,每次发送10帧数据帧,发送10次。

发送成功则有如下截图:

第一列为发送的序号;第二列为标识发送还是接收,如果是发送的帧则为“SEND”,否则为接收的帧“RECV”;第三列为帧ID;第四列为标识帧类型为数据帧还是远程帧;第五列标识帧为扩展帧还是标准帧,第六列为数据长度,第七列为数据。


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载