ESP32的CAN通信

article/2025/8/30 0:34:32

目录

  • 一、ESP32的CAN通信说明
    • 1.1、片内外设
    • 1.2、CAN库的查找
    • 1.3、MCP2515和SJA1000介绍
    • 1.4、CAN库的安装
      • 1.4.1、先下载库,再导入到arduino IDE中
      • 1.4.2、通过“库管理器”安装。
  • 二、硬件说明
    • 2.1、硬件准备
    • 2.2、硬件连接
  • 三、代码调试
    • 3.1、打开示例
    • 3.2、修改代码
    • 3.3、编译上传
  • 四、其它说明


SimpleFOC、ODrive和VESC 教程链接汇总:请点击

一、ESP32的CAN通信说明

1.1、片内外设

CAN在ESP32芯片中叫TWAI,如下图:
在这里插入图片描述

1.2、CAN库的查找

ESP32官方提供的arduino库不支持CAN通信,也没有对应的例程,所以需要使用第三方库。

Arduino官网查找对应的库,如下图:
在这里插入图片描述


在这里插入图片描述


arduino官方库中不支持CAN通信,更没有ESP32的CAN通信库,如下图:
在这里插入图片描述


往下翻,社区贡献的库,如下图:
这名字一看就是擅长营销的人起的,前面带个“A”,排名可以靠前。
在这里插入图片描述

继续往下翻,又找到一些,如下图:
在这里插入图片描述

这些库我只是大概看了看,简单使用了下,大家可以自行对比测试。

1.3、MCP2515和SJA1000介绍

  • 上面的库里都提到了MCP2515,所以简单介绍下。
  • 在Arduino中,考虑到跨平台的兼容性,这个芯片被拿出来频繁使用。
  • 在一些没有CAN外设的单片机上,比如UNO上古老的MEGA328P就没有CAN功能,还必须使用MCP2515。
  • MCP2515简单来说是一个把SPI接口转换为CAN接口的转换芯片,在单片机普遍没有集成CAN外设的年代,他可以做为外挂实现CAN通信。但现在的单片机基本都已经集成了CAN,比如STM32和ESP32,所以这个芯片的使用价值就大打折扣了,而且它需要占用大量的IO口,同时多了这个芯片的成本,所以我本人是不推荐大家使用这个芯片的。
    在这里插入图片描述
  • SJA1000和MCP2515一样,都是本世纪初期的芯片。
  • 这个芯片我觉得目前应该是已经被淘汰了,ESP32把它集成到芯片内部做为片内外设,ESP官方手册中并没有说明,但是在arduino库中,第三方说明了这个情况。当然大家不用研究这个芯片的使用方法,知道这个情况就行。
    在这里插入图片描述

1.4、CAN库的安装

库的安装有两种方法:先下载再安装 或者 通过库管理器安装。

1.4.1、先下载库,再导入到arduino IDE中

  • 接上面1.2节,下载0.3.1最新版本,压缩包要放在没有中文的路径下,如下图:
    在这里插入图片描述

  • 导入下载的压缩包,
    在这里插入图片描述

1.4.2、通过“库管理器”安装。

在这里插入图片描述

在这里插入图片描述


两种库的安装效果是完全一样的,安装完毕后,可以看到示例,如下图:
在这里插入图片描述

二、硬件说明

2.1、硬件准备

序号名称数量
1ESP32drive1
2CAN通信芯片1
3CAN盒1
4USB转TTL1
512V电源1
6杜邦线若干

在这里插入图片描述

ESP32drive 购买链接:某宝购买

2.2、硬件连接

2.2.1、CAN通信芯片
在这里插入图片描述


2.2.2、通信原理图
在这里插入图片描述


2.2.3、接线
在这里插入图片描述

三、代码调试

3.1、打开示例

在这里插入图片描述

3.2、修改代码

  • 默认的通信引脚是GPIO4和5,需要修改为21和22,
  • 示例为只读文件,修改后需要另存为,不要保存到中文路径下。
  • 需要说明下,代码中设置的CAN波特率为500K,但实际只有250K。如果希望实际波特率为500K,需要设置为“1000E3”。波特率不正确,CAN盒无法收到数据且没有任何提示,这个问题浪费我一周时间。
    在这里插入图片描述

3.3、编译上传

在这里插入图片描述

四、其它说明

OBD就是 汽车故障诊断仪,这个示例很高大上。CAN总线据说就是起源于汽车电子,CAN通信本身很简单,但在实际使用过程中有着非常复杂的协议机制,您仍然需要查找更多的资料去学习掌握。
在这里插入图片描述



(完)


http://chatgpt.dhexx.cn/article/Tcy8GBQK.shtml

相关文章

DSP28377S_CAN通信

CAN通信 CAN通信的由来CAN通信格式CAN通信配置实验验证结束语参考资料目录 CAN通信的由来 为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。CAN属于现场总线的范畴&a…

【CAN】CAN通信基础

1、CAN 总线与 CANopen 概述 CAN(Controller Area Network)总线是BOSCH为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,通信介质可以是双绞线、同轴电缆或光导纤维。 通信速率可达 1MBPS。 CAN 协议的一个…

通信接口CAN

CAN通信 目前(2021年6月)我用到的CAN电路原理图: 判断电路有没有接好,其中一个标准就是,测量接入的电阻阻值是不是60Ω。上图两个60.4Ω之间,可以接一个电容到GND。 1. Bit Timing(位时序) 参考连接 …

STM32之CAN通信

23.1关于 CAN 23.1.1 CAN 电气特性与协议 控制器局域网(Controller Area Network,CAN),是由德国BOSCH(博世)公司开发,是目前国际上应用最为广泛的现场总线之一。其特点是可拓展性好&#xff0…

FPGA实现CAN通信

FPGA实现CAN通信 1、CAN协议物理层和协议层 2、传输的波特率 3、FPGA实现思路 4、FPGA实现代码 1、CAN物理层和协议层 CAN与串口类似,都是异步通信,利用两根差分线来进行信号的传输。 在多节点进行数据传输时主要分为遵循ISO11898标准的高速短距离闭环形…

关于CAN通信速率设置

一、 CAN时钟周期(Tq)2*晶振时钟*BRP(波特率预分频值 baudrate prescaler) 一个CAN时间称为一个时间量子 Tq 1)同步段(Synchronization Segment):1个Tq,tSS 2&#x…

nano的CAN通信

我买的是微雪的树莓派用的SPI转CAN。现在用在jetson nano上。我看了一下俩模块的芯片用的都是一样的,引脚也都对得上,所以我就打算拿这个模块给nano做can通信。 具备CAN功能,使用SPI接口CAN控制器MCP2515,搭配收发器SN65HVD230。 …

CAN通信基础知识

CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。 CAN协议经过…

CAN通信详解

本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 30.1 CAN简介 CAN 是Controller Area Network 的…

CAN通信总结

CAN通信总结 基本介绍 ​ 1. CAN通过两条通信线(双绞线)产生的电压差传输数据,一个CAN网络里的所有节点都挂在这两条通信线上,使用差分信号半双工通信。 ​ 2. CAN总线是广播类型的总线。所有节点都将始终接收所有通信&#xf…

CAN 通信原理学习

文章目录 CAN通信一:基本概述1.1 can总线是什么1.2 can总线协议的特点1.3 can的网络通信结构1.3.11.3.2 can协议网络层次 二:socket can在通信网络中的应用三 一个程序 CAN通信 一:基本概述 1.1 can总线是什么 CAN 是 Controller Area Net…

CAN通信协议

在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地…

CAN通信讲解(1)——基本知识

本文注意参考了《CAN入门书》,源于此书图片不再特殊标注 目录 1.1 CAN总线背景1.2 CAN总线定义1.3 CAN总线信号特性1.4 CAN总线传输1.5 OSI基本参照模型和CAN总线协议 1.1 CAN总线背景 为减少汽车线束数量,1986年,博世开发出面向汽车的CAN通…

CAN通信

通讯方式 UART:(Universal Asynchronous Receiver Transmitter:通用异步收发器/异步串行通信口),是一种通用的串行数据总线,用于异步通信,支持全双工。它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线…

CAN通信----基本原理

STM32标准库开发 文章链接: STM32F103标准库开发----目录 STM32F103标准库开发----CAN总线通信实验----初始化/波特率 STM32F103标准库开发----CAN总线通信实验----发送和接收 资源链接: 本例程已经调试成功,下载即可使用。 STM32F103标准库…

CAN通信详解(全)

本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 30.1 CAN简介 CAN 是Controller Area Network 的缩…

Tomcat优化禁用AJP协议

登录tomcat 在服务状态页面中可以看到,默认状态下会启用AJP服务,并且占用8009端口。 什么是AJP呢? AJP(Apache JServer Protocol) AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了…

tomcat启动出现错误:Failed to destroy end point associated with ProtocolHandler[“ajp-nio-8009“](解决非常简单)

tomcat启跑不起来而且报了很多莫名其妙的错误不知道从哪里找起 启动服务器出现这个错误 console提示:Failed to destroy end point associated with ProtocolHandler[“ajp-nio-8009”] 直接看web.xml的url-pattern这个属性是不是哪一个少了‘/’ 或者 如果没有…

Java安全-Tomcat AJP 文件包含漏洞(CVE-2020-1938)幽灵猫漏洞复现

Tomcat AJP 文件包含漏洞(CVE-2020-1938) CVE-2020-1938 又名GhostCat ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat 上所有 webapp 目录下的任意文件 该漏洞是一个单独的文件包含漏洞,依赖…

Aapache Tomcat AJP 文件包含漏洞-(CVE-2020-1938/CNVD-2020-10487)

漏洞编号 CVE-2020-1938 CNVD-2020-10487 靶机环境 Vulhub虚拟靶场 vulhub-master/tomcat/CVE-2020-1938 启动docker: 启动成功: 0x00 漏洞简介 2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏…