之前写了一篇LAN9252移植的文档,是基于SPI接口的,但是在电机端的代码开发差不多的时,上了EtherCAT通信发现使用SPI与LAN9252进行通信带来的结果就是SPI的通信速率太慢了,MainLoop()函数在主循环中执行的时间在340us,即使后续进行了优化,时间仍然有150us。

        原因是MCU与LAN9252进行一次通信时候会涉及到8~9个字节通信,即使SPI的速率很高,有几十M,但是一次通信仍然花费了10us左右,而且MainLoop中会涉及到十几次读写操作,而且必须是阻塞读取。

        而且LAN9252与MCU在进行通信的时候会进行关中断和开中断操作,导致电机控制这边严重影响了。后面从淘宝上面买了一块FSMC接口的LAN9252开发板进行测试,MainLoop的执行时间在15us左右,二者的通信时间上面差了10倍左右。

        目前使用FSMC还是满足电机进行开发下去,记录一下LAN9252的FSMC接口移植过程,提供后续同学们的参考。

(1)STM32CubeMx配置:

        创建工程:

        FSMC配置:

  /** FSMC GPIO Configuration
  PE7   ------> FSMC_DA4
  PE8   ------> FSMC_DA5
  PE9   ------> FSMC_DA6
  PE10  ------> FSMC_DA7
  PE11  ------> FSMC_DA8
  PE12  ------> FSMC_DA9
  PE13  ------> FSMC_DA10
  PE14  ------> FSMC_DA11
  PE15  ------> FSMC_DA12
  PD8   ------> FSMC_DA13
  PD9   ------> FSMC_DA14
  PD10  ------> FSMC_DA15
  PD14  ------> FSMC_DA0
  PD15  ------> FSMC_DA1
  PD0   ------> FSMC_DA2
  PD1   ------> FSMC_DA3
  PD4   ------> FSMC_NOE
  PD5   ------> FSMC_NWE
  PG12  ------> FSMC_NE4
  PB7   ------> FSMC_NL

  PC0   ------> IRQ
  PC1   ------> SYNC1
  PC3   ------> SYNC0
  PE8   ------> RST
  */

        EtherCAT看门狗定时器的配置:

        中断配置:

(2)SSC Tool生成协议栈:

        SSC这边基本上和上篇文章差不多:LAN9252移植保姆级教程+CiA402协议

 

(3)LAN9252官方驱动下载:

         官网下载LAN9252驱动文件,官网驱动文件和配置文件在下载链接的LAN9252_PIC_SDK_V1.3(Driver only)中 ,驱动文件用到的头文件generictypedef.h在下载链接的EVB-LAN9252-Add-On_SDK_V1.2中。

        将这几个文件全部拷贝到EtherCAT目录下。

(4)EtherCAT协议栈代码修改:

        目前编译已经没有报错了,接下来是修改ESI文件

        800E00CC8813f000000000800000

        890E80CC88130000000000800000

        Eeprom配置上面两条都可以。目前我没有时间去了解这个Eeprom对这个EtherCAT初始化阶段的影响,肯定是有影响的。后续有空再更新ESI的内容。

(5)TwinCAT测试:

        移植完成测试后也能正常进入OP状态。总体来说移植比较简单,有了之前的SPI接口移植经验后FSMC基本上一次就移植成功了。

        补充:后续自己打的开发板到了,重新按照文章进行再次验证,文档写的没有问题,在TwinCAT上面也能进行DC同步,还有就是FSMC接口的芯片再初始化的时候一定要使用RST引脚进行复位,我文档里面没有复位踩坑查了好几个小时。

        Eeprom->ConfigData = 890E80CC88130000000000800000,最终确定是这个,不然ESC读取配置初始化时不会失败到FSMC接口。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐