如何将MCP2515CAN总线控制器与Arduino接口

电子说

1.3w人已加入

描述

在这个项目中,我们将了解MCP2515 CAN控制器模块,如何将MCP2515 CAN总线控制器与Arduino接口,以及如何在两个MCP2515 CAN的帮助下实现两个Arduino板之间的通信控制器和CAN协议。

简介

受控区域简单CAN网络是一种总线标准,允许微控制器及其外围设备在不需要主机设备或计算机的情况下进行通信。

由Robert Bosch GmbH开发的CAN协议主要用于汽车,用于控制单元及其组件之间的通信。

例如,发动机控制单元是汽车中使用的主要控制装置。该装置连接到许多传感器和执行器,如气流,压力,温度,阀门控制,空气控制电机等。这些模块和控制单元之间的通讯是通过CAN总线进行的。

为了更多地了解CAN总线,CAN控制器和其他重要方面,MCP2515 CAN总线控制器模块非常有用。

同时阅读: SPI通讯基础。

简要说明MCP2515 CAN总线控制器模块

MCP2515 CAN总线控制器是一个简单的模块,支持CAN协议版本2.0B,可用于1Mbps的通信。为了建立一个完整的通信系统,您需要两个CAN总线模块。

项目如下图所示。

此特定模块基于MCP2515 CAN控制器IC和TJA1050 CAN收发器IC 。 MCP2515 IC是一个独立的CAN控制器,集成了SPI接口,用于与微控制器通信。

来自TJA1050 IC,它充当MCP2515 CAN控制器IC和物理CAN总线。

下图显示了典型MCP2515模块上的组件和引脚。

总线控制器

MCP2515 CAN总线模块示意图

在查看模块原理图之前,您需要了解一个有关IC的一些事项,即MCP2515和TJA1050。

MCP2515 IC是主控制器,内部由三个主要子组件组成:CAN模块,控制逻辑和SPI阻止。

CAN模块负责在CAN总线上发送和接收消息。控制逻辑通过连接所有模块来处理MCP2515的设置和操作。 SPI模块负责SPI通信接口。

来到TJA1050 IC,由于它充当MCP2515 CAN控制器和物理CAN总线之间的接口,因此该IC负责从控制器获取数据并将其中继到总线上。

下图显示了MCP2515 CAN模块的原理图,并显示了模块上MCP2515 IC和TJA1050 IC的连接方式。

总线控制器

MCP2515与Arduino接口的电路图

下图显示了电路图MCP2515 CAN模块与Arduino的接口以及两个Arduino over CAN协议之间可能的通信。

总线控制器

如果MCP2515模块的引脚不清楚,以下图片可能有用。

所需组件

Arduino UNO x 2 [购买]

MCP2515 x 2 [在此处购买]

USB电缆x 2

连接线[在此处购买]

电路设计

As前面提到过,CAN控制器IC有助于SPI通信协议与任何微控制器连接。因此,将SPI引脚即SC25,MOSI(SI),MISO(SO)和MCP2515模块的CS连接到Arduino的相应SPI引脚(参见电路图)。

进行两次这样的连接:一对作为发射器,另一对作为接收器。现在,对于此发送器和接收器之间的通信,连接每个MCP2515模块的CANH和CANL引脚。

代码

在进入代码之前,您需要下载一个库MCP2515模块。有很多库,但我使用了这个特定的库。

下载并将提取的内容放在Arduino的libraries目录中。

由于通信涉及发送器模块和接收器模块,因此代码也分为发送器代码和接收器代码。

发送器代码

接收器代码

工作

此项目的工作非常简单,因为所有工作都由库(SPI和CAN)完成。由于CAN是基于消息的通信,因此您需要在0到8个字节之间的任何地方发送消息。

在此项目中,发送器正在发送消息为1 1 2 3 0 5 6 7.此消息通过CAN总线传输,接收器接收此消息并显示在其串行监视器上。

此外,0 th 和4 th 位,即上述序列中的1和0由接收器分别提取,并接通和断开连接到Arduino引脚2的LED。

应用

如前言所述,CAN广泛应用于汽车领域。部分应用包括:

电子换档系统

自动化中的主界面(如工业)

医疗设备

机器人技术

自动启动/停止汽车发动机

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
shanrenll 2019-09-27
0 回复 举报
发送器代码 / 接收器代码 呢?  收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分