[EtherCAT] LAN9252移植保姆级教程+CiA402协议
这是我写的第一篇文档,希望对想移植LAN9252的同学有帮助。
目前的移植是基于官方的LAN9252_PIC_SDK_V1.3上面去移植LAN9252+CiA402协议,使用的开发板是STM32F407系列:
关于LAN9252移植参考,网上是有比较多的资料的,但是很多都是写的不是很全,没有一篇是完全移植从头走到尾的。目前我在写这篇文档的时候是完全不熟悉LAN9252芯片的,目前移植前前后后花了3天。
因为刚刚在官方1.1版本上面去移植的,移植过程中遇到很多的问题,其实LAN9252网上的移植博客是很多的。跑通1.1版本后发现官方的1.3版本LAN9252特别好移植。
LAN9252的移植主要是围绕这SPI外设,DC同步的几个中断、定时器这个三个进行展开。
(1)创建新工程:
目前我使用的开发板的STMCUBEMX配置如下,主要还是 SPI接口 和 ISR、SYNC0、SYNC1三个中断 与 一些复位引脚.





定时器配置方面的话,需要用到一个定时器,定时器周期需要是1ms,剩下就是中断抢占优先级的设计,可以根据自己的情况去调整优先级。




(2) SSC生成代码:
目前我使用的SSC Tool工具是5.12版本的,除外还有5.11和5.13版本的,但是网上说的是版本之间生成代码的差异较大,建议使用5.11或者5.12版本去移植LAN9252,当然这只是网上说的。
目前我使用的是SSC Tool里面自带的“EL9800 | 2Axis CiA402 Sample”选项去生成代码。具体的修改如下所示:







打开SSC Tool生成的xml文件,参考下面图片去修改xml文件。Eeprom->800E00CC8813f000000000800000

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


从官方资料上面看LAN9252驱动是有1.0版本、1.1版本、1.3版本。但是貌似1.0版本和1.1版本的移植非常的不友好,我也是踩了2两天坑才把1.1版本的移植成功的,1.3版本是最好移植的,修改的内容少。
下面将展示我在1.3版本上面的移植内容,这部分内容是和STM32CubeMX上面的配置是对应的:










(4)SSC代码适配:
SSC代码这边没有什么好说的,基本不需要修改,这个过程可能会设计到一个对象字典对齐的问题,目前我写这篇文档是没有去修改的,可能会涉及到16字节长度的问题。目前测试是没有16字节对齐问题的。




(5)移植完成结果测试
我这边觉得代码放百度网盘链接太容易失效了,而且我不经常看博客回复大家的信息,干脆就放语雀上面了,直接到语雀上面去拿就行了,这篇文档全程去由官方代码+STM32CubeMX去移植的,意味着所有的STM32系列都可以移植,移植过程中注意一下和定时器相关的计数值和定时器周期就可以了。
代码获取在语雀中:https://leeteam.yuque.com/wt891w/rif1zo/txuhx8zq6hb6y9tt?singleDoc# 《LAN9252从站移植记录》




简单的挂后台测试了几天,OP正常,没有掉OP状态和报错信息,大概率是移植没有问题的。
注意:跑DC模式的情况下记得使用实时性网卡,并且TwinCAT需要跑在“Run Mode”,不能跑在“Config Mode”。踩过坑的都知道,如果参考我的移植成功,并且可以进入OP状态,但是跑一段时间出现同步异常情况就得考虑是不是没有使用实时性网卡导致的,这是window电脑的问题,不是从站的问题。
更多推荐
所有评论(0)