_SKU_DFR0269_CAN BUS_Shield - jimaobian/DFRobotWikiCn GitHub Wiki

模块介绍

   spi转can模块功能:1、读状态;2、读写数据;3、can设备输入输出标识设置(spi 为从设备)。

一、硬件

1、spi部分只需要mosi、miso、clk就可以工作。(andunio_spi时钟频率:SPI_CLOCK_DIV64 orSPI_CLOCK_DIV128) 2、can部分采用DB9标准接口2为CANL、7为CANH。

二、时序操作(spi时钟250k)

1、读时序 a、写8位寄存器; b、延时1us c、8字节数据 d、延时2个字节的时间 2、写时序 a、写8位寄存器; b、8字节数据

三、寄存器

1、读数据寄存器11 2、读状态寄存器33 3、写数据寄存器22 4、读输入输出标识寄存器55(地址) 5、写输入输出标识寄存器44(地址) 注意: 1、输入输出标识一共8个字节,前四位为接收标识(前两个字节为标准标识,后两个为扩展标识); 后四个字节为发送标识(前两个字节为标准标识,后两个为扩展标识)。 2、状态寄存器的值 0x00为:可写不可读 0x01为:不可写不可读 0x10为:可写可读 0x11为:不可写可读

注意:模块地址指定是在模块上电以后指定(默认值是00001234,复位以后恢复默认值)

四、模块上电复位寄存器默认值:

状态寄存器:01 数据寄存器:AA 55 55 AA 00 55 00 AA 标示寄存器:0012324001234

五、地址操作:

读指令格式:55aa55 xxxxxxxx xxxxxxxx(x表示任意十进制数) 55aa为头 55为指令

前4位为标准标识(接收地址),后四位为扩展标识(发送地址)。

写指令格式:55aa44 00001234 00001234 55aa为头 55为指令 前4位为接收地址,后四位为发送地址。

六、模块数据传输:

= 1、状态寄存器读:55aa33 xxxxxxxx xxxxxxxx(x表示任意十进制数); 55aa为头 33为指令 2、数据寄存器读:55aa11 xxxxxxxx xxxxxxxx(x表示任意十进制数); 55aa为头 11为指令 数据寄存器写:55aa22 xxxxxxxx xxxxxxxx(x表示任意十进制数); 55aa为头 22为指令

七、arduino库

byte a[11] 1、SPItoCAN.write(byte a[]); 写数据 数据格式: a[0]寄存器 a[1]~a[9]发送数据 2、SPItoCAN.read(byte a[]);读数据 数据格式: a[0]寄存器 a[1]~a[9]接收数据 a[10]、a[11]为0作为延时 3、SPItoCAN.readzt(byte a[]);读状态 数据格式: a[0]寄存器 a[1]接收状态信息 a[2]、a[3]为0作为延时

4、SPITtoCAN.readdz(byte a[]);读标识 数据格式: a[0]寄存器 a[1]~a[9]接收标识 a[10]、a[11]为0作为延时 5、SPItoCAN.writedz(byte a[]); 写标识 数据格式: a[0]寄存器 a[1]~a[9]发送标识

实例演示:

一、模块标识(地址)指定实例:

1、复位。 2、串口波特率:9600 3、读模块地址指令:55aa55 xxxxxxxx xxxxxxxx(x表示任意十进制数);   读当前模块地址:输入指令:55aa550000523400005234如图:

C1.png

发送指令执行结果,如图:

C2.png

4、写模块地址指令:55aa55 xxxxxxxx xxxxxxxx(x表示任意十进制数);   写当前模块地址:输入指令:55aa550000523400005234如图:

C3.png

发送指令执行结果地址已经修改,如图:

C4.png

二、模块数据传输:

下面是两个模块的数据传输实例:

A、硬件准备:

Canbus1.png

B、软件准备

1、arduino开发包。 2、canbus库。 3、串口调试软件。

1、上电复位。打开串口如图: C5.png

2、输入指令55aa3300aa523400aa5234和55aa330000523400005234 发送执行结果 C6.png

3、清除窗口,输入指令:55aa1100aa523400aa5234和55aa110000523400005234;发送执行结果: C7.png

4、清除窗口,输入指令:55aa3300aa523400aa5234和55aa330000523400005234;发送执行结果: C8.png

5、清除窗口,输入指令:55aa2200aa523400aa5234和55aa220000523400005234;发送执行结果: C10.png

6、清除窗口,输入指令:55aa3300aa523400aa5234和55aa330000523400005234;发送执行结果: C11.png

7、清除窗口,输入指令:55aa1100aa523400aa5234和55aa110000523400005234;发送执行结果: C12.png

8、数据传输成功OK!