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_H、CAN_L、VCC 和 GND。
请记住,CAN FD 网络需要在网络两端安装终端电阻,以防止信号反射。
在上面所示的设置中,主 CAN 集线器 — Aotenjo Master — 包括一个内置终端电阻。因此,您只需通过焊接位于电路板顶部的端接跳线来启用链中最后一块 Aotenjo One 电路板(例如 M0 单元)的端接,如下图所示。
安装
VScode 与 PlatformIO
您可以从 VSCode 扩展市场安装 PlatformIO。
STM32CubeProgrammer
您需要它来将固件刷新到主板上。
克隆存储库
git clone https://github.com/aotenjo-xyz/one.git
cd one
快速入门
- 将磁铁放在电机轴上。

-
将 Aotenjo One 板连接到 ST-LINK V2 编程器。
ST-LINK V2 <-> Aotenjo One3.3V <---> 3.3VGND <---> GNDSWDIO <---> SWDIOSWCLK <---> SWCLKRST <---> NRST信息
与blackpill板不同的是,对于STM32G4系列,您需要将NRST引脚连接到ST-LINK V2编程器。
或者,您可以在上传过程中按住Aotenjo One板上的NRST按钮来达到相同的效果。
:::
3. 将 ST-LINK V2 编程器连接到计算机。
4. 在 VSCode 中打开项目文件夹。
5. 单击左侧栏上的 PlatformIO 选项卡,然后单击 Upload 按钮将固件上传到开发板。
现在您已准备好使用 CAN 总线通信来控制电机!
后续步骤请参考 Aotenjo Master CAN FD 教程。