首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年7月10日 星期四 8:59am

ESP32的CAN通信

  • 23-09-28 04:01
  • 4328
  • 5161
blog.csdn.net

目录

  • 一、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通信本身很简单,但在实际使用过程中有着非常复杂的协议机制,您仍然需要查找更多的资料去学习掌握。
在这里插入图片描述
 
 
 
(完)
 

注:本文转载自blog.csdn.net的loop222的文章"https://blog.csdn.net/loop222/article/details/129662019"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top