搞定100ns抖动:ARM+FPGA混合EtherCAT主站实战方案

一.混合架构总体设计

总体架构图(无 MUX 架构 - MII 直接挂 FPGA):架构选择理由: PHY 的 MII 总线只接 FPGA,STM32 不占用 ETH MAC 外设。STM32 通过 FMC→DPRAM→FPGA 透传访问网络,避免 MII 总线冲突,消除 SAFEOP→OP 切换风险,SDO 路径统一。

二.分工模式

关键设计原则

原则 1:FPGA 只做"硬实时"任务

凡是"非周期"或"协议复杂"的,统统交给 SOEM。FPGA 只负责"在每个 2ms 周期必须发生、且时序必须精确到 ns"的事。

原则 2:SOEM 只做"软实时"任务

协议处理、SDO 配置、应用逻辑,由 SOEM 在 STM32 上运行。STM32 中断响应 ~100ns 是可接受的,因为这些任务不在 Sync0 关键路径上。

原则 3:DPRAM 作为唯一数据通道

STM32 与 FPGA 之间不使用 SPI/UART,而使用 FMC 总线映射的双端口 RAM。原因:FMC 访问 ~20ns,SPI 访问 ~1μs,差 50 倍。32 轴 PDO 数据 ~700 字节,FMC 一周期内可读完。

关键澄清:三层帧归属

核心澄清: OP 模式下,周期 PDO 帧不是 STM32 构造的,是 FPGA 自己构造的。这正是本方案的核心设计------STM32 是"大脑"(决策+协议),FPGA 是"手脚"(定时+收发+装配),DPRAM 是"神经"(数据通道)。

OP周期内的详细分工

为什么不能让 STM32 构造 OP 帧

注意OP 期间,FPGA 不只是定时发送,而是独立完成完整的帧装配、发送、接收、解析、数据落盘全流程,STM32 只负责"喂数据"和"吃数据"。这样才能保证 100ns 抖动。

三.工作流程时序

阶段1: FPGA DC同步 (ARM上电后触发)

ARM写 REG_DC_START=1

→ FPGA ECAT_DC.v 启动

→ 读各从站0x0918/0x0920 (纳秒级时间戳)

→ 计算传播延迟 EscRecTime3 = EscRecTime1 - EscRecTime2

→ 写0x0910 偏移补偿

→ sync_done=1, 释放后续模块复位

阶段2: ARM伺服初始化 (SOEM, sync_done后启动)

ec_config_init() → 扫描32轴, 分配站地址

ec_config_map() → 配置SM/FMMU/PDO (C代码改伺服只改这里)

ec_configdc() → SOEM跳过DC(FPGA已做), 只配Sync0寄存器

ec_SDOwrite() → 下发伺服参数(模式/齿轮比等)

ec_writestate(OP) → 推进所有从站到OP态

控制字6→7→15 → 逐轴使能

阶段3: FPGA周期运行 (OP后自动启动)

cycle_trigger(2ms) → 发LRW帧(含ref_sys_time)

→ 解析响应(状态字+编码器) → 写共享RAM

→ ARM读共享RAM, 计算轨迹, 写目标位置到共享RAM

→ FPGA下周期读取目标位置, 嵌入LRW帧发送

相关推荐
创界工坊工作室11 小时前
55-基于STC89C52宠物智能饲喂控制系统设计
stm32·单片机·嵌入式硬件·51单片机·proteus·宠物
极客 - L U14 小时前
卡尔曼滤波从零到精通
c语言·数据结构·单片机·嵌入式硬件·mcu
码小文16 小时前
CAM350使用笔记(6)---Gerber文件铺铜间距检查
嵌入式硬件·cam350软件·cam350使用笔记
Yiran_G18 小时前
双频 Wi-Fi 6 + 蓝牙 5.4:无声讯通 WS8712 模组的开发与集成要点
网络·嵌入式硬件·物联网·智能家居
光子物联单片机18 小时前
ESP32传感器模块编程实践(一)DIY智能WIFI视频控制小车
嵌入式硬件·esp32·智能硬件·硬件
2501_9226395819 小时前
率能半导体 SS6628E直流双向马达驱动芯片:20V/7A,覆盖电子锁、玩具、无线充电、机器人四大应用场景
单片机·嵌入式硬件·硬件工程
硅基造物主19 小时前
STM32 从 0 到 1 做智能家居(五):工程结构与代码骨架
stm32·单片机·嵌入式硬件·智能家居
幻智星科技20 小时前
蒙哥马利模乘FPGA优化实战
fpga开发·密码学
smartpi_ai20 小时前
机芯智能离线语音模块实战问答:SU-03T、CI-03T、SU-63T 与 JX-A7T 高频问题排查
人工智能·单片机·嵌入式硬件·ci/cd·语音识别
星夜离尘5620 小时前
FPGA 多通道 DAC 目标码影子寄存器:成组提交、同拍写入与快照边界
fpga开发