以下内容结合自己实际项目经验以及网上公开资料整理,如有侵权,请联系修改~
简介
移植平台STM32,从站芯片AX58100,使用EtherCAT Slave Stack Code Tool (SSC) V5.11 工具生成从站代码。
SSC工具可以一键式生成从站源码,无需开发者深入了解复杂的 EtherCAT 底层机制,只需进行简单的配置,就能自动基于 ESI(EtherCAT Slave Interface)规范生成精确的从站代码框架,极大地节省了开发时间和精力。
SSC使用
一.新建工程
如上图所示,有两个选项,Default和Custom。这个两个选项其实没有太大的区别,可以理解为Default需要我们自己来进行一些配置,Custom是提供好的几个配置模板。
这里我们选择Default进行配置。。
二.配置选项
这些配置选项其实就是最终生成的源码中ecat_def.h文件中的宏定义。可以直接在生成的源码中搜索查看其具体作用。
1.SlaveInformation
这个选项是配置从站的一些设备信息,测试代码可以直接使用默认的选项,产品的话则根据设备信息来进行配置。
名字 | 值 | 说明 |
VENDOR_ID | 0x00000B95 | 填写亚信芯片AX58100的ID |
VENDOR_NAME | ASIX Electronics Corporation | 亚信公司名称 |
PRODUCT_CODE | 0x20250225 | 产品代码 |
REVISION_NUMBER | 0x00000001 | 版本号(烧写xml时可以用于识别文件版本) |
DEVICE_NAME | AX58100 | 设备名称 |
2.Generic
通用选项直接使用默认配置。
3.Hardware
这些配置是和硬件相关的选项。
名字 | 值 | 说明 |
EL9800_HW | 1 | 置1后会生成EL9800的硬件接口文档,使用SPI接口可以在该文档的基础上进行修改 |
MCI_HW | 0 | 置1后会生成通用的并行硬件接口文档,使用Local Bus接口可以在文档的基础上进行修改(该选项和EL9800_HW二选一) |
CONTROLLER_16BIT | 0 | 使用16位MCU置1(这个选项在源码中实际上没啥用) |
CONTROLLER_32BIT | 1 | 使用32位MCU置1(这个选项在源码中实际上没啥用) |
_PIC24 | 0 | 使用Microchip的MCU置1,使用STM32置0(会提示warning信息,不用理会) |
ESC_16BIT_ACCESS | 1 | MCU只支持以16bit访问ESC DPRAM则置1 |
ESC_32BIT_ACCESS | 0 | MCU只支持以32bit访问ESC DPRAM则置1 |
MBX_16BIT_ACCESS | 1 | MCU只支持以16bit访问nailbox memory则置1,否则为8bit |
其他的是默认选项。
4.EtherCAT State Machine
Ethercat 状态跳转的一些设置,使用默认设置。
名字 | 值 | 说明 |
BOOTSTRAPMODE_SUPPORTED | 0 | bootstarp模式,如果需要FOE更新固件,则需要配置 |
OP_PD_REQUIRED | 1 | 如果置0,那么在SAFEOP_2_OP 状态跳转的时候,即使没有收到PDO数据,也会跳转成功,而看门狗在接收到第一包PDO数据的时候激活 |
PREOPTIMEOUT | 0x7D0 | 状态从Init 跳转到PreOP/Boot的超时时间,单位ms(在ESI 文件中 : “PreopTimeout”). |
SAFEOP2OPTIMEOUT | 0x2328 | 状态从 SafeOP 跳转到OP的超时时间 (在ESI 文件中 : “SafeopOpTimeout”) |
CHECK_SM_PARAM_ALIGNMENT | 0 | 置1将会检查SM的数据长度和地址,例如设置了ESC_32BIT_ACCESS, 那么长度和地址应该按照4字节对齐 |
5.Synchronisation
同步配置,配置了ECAT_TIMER_INT,其他使用默认的。
名字 | 值 | 说明 |
AL_EVENT_ENABLED | 1 | 配置1为支持中断,SM同步模式需要配置,与PDI_IRQ相关 |
DC_SUPPORTED | 1 | 配置1为支持DC时钟,与DC功能SYNC0/1相关 |
ECAT_TIMER_INT | 1 | 配置为1则需要MCU提供一个1ms的定时器中断,用于Ethercat看门狗的喂狗,如果置0,则需要把协议栈的喂狗代码放在MCU程序的循环中 |
6.Application
这里的APPLICATION提供一些应用实例,可以在这些例子上修改,也可以自己建立应用程序。
名字 | 值 | 说明 |
TEST_APPLICATION | 0 | 生成测试例程,功能比较全 |
EL9800_APPLICATION | 0 | 生成EL9800平台测试例程 |
CiA402_DEVICE | 0 | 如果需要canopen 402协议可以配置,一般用在电机产品中 |
SAMPLE_APPLICATION | 0 | 独立与硬件的应用程序,如果SSC中的配置没有目标平台的,可以使用它 |
SAMPLE_APPLICATION_INTERFACE | 0 | 提供一个简单接口来创建一个可供外部程序使用的静态库 |
APPLICATION_FILE | #include “MyApplication.h” | 创建的应用程序的头文件 |
USE_DEFAULT_MAIN | 0 | 置0则使用STM32的main函数 |
7.ProcessData
名字 | 值 | 说明 |
MAX_PD_INPUT_SIZE | 0x44 | 从站输出的过程数据需要大于该设置值 |
MAX_PD_OUTPUT_SIZE | 0x44 | 从站接收的过程数据需要大于该设置值 |
PDO的配置,其他使用默认配置。
8.Maibox
也是使用的默认配置,未作修改,如果需要FOE固件升级的话,可以配置一下。
名称 | 值 | 说明 |
FOE_SUPPORTED | 1 | 如果需要用到FOE的话,配置为1 |
参数设置完后,保存【project】,名称命名为“MyApplication”,后续会以此命名生成的excel和xml文件。
三.创建应用
选择Tool->Application->Creat new ,会弹出如下一个Excel表格,在这个表格中设计对象字典,然后生成应用程序。
对象字典索引范围:
表格中的内容如下:
名称 | 描述 |
Index | 索引 |
ObjectCode | RECODE:相当于结构体,子索引的类型可以不相同; ARRAY:相当于数组,子索引的类型都相同; VARABLE:类似于单个变量 |
SI | 子索引(从1开始) |
DataType | 数据类型,BOOL、UINT8、UINT16、UINT32、INT8、INT16、INT32、CHAR、UCHAR等 |
Name | 对象字典名称 |
Default | 默认值 |
M/C/O | mandatory ,optional or conditional. |
Access | 访问属性,ro:只读 wo:只写 rw:可读可写 |
rx/tx | PDO映射属性, rx:RPDO映射 tx:TPDO映射(从站发送的数据填tx,接收的数据填rx) |
Description | 描述 |
定义好的Excel文档如下所示:
注意:16bit对齐(如图,不足16位使用pad_x在补齐)。
保存excel文件,后续如有修改,可以从菜单Tool->Application->Import 导入文件,如果导入有报错,请根据错误信息来修改excel表格。
四.生成源码
Project->Creat new Slave Files ->start 生成从站源码。在文件夹中出现一个Src的文件夹,这里面包含了我们的从站源码,之后会用这个源码移植从站程序.
源码结构:
五.烧写EEPROM
- Tool->EEPROM Promgrammer 打开烧写界面如上图所示
- File->Open 选择相应的XML文件。
- Slaves->Scan扫描从站。
- Slaves->Program Selected 等待烧写完成
注意
在生成的XML文件最后几行中,EEPROM中的ConfigData可能需要修改。这个ConfigData其实是EEPROM前几个字节的数据。EEPROM的前16个字节会在上电或复位后自动加载到ESC的相应寄存器中,所以这里的字节需要根据ESC器件来进行配置。LAN9252和ET1100、AX58100的配置有些区别,可以到官网上看一下配置。
以下是一些可用的配置数据:
0, AX58100_SPI 050603cc0a000000000000000000 测试ok
1, AX58100_FMSC 080000cc0a000000000000000000 测试ok
2,LAN9252_SPI 012345678901234567890123456
3,LAN9252_FMSC 012345678901234567890123456
4,ET1100_SPI 012345678901234567890123456
5,ET1100_FMSC 012345678901234567890123456
6,ET1200_SPI 012345678901234567890123456
7,ET1200_FMSC 01234567890123456789012345