ARDUINO+MCP2515实现CAN通讯接收

本文介绍了如何使用ARDUINO UNO R3和MCP2515模块进行CAN通讯,重点在于接线方式、程序中set_mask_filter_recv的参数设置以及中断配置。通过示例代码展示了初始化CAN总线、设置屏蔽器和过滤器,以及中断处理的过程。此外,还提到了晶振频率对CAN波特率的影响和测试验证。
摘要由CSDN通过智能技术生成

 

我的学习过程有几个关键点;
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代码(我做了些修改)如下


  1. #include <SPI.h>
  2. #include "mcp_can.h"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值