2EtherCAT从站程序基本操作函数2.1硬件相关函数
用于硬件初始化的函数为HW_Init(),函数用于初始化处理器与ESC的接口,本文处理器与从站控制器之间的PDI接口选择的是MCI接口,初始化指向ESCDPRAM的指针pEsc,该指针指向ESC物理内存的起始地址,当处理器读写ESC寄存器地址的数据时,用该指针来寻址。初始化ECAT定时器,使能ESC中断信号,清除应用层事件,初始化SM通道参数,完成底层硬件初始化的工作。
ECAT初始化函数为ECAT_Init(),函数用于初始化EtherCAT从站接口、邮箱服务接口以及过程数据相关变量,应用层状态寄存器、错误标志变量以及CoE相关变量的初始化。
硬件读/写函数接口为HW_EscReadAccess(UINT8*pData,UINT16Address,UINT16Len)和HW_EscWriteAccess(UINT8*pData,UINT16Address,UINT16Len),其中入口参数pData为报文数据的指针,Address为请求访问的ESC寄存器起始地址,Len为从ESC读取或写入的数据长度,返回值为空类型。
这两个函数主要完成的是处理器与ESC从站控制芯片之间的底层数据交换,包括处理器通过MCI或SPI接口从ESC的地址空间中读取数据或向ESC的地址空间中写入数据的基本操作。通过SPI寻址ESC寄存器的函数声明为voidAddressing(UINT16Address,UINT8Command)。其中,Address为请求访问的ESC寄存器地址,Command为请求访问ESC的方式:读或写命令,返回值为空类型。在SPI模式下读写函数都会调用AddressingESC()函数,以读或写的方式寻址ESC寄存器,为接下来的数据传送做准备。而在MCI模式下则不需要该寻址函数,而是直接用指向ESC物理内存的指针来操作ESC的内存。
2.2应用层事件相关函数在ESC中与应用层通信相关的寄存器由主站配置,从站程序只要在需要查询的时候从相应事件寄存器中读取有效数据即可,与应用层相关寄存器如表1所示。
表1从站操作相关的基本寄存器
从站软件中有用于获取AL请求事件的函数声明为HW_GetAlEvent(),其中,入口参数为空类型,返回值为读取到的16位的ESC的AL事件请求寄存器值,根据该值判断主站请求的AL事件并作相应处理。
设置AL事件请求寄存器是否映射到PDI中断信号的函数声明为voidHW_SetIntMask(UINT16intMask)。其中入口参数intMask为中断屏蔽寄存器的值,返回值为空类型。该函数用于设置事件屏蔽寄存器的相应位,相应位设置为0时,当主站有事件请求时,会触发ESC的PDI产生中断信号给从站。
设置ESC的AL状态寄存器,及状态码的函数声明为voidHW_SetAlStatus(UINT16alStatus,UINT16alStatusCode)。其中入口参数alStatus为AL状态寄存器的值,alStatusCode为AL状态码,标志当前应用层是否出现错误码。
当从站接收到来自主站的状态转换请求时,从站会作状态相关的处理,并将从站最终的状态及状态处理后的状态码写入该寄存器中,由主站来读取并判断是否转换成功。