_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如图:
发送指令执行结果,如图:
4、写模块地址指令:55aa55 xxxxxxxx xxxxxxxx(x表示任意十进制数); 写当前模块地址:输入指令:55aa550000523400005234如图:
发送指令执行结果地址已经修改,如图:
二、模块数据传输:
下面是两个模块的数据传输实例:
A、硬件准备:
B、软件准备
1、arduino开发包。 2、canbus库。 3、串口调试软件。
1、上电复位。打开串口如图:
2、输入指令55aa3300aa523400aa5234和55aa330000523400005234 发送执行结果
3、清除窗口,输入指令:55aa1100aa523400aa5234和55aa110000523400005234;发送执行结果:
4、清除窗口,输入指令:55aa3300aa523400aa5234和55aa330000523400005234;发送执行结果:
5、清除窗口,输入指令:55aa2200aa523400aa5234和55aa220000523400005234;发送执行结果:
6、清除窗口,输入指令:55aa3300aa523400aa5234和55aa330000523400005234;发送执行结果:
7、清除窗口,输入指令:55aa1100aa523400aa5234和55aa110000523400005234;发送执行结果:
8、数据传输成功OK!