跳到主要内容

CAN FD 通信

本教程介绍如何准备 Aotenjo One 板用于 CAN FD 通信并运行闭环角度控制。

信息

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

什么是 CAN FD?​

CAN FD(Controller Area Network Flexible Data-Rate) 是传统 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 控制板 单片机:STM32G431CBU6 版本:Aotenjo One V2.0
  • 沿直径方向充磁的圆片磁铁(Aotenjo One 附带)
  • ST-LINK V2 克隆版
  • BlackPill STM32 板
  • BE4108 75T云台电机
  • 电源(12V)
  • 焊接套件

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

CAN总线连接​

CAN FD 与经典 CAN 使用相同的总线接线和终端配置。请按照 CAN 总线连接说明连接控制板,并在总线的两个物理末端启用终端电阻。完成后,返回本页继续设置 CAN FD 固件。

配置开发环境​

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 教程。