code file
数据链路层:是ESC与从站微处理器的数据交换层,ESC与从站微处理器之间可以采用SPI ( Serial Peripheral Interface,串行外设接口)模式传输数据
ethercat_spi_hw.c
串行模式处理器接口模块。定义了串行模式下的微处理器与ESC通信接口函数,供上层应用通信时调用,完成底层数据的交换。
应用层:真正实现EtherCAT协议的部分,包括状态机处理,周期性过程数据的处理以及非周期性邮箱数据的处理
ecatslv.c
状态机的处理模块。状态机转换请求由主站发起,主站将请求状态写入ALControl寄存器中,从站采用查询的方式获取当前该状态转换的事件,将寄存器值作为参数传入AL_ControlInd()函数中,该函数作为核心函数来处理状态机的转换,根据主站请求的状态配置SM通道的开启或关闭,检查SM通道参数是否配置正确等。
ecatappl.c
EtherCAT从站应用层接口,整个协议栈运行的核心模块,EtherCAT从站状态机和过程数据接口。Main()函数的定义,输入输出程数据对象的映射处理,ESC与处理器本地内存的输入输出过程数据的交换等。
mailbox.c
邮箱通信处理模块。包括邮箱通信接口的初始化,邮箱通道的参数配置,根据当前状态机来开启或关闭邮箱服务,邮箱通信失败后的邮箱重复发送请求,邮箱数据的读写以及根据主站请求的不同服务类型调用相应服务函数来处理,本文主要研究的是CoE邮箱服务类型的处理。
ecatcoe.c
COE处理函数定义模块。包括CoE接口的初始化,对当前请求的CoE服务的处理以及对保存而未处理过的CoE服务的处理。
sdoserv.c
SDO服务处理模块。处理所有SDO及SDO信息服务,包括对主站发送的上传、下载SDO服务请求的处理,处理完成后SDO响应数据由主站来主动读取。
objdef.c
访问COE对象字典模块。读写对象字典,获得对象字典的入口,以及对象字典的具体处理函数由该模块实现。
coeappl.c
COE服务的应用层接口模块。对CoE服务实际应用的处理以及CoE对象字典的处理。包括对象字典的初始化,添加对象到对象字典,移除对象字典中的某一条目以及清除对象字典等处理函数的实现。