You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决EVB-LAN9252与STM32间SPI通信异常问题?

EtherCAT从站SPI通信异常排查求助

项目概况

  • 硬件平台:EVB-LAN9252 + NUCLEO-G491RE开发板
  • 协议栈:SOES
  • 开发工具:通过rt-labs EtherCAT SDK(从站编辑器)生成ESI文件、EEPROM用bin文件及部分C文件,使用该SDK的从站资源管理器测试
  • 项目参考:与OpenEtherCATsociety/SOES仓库的issue 55高度相似

问题现象

编译项目并启动主站(EtherCat Explorer)后,从站可进入运行模式,但无法读取对象字典,经定位确认SPI通信不符合预期。

SPI验证测试

为验证SPI工作状态,尝试读取BYTE_TEST寄存器(地址0x64):

  • 预期返回值:0x87654321
  • 实际返回值:0x431400

测试代码基于SOES函数适配Cube IDE编写:

uint32_t lan9252_read_32 (uint32_t address)
{
   uint8_t data[7];
   uint8_t result[7];
       memset(data, 0, sizeof(data));

    data[0] = ESC_CMD_READ;  //0x03
    data[1] = ((address >> 8) & 0xFF);
    data[2] = (address & 0xFF);

    HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, RESET);
    HAL_SPI_TransmitReceive(&hspi1, data, result, sizeof(data), HAL_MAX_DELAY);
    HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, SET);

   return((result[6] << 24) |
          (result[5] << 16) |
          (result[4] << 8)  |
          result[3]);
}

附示波器波形图(记录SPI通信时序)

SPI配置参数(STM32全双工主模式)

  • 数据位宽:8 Bits
  • 字节序:MSB优先
  • 波特率:1.328125 MBits/s
  • 时钟极性:HIGH
  • 时钟相位:2 Edge(已尝试所有极性与相位组合,排除该配置问题)

EEPROM配置确认

EEPROM中EtherCAT从站控制器配置区域值为80 0F 00 CC 88 13 FF 00 00 00 00 80 00 00 57 00,首字节为PDI控制寄存器(0x140-0x141)初始化值,0x80已将过程数据接口设置为SPI,排除该配置异常。

内容的提问来源于stack exchange,提问作者Gmari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:21:07