十四.EtherCAT开发之ST MCU STM32F407ZGt6+ AX58100的开发FOE应用

十四.EtherCAT开发之ST MCU STM32F407ZGt6+ AX58100的开发FOE应用

STM32F407ZGt6与AX58100是 SPI连接,工作在SPI模式。

FoE(File Access over EtherCAT)可实现EtherCAT节点之间的文件传输。

14.1 SSC TOOL配置

boot mode与FOE支持

FOE 说是要在状态机的boot mode下运行,实际测试了在OP模式也能收数据。可能是为了稳定,减少出错把,毕竟是升级固件。

14.1.1 XML支持字段

XML名称—AX58100-UC16-R1.xml

14.1.2 从站STM32F407ZGt6+AX58100参考代码

D:\ethercat_stm32_ec01_master\AX58100从站开发板\04.软件开发指南\2.代码例程\EtherCAT例程\IO-FSMC-58100\IO-FMSC-58100\FMSC Ethercat AX58100\STM32F407 Ethercat\MDK-ARM

14.2 FOE调试问题

14.2.1 FOE问题–twincat foe download 灰色无法执行

TIWNCAT XML 未配置支持FOE以及bootstarp,注意更新XML 后,从机EEPROM要同步更新,否则从机不支持FOE,即使协议栈支持FOE,也收不到FOE数据包
十四.EtherCAT开发之ST MCU STM32F407ZGt6+ AX58100的开发FOE应用_第1张图片
十四.EtherCAT开发之ST MCU STM32F407ZGt6+ AX58100的开发FOE应用_第2张图片

原来是XML未配置支持FOE导致。

14.2.2 ECM为主,从机AX58100,boot状态下FOE数据包无法收到

协议栈代码运行未出现异常错误打印。

ecm主 对58100从,mb 4数据包未收到,无法进入foe流程

XML未配置支持FOE 以及bootstrarp,导致58100 EEPROM 生成字段不支持FOE,从站芯片BOOT下不接收FOE数据包。

XML配置支持FOE以及bootstarp即可。

14.2.3 twincat为主,从机AX58100,boot状态下收到MBXERR_UNSUPPORTEDPROTOCOL

AL_ControlInd stateTrans=0x81
AL_ControlInd result=0 stateTrans=0x81
AL_ControlInd stateTrans=0x13
AL_ControlInd result=0 stateTrans=0x13
INIT_2_BOOT
Entered Bootstrap mode

从机进入BOOT

AL_ControlInd 1462
AL_ControlInd 1472
Entered Bootstrap mode
MailboxServiceInd MBXERR_UNSUPPORTEDPROTOCOL MBX_TYPE=8
MailboxServiceInd MBXERR_UNSUPPORTEDPROTOCOL MBX_TYPE=8
MailboxServiceInd MBXERR_UNSUPPORTEDPROTOCOL MBX_TYPE=8
MailboxServiceInd MBXERR_UNSUPPORTEDPROTOCOL MBX_TYPE=8
MailboxServiceInd MBXERR_UNSUPPORTEDPROTOCOL MBX_TYPE=8
MailboxServiceInd MBXERR_UNSUPPORTEDPROTOCOL MBX_TYPE=8

相关代码如下

UINT8 MailboxServiceInd(TMBX MBXMEM *pMbx)
{
    UINT8 result;

    /*only FoE is allowed in Boot mode*/
    if(bBootMode == TRUE && (MBX_TYPE_FOE != ((pMbx->MbxHeader.Flags[MBX_OFFS_TYPE] & MBX_MASK_TYPE) >> MBX_SHIFT_TYPE )))
    {
   printf("%s MBXERR_UNSUPPORTEDPROTOCOL MBX_TYPE=%d\r\n",__func__,((pMbx->MbxHeader.Flags[MBX_OFFS_TYPE] & MBX_MASK_TYPE) >> MBX_SHIFT_TYPE ));
     return MBXERR_UNSUPPORTEDPROTOCOL;
 }
 printf("%s %d\r\n",__func__,__LINE__);

还未找到原因,可能是SSC TOOL版本太老生成的协议栈代码,在此基础上参考新版本SSC TOOL生成的支持FOE代码,两个不同版本SSC TOOL 平移相关FOE代码异常导致。

你可能感兴趣的:(ethercat,总线应用开发总结,stm32,单片机,嵌入式硬件)