跳转至

mcp2515 - mcp2515 CAN协议控制器驱动

示例

--注意:因使用了sys.wait()所有api需要在协程中使用
-- 用法实例
local mcp2515 = require "mcp2515"

-- mcp2515    mcu
-- csk      spi_sck
-- si       spi_mosi
-- so       spi_miso
-- cs       spi_cs
-- int      gpio

sys.subscribe("mcp2515", function(len,buff,config)
    print("mcp2515", len,buff:byte(1,len))
    for k, v in pairs(config) do
        print(k,v)
    end
end)

sys.taskInit(function()
    local mcp2515_spi= 0
    local mcp2515_cs= pin.PB04
    local mcp2515_int= pin.PB01
    spi_mcp2515 = spi.setup(mcp2515_spi,nil,0,0,8,10*1000*1000,spi.MSB,1,0)
    mcp2515.init(mcp2515_spi,mcp2515_cs,mcp2515_int,mcp2515.CAN_500Kbps)

    mcp2515.send_buffer({id = 0x7FF,ide = false,rtr = false},0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07)--标准帧,数据帧
    mcp2515.send_buffer({id = 0x1FFFFFE6,ide = true,rtr = false},0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07)--扩展帧,数据帧
    mcp2515.send_buffer({id = 0x7FF,ide = false,rtr = true},0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07)--标准帧,远程帧
    mcp2515.send_buffer({id = 0x1FFFFFE6,ide = true,rtr = true},0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07)--扩展帧,远程帧

end)

mcp2515.reset()

mcp2515 复位

参数

返回值

例子

mcp2515.reset()

mcp2515.send_buffer(config,...)

mcp2515 数据发送

参数

传入值类型 解释
table config 接收数据参数 id:报文ID ide:是否为扩展帧 rtr:是否为远程帧
number ... 发送数据 数据个数不可大于8

返回值

例子

mcp2515.send_buffer({id = 0x7FF,ide = false,rtr = false},0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07)--标准帧,数据帧
mcp2515.send_buffer({id = 0x1FFFFFE6,ide = true,rtr = false},0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07)--扩展帧,数据帧
mcp2515.send_buffer({id = 0x7FF,ide = false,rtr = true},0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07)--标准帧,远程帧
mcp2515.send_buffer({id = 0x1FFFFFE6,ide = true,rtr = true},0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07)--扩展帧,远程帧

mcp2515.receive_buffer()

mcp2515 数据接收

参数

返回值

返回值类型 解释
number len 接收数据长度
string buff 接收数据
table config 接收数据参数 id:报文ID ide:是否为扩展帧 rtr:是否为远程帧

例子

sys.subscribe("mcp2515", function(len,buff,config)
    print("mcp2515", len,buff:byte(1,len))
    for k, v in pairs(config) do
        print(k,v)
    end
end)

mcp2515.mode(mode)

mcp2515 设置模式

参数

传入值类型 解释
number mode 模式

返回值

例子

mcp2515.mode(mcp2515.REQOP_NORMAL)--进入正常模式

mcp2515.baud(baud)

mcp2515 设置波特率(注意:需在配置模式使用)

参数

传入值类型 解释
number baud 波特率

返回值

例子

mcp2515.baud(mcp2515.CAN_500Kbps)

mcp2515.filter(id,ide,shield)

mcp2515 设置过滤表(注意:需在配置模式使用)

参数

传入值类型 解释
number id id
bool ide 是否为扩展帧
bool shield 是否为屏蔽表

返回值

例子

mcp2515.filter(0x1FF,false,false)

mcp2515.init(spi_id,cs,int,baud)

mcp2515 初始化

参数

传入值类型 解释
number spi_id spi端口号
number cs cs引脚
number int int引脚
number baud 波特率

返回值

返回值类型 解释
bool 初始化结果

例子

spi_mcp2515 = spi.setup(mcp2515_spi,nil,0,0,8,20*1000*1000,spi.MSB,1,0)
mcp2515.init(mcp2515_spi,mcp2515_cs,mcp2515_int,mcp2515.CAN_500Kbps)