跳到主要内容

04. 认识实验平台并完成 CAN 接线

学习形式硬件实操
硬件要求完整实验平台
配套 Demo
本课动作必须断电接线

上一课认识了 CAN 总线、节点以及 CAN-ID、DLC、DATA。现在把这些概念落到桌面上的实物:ESP32-C3 从哪里产生 CAN 报文,为什么中间还要经过 TJA1050,CANH 和 CANL 最后怎样接到电机。

这一篇会完成接线和断电电阻测量,但不烧录 CAN 程序,也不让电机运动。

先把器材放在桌面上

本次实验使用:

器材用途
ESP32-C3 控制板运行 ESP-IDF 程序
带 TJA1050 的底板把 ESP32-C3 接入 CANH/CANL
IG35EC020 电机总线上的另一个 CAN 节点
12V 直流电源给底板和电机供电
CAN 线和电机线束连接两个节点
USB 数据线烧录程序并查看日志
数字万用表上电前测量终端电阻

报文离开 ESP32-C3 后经过哪里

一个 CAN 节点通常包含 CAN 控制器和 CAN 收发器。两者不是同一个部件:

应用程序
-> CAN 控制器:生成和解析 CAN 报文
-> CAN 收发器:转换总线电气信号
-> CANH / CANL:连接其他节点

在本实验中,这条路径是:

ESP-IDF 程序
-> ESP32-C3 内部 TWAI 控制器
-> GPIO19(TX)/ GPIO18(RX)
-> 底板上的 TJA1050 收发器
-> CANH / CANL
-> IG35EC020 电机

TWAI 是 Espressif 对片内 Classical CAN 兼容控制器外设使用的名称。它负责 CAN 报文、仲裁、校验和错误状态。TJA1050 是底板上的外部收发器,负责在 TX/RX 数字信号与 CANH/CANL 差分信号之间转换。

因此 GPIO19、GPIO18 连接 TJA1050 的 TXD、RXD,不能直接接到电机 CANH、CANL。

手里的资料分别用在哪里

本篇会用到下列原始资料。这些 PDF 由配套资料包单独提供,不存放在本站文档仓库中:

文件本篇从中查什么
canopen_connect_board(esp32c3).pdfGPIO、TJA1050、终端电阻和 J3 端子
IG35EC020.pdf电机型号、外形和主要规格
IG35EC硬件手册.pdf 第 4 页电机 CAN 接口的位置
IG35EC硬件手册.pdf 第 7 页12 芯插头的引脚和线色
IG35EC硬件手册.pdf 第 8 页CAN 接线、波特率、节点地址和终端说明
IG35EC硬件手册.pdf 第 9 页完整线束和 LED 状态

这些资料解决“应该怎样接”。现场是否真的接对,还要靠实物核对和万用表测量。

CANH 和 CANL 为什么要成对连接

CAN 使用差分信号。接收器主要观察 CANH 与 CANL 之间的电压差,而不是只观察某一根线相对 GND 的电压。

可以先用典型值建立直觉:

总线状态CANHCANL两者电压差
隐性 Recessive约 2.5V约 2.5V接近 0V
显性 Dominant约 3.5V约 1.5V约 2V

这些是帮助理解的典型值,不是用普通万用表逐帧验收的固定数字。CAN 信号变化很快,需要观察波形时应使用合适的示波器和探头。

CANH 与 CANL 应尽量使用双绞线。差分传输可以提高抗干扰能力,但不表示两根线可以交换:CANH 必须接 CANH,CANL 必须接 CANL。

主干和两端终端电阻

CAN 网络应该有一条清楚的主干,并且有两个物理末端:

120Ω 120Ω
| |
+================ CANH / CANL 主干 =========================+
| | |
节点 A 节点 B 节点 C

节点通过较短支线接入主干。不要把每个节点都接成长支线汇聚到中心,也不是每个节点都安装终端电阻。终端只放在主干的两个物理末端。

两只 120Ω 都跨接在 CANH 与 CANL 之间。系统断电后从总线上测量,它们相当于并联:

R = (120Ω x 120Ω) / (120Ω + 120Ω)
= 60Ω

因此,接线完成且所有设备断电时,CANH 与 CANL 之间通常应测得接近 60Ω

差分通信仍然需要共地

CAN 收发器可以容忍一定的地电位差,但范围不是无限的。当前是短距离桌面实验,底板和电机使用同一个 12V 电源,因此两者需要共地:

12V 正极 ----> 底板 VIN
+--> 电机 V+

12V 负极 ----> 底板 GND
+--> 电机 GND

长距离、隔离式或存在大地环流风险的系统需要另外设计隔离和接地方式,不能直接照搬本实验接法。

从底板原理图找到 J3

打开 canopen_connect_board(esp32c3).pdf,沿上半部分绿色连线从左向右看:

底板中 ESP32-C3、TJA1050 和 CAN 接口的信号路径

图源:canopen_connect_board(esp32c3).pdf,第 1 页。

图中可以读出:

发送:GPIO19 -> CAN_TXD -> TJA1050 TXD
接收:GPIO18 <- CAN_RXD <- TJA1050 RXD
总线:TJA1050 CANH/CANL <-> H/L <-> J3
终端:R3 120Ω 跨接 H 与 L
模式:TJA1050 S 脚接地

J3 四个位置为:

J3 引脚网络名本次连接
1VIN12V 电源正极
2L电机 CANL
3H电机 CANH
4GND12V 电源负极和电机 GND

原理图里的 H 就是 CANH,L 就是 CANL。真正插线前还要核对 PCB 上 J3 旁边的丝印,因为从端子正面和背面观察时,左右方向可能相反。

从电机手册找到 CAN 插头和四根线

先看 IG35EC硬件手册.pdf 第 4 页,找到电机正面的 CAN 接口:

IG35EC 电机上的 CAN 接口位置

图源:IG35EC硬件手册.pdf,PDF 第 4 页。

再看第 7 页的 12 芯连接器引脚表:

电机 12 芯连接器中 CANL 和 CANH 的定义

图源:IG35EC硬件手册.pdf,PDF 第 7 页。

本次使用四根线:

电机引脚线色功能
1V+,电源正极
2GND,电源负极
11CANL
12透明CANH

厂家手册给出的电机工作电压范围是 9-36V,本实验使用 12V。透明线容易与白线混淆,除了看颜色,还要核对插头方向和引脚序号。完整线束结构可以查看手册第 9 页。

断电完成连接

确认 12V 电源已经断开,再按下面关系接线:

12V 电源正极 --------+--------> 底板 J3 VIN
+--------> 电机 1 号红线 V+

12V 电源负极 --------+--------> 底板 J3 GND
+--------> 电机 2 号黑线 GND

底板 J3 H / CANH --------------> 电机 12 号透明线 CANH
底板 J3 L / CANL --------------> 电机 11 号粉线 CANL

底板上的 R3 是一只固定 120Ω 终端。当前硬件背景说明总线另一端也已经处理终端匹配,但仍要通过下面的断电测量确认。

用万用表检查终端

连接完成后仍然不要上电:

  1. 万用表调到电阻档。
  2. 一支表笔接 CANH,另一支接 CANL。
  3. 等待读数稳定。
  4. 记录实际阻值。
测量位置:CANH 与 CANL 之间
预期结果:接近 60Ω
实际结果:

根据读数处理:

断电读数下一步
接近 60Ω终端数量大致正确,继续上电前检查
接近 120Ω查找缺少的另一端终端
接近 40Ω检查是否错误接入了三只终端
接近 0Ω保持断电,排查短路和端子
开路或很大检查线缆、端子和终端是否接入

这个读数只能说明静态终端关系大致正确,不能证明波特率正确,也不能证明电机已经能够收发 CAN 报文。

上电前最后看一遍

  • 底板 H 接电机 CANH,底板 L 接电机 CANL。
  • 底板 GND、电机 GND 和 12V 电源负极相连。
  • 12V 正负极没有接反。
  • 没有用 ESP32-C3 GPIO 直接连接 CANH/CANL。
  • 断电测得 CANH 与 CANL 之间接近 60Ω。
  • 接线端没有松散铜丝造成相邻端子短路。
  • 电机已经固定,输出轴周围没有手指、线材和工具。

任何一项不确定,都先不要上电。