基于LAN9252芯片的EtherCAT从站的实现
2021-03-19陶春荣崔恒荣游新望
陶春荣,崔恒荣,游新望
(中国船舶集团有限公司第八研究院,南京 211153)
0 引 言
EtherCAT总线由德国Beckhoff公司提出,是目前速度最快的工业以太网系统,其组网结构简单,兼容标准以太网,通信周期可达微秒级。该总线具有卓越的通讯性能、高精度同步节点、灵活的布线方式以及任意的节点数量,可支持任何网络拓扑类型。它可以使用标准的以太网电缆传输。由于采用了保留的以太网帧类型0x88A4,因此该总线协议可以与其他以太网协议并行运行。它不需要IP协议,但是可以被封装在UDP/IP协议中。EtherCAT总线硬件设计上采用主从式结构,其协议的处理是由从站控制器ESC内部硬件直接实现的。因此,它的数据处理速度取决于硬件的处理能力。
1 EtherCAT从站控制器简介
在EtherCAT的一个网段网络中,除主站外接入网络的节点称为从站。从站子系统通过从站控制器(ESC,Ether CAT Slave Controller)接入EtherCAT网络。目前主要有3种接入方式:
(1) 使用授权的核心将ESC 的硬件电路以“软核”的模式集成到FPGA 中,使得FPGA 具备ESC 这个通信模块。目前,Xilinx公司和Altera公司都有相应的EtherCAT授权的核心可供选用。
(2) 使用专用的ESC芯片。该芯片专门用于EtherCAT通信,设计时采用“ESC+μC”结构,即以一个ESC芯片作为EtherCAT通信的从站控制器,而从站的系统以微控制器μC来管理并通过过程数据接口(PDI,Process Data Interface)读取写入ESC。典型的ESC芯片代表是Beckhoff公司的ET1100 /ET1200芯片,以及Microchip公司的LAN9252芯片等。
(3) 使用具备EtherCAT通信功能的微处理器。该方式省去ESC芯片的使用,大大降低设计工作量。目前,具有EtherCAT通信功能的微处理器有瑞萨公司的R-IN32M3-EC、Infineon公司的XMC4800以及德州仪器的AM3359/AM4379 /AM5728等芯片。
由于本文的模块设计为EtherCAT从站通信模块,适合采用ESC从站专用芯片作为通信站点控制器,因此采用的是LAN9252和STM32F732芯片的EtherCAT从站的实现方法。
1.1 LAN9252芯片介绍
Microchip公司LAN9252 作为EtherCAT从站控制器,其内部集成了两个PHY 芯片,可以配置为全双工100 Mbps 铜缆(100BASE-TX)或者100 Mbps 光纤(100BASE-FX)传输方式。LAN9252带有4 KB的DPRAM、3 个现场总线存储器管理单元FMMU及4 个SM 通道管理器。此外,它的内部集成以太网PHY 芯片,并支持HP Auto-MDIX 功能。它带有3个以太网端口,可以实现线性连接、星形连接以及树形连接等多种拓扑结构。从站启动时需要从外部引脚和EEPROM读入配置信息。
1.2 STM32F732芯片介绍
STM32F732芯片是意法半导体公司开发的32位微处理器,采用的是ARM公司的Cortex-M7高性能内核。Cortex-M7是目前性能最强的控制器内核,具有六级顺序超标量流水线、单双精度浮点运算单元、指令和数据缓存以及分支预测和TCM等特性,相比之前M4内核其性能得到极大提升。STM32F732主频高达216 MHz,具备内存保护单元,支持DSP指令,在执行内部FLASH代码时能达到1082 Core Mark /462DMIPS性能表现。该内核集成了一级缓冲(4 KB指令缓存+4 KB数据缓存),让外部存储器的使用性能变得卓越。同时,它具有多通道DMA、multi-AHB总线矩阵、Chrom-Art加速器、AXI总线等强大的硬件支持,极大地优化了内部数据连接,无需CPU干预即可完成大量数据搬迁。STM32F732有1024 KB内部FLASH,320 KB存储,集成AES、DES、HASH、HMAC加密硬件电路,支持多种外部存储、多达18 通道定时器及以太网连接TFT控制器。
2 硬件设计
本方案采用STM32F732芯片作为从站微处理器、LAN9252作为EtherCAT从站控制器,为此可以将整个从站系统分为STM模块(微处理器部分)和ESC模块(控制器部分)两大模块。STM模块的功能是实现应用层协议,ESC模块的功能是实现EtherCAT数据链路层的功能。系统原理框图如图1所示。
图1 系统原理框图
2.1 ESC模块硬件设计
LAN9252内部集成有上电复位电路,在芯片复位后会根据其硬件配置引脚的电平状态将器件配置成相应的功能。LAN9252主要的硬件配置管脚定义如表1所示。
表1 硬件配置管脚定义
当完成硬件配置后,LAN9252通过读取外接EEPROM中的从站配置信息完成LAN9252从站的建立。当LAN9252自动配置完成后,微处理器便可以通过配置好的PDI(Process Data Interface,即过程数据接口)接口与LAN9252进行数据交互。LAN9252支持两种类型的PDI接口,SPI串行模式或者MCI并行模式。串行接口适用于数据传输量比较小的应用,并行接口适用于传输数据量较大的复杂设备。为了实现高速率的数据传输,本系统中采用外部总线,通过变址寻址的方案和LAN9252进行通信。LAN9252支持两种并行通信方式,一种是总线复用模式,一种是变址寻址模式。本方案中采用16位变址寻址模式对LAN9252进行寻址。
本方案采用查询方式和中断相结合的数据读取方式,所以ESC的IRQ引脚要连接至STM模块的外部中断引脚。由于LAN9252通过SYNC0和SYNC1引脚为从站提供精确的同步脉冲以实现从站同步,因此也需要将SYNC0和SYNC1引脚连接至STM模块的外部中断引脚。LAN9252的接口连接图如图2所示。
图2 LAN9252接口连接图
2.2 STM模块硬件设计
STM模块是EtherCAT从站的控制核心。该模块的作用是通过FSMC接口接收来自ESC模块的控制信息,同时接收来自系统设备层的数据信息,将数据信息通过FSMC总线传递给ESC模块,从而实现相关数据在EtherCAT总线上的接收和传输。
STM32F732芯片的FSMC接口支持多种外部存储区扩展。该接口内部集成了对这些存储区的控制器,可以将系统AHB总线转化成与外部存储区复合的总线接口形式。FSMC在STM32F732芯片内部占用大小为1 GB的内存寻址空间。这部分内存寻址空间分为4个大小为256 MB的Bank,其中Bank0又分为4个Region,每个Region占64 MB。Bank1和Bank2又都被分成2个Section,分别是属性存储空间和通用存储空间。Bank3分成3个Section,分别是属性存储空间、通用存储空间和I/O存储空间。每个Bank和Region都有独立的片选控制信号,也都能进行独立的配置。具体地址映射关系如图3所示。
图3 FSMC地址映射关系图
由于本方案中采用16位变址寻址模式对LAN9252进行寻址,因此FSMC模块必须设置成16位数据宽度、PSRAM控制器模式,使用NE0作为LAN9252的片选信号。
ESC模块有3个中断信号需要接入STM模块中,而对于STM32F732芯片来说其所有通用管脚均可设置为中断触发模式并由EXTI(中断/事件控制器)进行检测控制。EXTI 有3种触发类型:上升沿触发、下降沿触发和任意沿触发。根据ESC模块的手册本方案采用的是上升沿触发。
3 软件设计
软件主要由两部分组成,一是EEPROM中的ESC模块配置文件,二是STM模块软件。ESC模块配置文件是从站物理层的基本配置信息,而STM模块软件完成的是从站应用层的相关初始化、协议解析和数据处理等工作。
3.1 ESC模块配置文件
ESC模块配置文件主要是对LAN9252的PDI(Process Data Interface,即过程数据接口)接口、从站状态机和状态寄存器以及PDI看门狗寄存器等进行相关配置。EEPROM数据格式如图4所示。
图4 EEPROM配置数据信息
ESC模块配置文件采用ETG协会提供的SSC Tool配置工具生成。根据PDI硬件接口工作模式选择对应的配置项、设备版本等信息,配置完成后导入对象字典描述文件以及数据类型,然后点击生成便可自动生成EEPROM配置文件。
3.2 STM模块软件设计
STM模块软件主要完成的功能为内核初始化、FSMC接口和EXIT接口初始化、EtherCAT协议栈及相关变量数据的初始化,最终进入EtherCAT协议栈状态机。流程如图5所示。
图5 软件流程图
STM模块内核初始化主要是对STM32F732芯片的时钟进行配置,使其工作在216 MHz频率下,并配置好EtherCAT协议栈所需的定时器资源。FSMC接口和EXIT接口的初始化是根据STM模块与LAN9252的硬件接口关系进行相应的配置工作。在本方案中STM模块与LAN9252的通信接口采用FSMC接口,所以需要根据配置文件中定义好的PDI接口的特性对FSMC接口进行配置。本方案中PDI接口采用16位变址寻址模式,因此FSMC接口需配置成16位PSRAM模式。本方案中PSRAM模式使用的是BANK0区域,所有此时以0x60000000为起始地址的64 KB空间将映射为LAN9252的内存空间。由于EtherCAT的状态事件以及同步数据是通过中断控制模式进行读写的,所以需要针对LAN9252的3个中断对STM模块的EXIT接口进行配置。本方案配置了EXTI1、EXTI2、EXTI3作为LAN9252的中断接口。至此,STM模块的初始化功能已完成。
EtherCAT协议栈主要实现EtherCAT状态机的变换、数据的读写等功能。该协议栈由SSC Tool配置工具生成。但是,生成的协议栈不能直接在STM模块上运行,需要根据STM模块的硬件设计进行相应的移植工作。首先需要对3个中断处理函数EXTI0_IRQHandler、 EXTI1_IRQHandler、EXTI2_IRQHandler进行修改。将这3个函数与EtherCAT协议栈中断处理函数PDI_Isr()、Sync0_Isr()以及Sync1_Isr()相关联;其次将定时器中断函数TIM2_IRQHandler()和ECAT_CheckTimer()函数相关联,以实现EtherCAT协议栈运行时的定时要求;最后将FSMC接口的读写函数改写到EtherCAT协议栈的4个读写函数HW_EscRead()、HW_EscReadIsr()、HW_EscWrite()、HW_EscWriteIsr()中便完成了EtherCAT协议栈在STM模块上的移植工作。
4 结束语
传统的控制系统一般采用RS232、CAN等通讯方式进行控制命令和数据的传输,控制命令和数据传输的实时性和同步性很难得到保证,无法做到实时高精度的控制。通过上述方法实现的基于LAN9252芯片的EtherCAT从站其优异的通讯性能和同步特性保证了控制系统的精度和实时性。该EtherCAT从站已经在某型产品的伺服驱动平台上使用,应用稳定可靠,效果良好,具有很好的实际应用和推广价值。