Back to Blog

高性价比高实时Ethercat现场总线工业运动控制方案

#ethercat#st32

以上代码保持不变,仅作说明。

4.2 OSHW(硬件抽象层)

  • GPIO:用于控制 EtherCAT 从站的 LED复位 引脚。使用 HAL_GPIO_WritePin 完成高低电平切换。
  • 计时器:DC 模式需要精确的 分布式时钟(Distributed Clock)同步,建议使用 TIM1(高级计时器)配合 输入捕获(Input Capture)来捕获从站的时钟脉冲。
  • DMA:Ethernet MAC 的收发缓冲区采用 DMA 方式,需在 HAL_ETH_Init 时配置 ETH_DMA_TX_DESC_CNTETH_DMA_RX_DESC_CNT,确保足够的描述符数量。

4.3 NICDRV(网络驱动)

  • 初始化:调用 HAL_ETH_Init 完成 MAC、PHY 的初始化。注意 PHY 的 自动协商 必须成功,否则会导致帧丢失。
  • 收发函数:SOEM 通过 nicdrv_receivenicdrv_send 与底层驱动交互。实现时需处理 零拷贝(Zero‑Copy)以降低 CPU 负载。
  • 中断:Ethernet 中断(ETH_IRQn)用于通知帧到达,ISR 中仅设置标志位,实际处理在 nicdrv_receive 中完成,避免长时间占用中断。