我的学习过程有几个关键点;
1、MCP2515 CAN总线模块与ARDUINO UNO R3的接线方式;
2、程序set_mask_filter_recv的参数设置,mcp_can_dfs.h库文件设置;
3、MCP2515 CAN总线模块与mcp_can.cpp库文件的关联;
第一点看下面图片:
<ignore_js_op>
<ignore_js_op>
首先在ARDUINO UNO R3找到SCK,MIOS,MOIS,INT0,5V,GND,连接到MCP2515 CAN总线模块的对应接口;
CANH,CANL接到can总线上;
CS管脚接到arduino的9号管脚,单独拿出来讲,是因为此管脚位置可以在程序里面设置,设置如下;
const int SPI_CS_PIN = 9;
INT管脚接到arduino的2号管脚,单独拿出来讲,是因为此管脚位置可以在程序里面设置,设置如下;
attachInterrupt(0,MCP2515_ISR, FALLING); //0代表INT01代表INT1,看ARDUINO UNO R3管脚定义。
延伸一下,关于不同版本的ARDUINO的INT管脚位置,
参考如下链接
Arduino——外部中断的使用
接线图如下
第二点,上代码和库文件
在GITHUB里面搜索Seeed-Studio/CAN_BUS_Shield得到
GITHUB里面的MCP_CAN库文件
https://github.com/Seeed-Studio/CAN_BUS_Shield
程序set_mask_filter_recv代码(我做了些修改)如下
- #include <SPI.h>
- #include "mcp_can.h"