基于STM32F407-LAN9252的EtherCAT从站协议移植过程

EtherCAT移植过程

前言:刚拿到一个EtherCAT的开发需求,本来想安心当个CV战士的,结果在网上找了一圈,只有https://www.hexcode.cn/article/5e3ee9a835616641b2daef97 这篇写的相对详细,看来偷不了懒了,只有自己重新整理开发了。

1、需求

基于STM32F407芯片、LAN9253芯片(自带PHY芯片),验证8路I/O程序的通信。

2、使用到的工具

  • 协议栈生成:Excel(编辑协议栈预文件),SSC-5.11(生成ESC协议栈文件),XMLSpy(查看XML文件);
  • 代码编写:CubeMX,Keil5;
  • 程序验证:TwinCAT3.0。

3、SSC构建协议栈文件和XML

3.1、配置SSC 协议栈/XML

SSC-5.11和SSC-5.12生成的协议栈文件差别有点大,SSC-5.11更适配MicroChip官网提供的SSC SDK。打开SSC,选择8bit I/O模板,点击“OK”生成Excel文件(需要保证Excel文件是非加密状态)。

SSC-5.11和SSC-5.12生成的Excel文件区别在于5.12有一段0xFxxx的片区,用于通道数量的填写。5.11生成的协议栈不用在意这个,状态转换的时候会忽略这个步骤。(所以不能用非同一SSC配出来的XML和协议栈!)

打开5.11生成的Excel文件,配置如下:

0x6000定义的是输入,0x7000定义的是输出,配置完成后保存,退出。

这个时候有的SSC会自动加载Excel文件,如果没有自动加载,点击Tool->Application->Import,加载刚才配置的Excel文件。

RT2000是自定义的SSC协议栈名称,右边显示的是所使用到的SSC协议栈版本。附一张5.12配出的文件:

可以很明显的看出协议栈里的很多文件已经变更了,5.11版的协议栈和官方给的SDK更适配。参考“AN_ET9300.pdf”文件,SSC选项设置如下:

选项设置好后点击Project->Create New Slave File,生成XML文件和协议栈文件夹。

3.2、修改SSC 协议栈/XML

由于SSC是针对倍福公司的软硬件生成协议栈,而我们使用的是基于LAN9252芯片和STM32F4芯片的程序架构,所以需要更改一些东西:

3.2.1、XML-> EEPROM

打开XML文件,Descirptions->Devices->Device->Eeprom->ConfigData:

800E00CC8813f000000000800000

保存,找到TwinCAT3路径的XML路径:C:\TwinCAT\3.1\Config\Io\EtherCAT,把TwinCAT3自带的XML模板全删了,然后把自己生成的XML文件丢进去。

3.2.2、增加LAN9252.c/LAN9252.h文件

Micrchip官网下载SDK(“LAN9252-PIC32-SDK-1.1”),里面有这个两个文件,我们只需要里面的代码架构,里面的内容都可以自己写。

4、创建MDK工程,移植协议栈

4.1、CubeMX创建STM32F407工程

此过程中,我们需要开启以下引脚功能:

  • 外部晶振;
  • SPI1;
  • 1个定时器中断;
  • 3个外部中断(一个主中断,两个时钟同步中断,该程序使用的是DC同步,如果是用Free同步或者是SM同步,则只需要开一个主中断,主中断和定时器中断的优先级一样且要高于时钟同步中断);
  • 所使用的的I/O引脚。
  • 串口(非必须)。

点击Project Manager,添加工程名,选择MDK-ARM,点击Create Code生成对应的MDK工程。

4.2、移植协议栈

把第3章生成的协议栈添加进MDK文件树中,如下图:

RT2000.c是SSC生成的“从站APPlication”文件,I/O引脚映射和应用层逻辑在这个文件里面修改;

LAN9252.c是SDK里面的,用于完成MCU和LAN9252芯片之间的通信建立。

重点就在这两个文件里面,除此之外,在spi.c文件里面创建对应的spi读写函数就行了。

接下来按照顺序,先修改spi,在修改LAN9252,最后修改APPlication文件。

4.2.1、SPI.c

根据SDK文件里面的SPIDriver,创建SPI发送/SPI接收函数,其实也可以直接Copy过来用,删除SPIOpen(),SPIPut(),修改一下SPIWrite()和SPIRead()对应的读写HAL函数,补一下(void)。最后修改一下

SPI_CS的置高/置低HAL函数:

#define DESELECT_SPI    HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port,SPI1_NSS_Pin,GPIO_PIN_SET)

#define SELECT_SPI        HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port,SPI1_NSS_Pin,GPIO_PIN_RESET)

#define CSHIGH()        DESELECT_SPI

#define CSLOW()            SELECT_SPI

4.2.2、LAN9252.c

由于SDK里面的文件是针对MicrChip公司自家的PIC32芯片,所以改动内容有点多,但都是把PIC32的函数格式改成HAL函数格式。

这里,关于定时器,我Cubemx配置的是tim2,在移植过程中,担心基本定时器不够用,后面改起来麻烦,就直接在代码里自己换成了tim7。这里可以根据需要,换成自己的定时器。

然后是中断服务函数:

Lan9252.c->HW_EscWirte()里面,修改如下:

删除这个函数之后的所有函数,那些函数是PIC的中断函数,我们已经自定义了。

4.2.3、RT2000.c – APP程序

这个文件中,根据需要修改我们的程序逻辑就好。

4.2.3.1 停止输出

UINT16 APPL_StopOutputHandler(void)

4.2.3.2 输入地址映射

void APPL_InputMapping(UINT16* pData)

4.2.3.3 输出地址映射

void APPL_OutputMapping(UINT16* pData)

4.2.3.4 APP应用逻辑

void APPL_Application(void)

4.3、补充说明

4.3.1、UINT16_VAL 和 UINT32_VAL

这是PIC芯片的库文件包含,如果不想做太多更改,在自己的spi.h文件中直接添加如图联合体:

4.3.2、MEM_ADDR长度

UINT16用SPIWriteWord()

UINT32用SPIWriteDWord()

4.3.3、HW_Init()

像 #if USE_SPI 这样的筛选函数,直接删掉。

5、程序验证

使用TwinCAT3创建程序,更新EEPROM:

至此,EtherCAT从站协议栈移植完毕。

代码部分:基于STM32F407-LAN9252的EtherCAT从站协议移植过程,代码部分https://blog.csdn.net/qq_41580996/article/details/130292031

TwinCAT调试过程中出现的错误码,参考倍福官方给的详解:

https://infosys.beckhoff.com/english.php?content=../content/1033/ethercatsystem/1072497163.html&id=

点赞-收藏-over。

  • 26
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
### 回答1: EtherCAT SSC Tool 5.12是一款用于配置和调试EtherCAT设备的软件适配器。EtherCAT是一种快速实时以太网网络通信协议,而从设备指的是连接在EtherCAT网络中的外围设备,在工业控制系统中广泛应用。 这个软件适配器提供了一种直观且易于使用的用户界面,可让用户轻松地配置和监控从设备。它能够检测和诊断网络中的问题,并提供详细的错误报告和诊断信息。此外,EtherCAT SSC Tool 5.12还支持多种EtherCAT协议,可以灵活地适应不同类型的从设备。另外,通过该工具,可以对从设备进行参数设置、监视状态、备份和恢复等操作,从而提高了设备的功能和稳定性。 总之,EtherCAT SSC Tool 5.12是一款功能强大且易于使用的EtherCAT设备配置和调试工具,它在工业控制系统中具有重要作用。 ### 回答2: EtherCAT​​ SSC Tool是一种用于配置和管理EtherCAT​​伺服驱动器的工具。它是一个软件工具,可使用PC连接和配置通过EtherCAT​​总线连接的伺服驱动器。 EtherCAT​​是一种高性能、实时、工业以太网协议,可用于控制和通信。 EtherCAT​​ SSC Tool版本5.12是最新版本,它提供了更好的性能和更好的功能,以便更好地控制和管理伺服驱动器。此外,它还具有更高的兼容性和灵活性,以便更好地满足各种工业应用的需求。EtherCAT​​ SSC Tool 5.12可用于许多应用程序,包括工厂自动化、机器人、医疗设备、航空航天设备和更多领域。它提供了一种高效和可靠的方式,以便在各种工业应用中管理和控制EtherCAT​​伺服驱动器。但是,请注意,他只是一个工具,需要在专业人士的指导下正确使用。 ### 回答3: EtherCAT SSC Tool是一款专门针对EtherCAT的开发、调试和测试工具。其开发商是Beckhoff公司,是一家专注于高性能自动化控制技术的公司。当前最新版本为5.12,它提供了较完整的EtherCAT开发环境和详尽的EtherCAT驱动支持。 EtherCAT SSC Tool 5.12支持多种开发语言,如C/C++、C#和VB.Net等,并提供了多种API,供用户根据需要进行集成开发。此外,它还提供了多种调试工具,如实时监控、在线数据显式、调试上传下载等,方便开发者进行调试、故障排除和性能测试。 整个开发过程中,用户只需要根据设备供应商提供的数据手册填写相关参数和结构体即可,同时也可以通过支持的实时监控功能快速定位潜在的问题。使用EtherCAT SSC Tool进行从开发,可以节省大量的开发时间和精力,提高开发效率。 综上,EtherCAT SSC Tool 5.12是一款非常实用的EtherCAT开发、调试和测试工具,可以帮助开发者快速搭建EtherCAT,并提供了全面的调试工具进行集成开发和故障排除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值