跳到主要内容

CANFD通讯

在本教程中,我们将探讨如何准备 Aotenjo One 板用于 CAN FD 通信并运行闭环角度控制。

信息

如果 CAN 网络中的任何板卡是 Aotenjo One v1.x 或 Aotenjo Master v1.x,则无法使用 CAN FD 通信。请改用 CAN 总线通信教程

什么是 CAN FD?

CAN FD(控制器区域网络灵活数据速率)是原始 CAN 总线协议的扩展,支持更高的数据速率每帧更大的数据有效负载

与经典 CAN 不同,CAN FD 允许:

  • 消息数据阶段更高的比特率
  • 单个帧中最多 64 字节的有效负载

这使得 CAN FD 非常适合需要高更新率低延迟更复杂的数据结构的应用,例如电机控制、机器人和高性能工业系统。

CAN 与 CAN FD 的比较

特色CAN总线CAN FD
最大数据速率高达 1 Mbps高达 8 Mbps(数据阶段)
数据有效负载大小最多 8 个字节最多 64 字节
帧格式标准(11 位)和扩展(29 位)标准和扩展
错误检测CRC(循环冗余校验)增强型 CRC 和位填充
RTR 支持支持不支持
使用案例汽车、工业汽车、工业、高速控制

为什么 CAN FD 对于电机控制很重要

CAN FD 不仅仅是更高的带宽。

通过允许每帧更大的有效负载,CAN FD 显着减少了由以下原因引起的协议开销:

  • 仲裁
  • 帧头
  • 帧间距

这意味着每条消息传输更多有用的数据,从而提高整体总线效率。

例子

使用经典 CAN:

  • 电机位置数据可能需要分割到多个帧中
  • 这会增加总线负载并限制控制环路频率

使用 CAN FD:

  • 位置、速度、电流和状态数据可以打包到单个帧中
  • 每个控制周期需要更少的帧
  • 更高、更确定的控制环路频率成为可能

因此,CAN FD 能够:

  • 更高的更新率
  • 更低的延迟
  • 更平滑、更灵敏的电机控制

先决条件

在本教程中,使用以下硬件:

  • Aotenjo One Board 单片机:STM32G431CBU6 版本:Aotenjo One V2.0
  • 径向磁化圆盘磁铁(Aotenjo One 附带)
  • ST-LINK V2克隆
  • BlackPill STM32 板
  • BE4108 75T云台电机
  • 电源(12V)
  • 焊接套件

您需要 ST-LINK V2 克隆才能将固件上传到开发板。您可以以低于 5 美元的价格购买廉价的 ST-LINK V2 克隆版。

CANFD通讯

Aotenjo One 通过 CAN FD 进行通信,允许您仅使用四根线控制多个 Aotenjo One 板:CAN_HCAN_LVCCGND

请记住,CAN FD 网络需要在网络两端安装终端电阻,以防止信号反射。

在上面所示的设置中,主 CAN 集线器 — Aotenjo Master — 包括一个内置终端电阻。因此,您只需通过焊接位于电路板顶部的端接跳线来启用链中最后一块 Aotenjo One 电路板(例如 M0 单元)的端接,如下图所示。

安装

VScode 与 PlatformIO

您可以从 VSCode 扩展市场安装 PlatformIO。

STM32CubeProgrammer

您需要它来将固件刷新到主板上。

克隆存储库

git clone https://github.com/aotenjo-xyz/one.git
cd one

快速入门

  1. 将磁铁放在电机轴上。

电机轴上的磁铁

  1. 将 Aotenjo One 板连接到 ST-LINK V2 编程器。

    ST-LINK V2 <-> Aotenjo One
    3.3V <---> 3.3V
    GND <---> GND
    SWDIO <---> SWDIO
    SWCLK <---> SWCLK
    RST <---> NRST
    信息

与blackpill板不同的是,对于STM32G4系列,您需要将NRST引脚连接到ST-LINK V2编程器。 或者,您可以在上传过程中按住Aotenjo One板上的NRST按钮来达到相同的效果。 ::: 3. 将 ST-LINK V2 编程器连接到计算机。 4. 在 VSCode 中打开项目文件夹。 5. 单击左侧栏上的 PlatformIO 选项卡,然后单击 Upload 按钮将固件上传到开发板。

现在您已准备好使用 CAN 总线通信来控制电机!

后续步骤请参考 Aotenjo Master CAN FD 教程