[EtherCAT]ESC的引脚功能说明
一、ESC引脚功能说明
ESC外设需要使用的引脚较多,在使用时需要理解其具体功能,以及在引脚数量受限时,根据功能选择,节省使用引脚。
二、ESC引脚的二级pinmux
ESC的9个功能引脚(PHY Reset, LED_RUN, LED_ERR, LINK_ACT0-3,NMII_LINK0-3),使用CTR
MUX 模块进行分配,配置寄存器IO_CFG可将这些信号映射到CTR[0]到CTR[8]的任意IO上, 为硬件设计带来灵活性。
相关引脚使用时先使用soc层级的pinmux将对应引脚配置成ESC_CTR_x功能,之后在ESC外设中使用IO_CFG寄存器将其配置成具体的功能, 例如硬件设置时选择使用PC20作为NMII_LINK0功能, 软件需要进行如下配置:
在pinmux.c
中配置PC20为ESC_CTR_x功能, 其具体可配置为ESC0_CTR_2
功能(记住2这个数值):
HPM_IOC->PAD[IOC_PAD_PC20].FUNC_CTL = IOC_PC20_FUNC_CTL_ESC0_CTR_2; /* NMII_LINK0 function */
在board.h
中定义BOARD_ECAT_NMII_LINK0_CTRL_INDEX
宏的值为2(2这个数值即来源于上述引脚功能ESC0_CTR_2
)
#define BOARD_ECAT_NMII_LINK0_CTRL_INDEX 2
最后在ecat_hardware_init()
中驱动程序会对ESC的IO_CFG寄存器进行配置,将选用的ESC0_CTR_x
信号引脚分配具体的ESC功能:
/* assign ESC_CTR_x to specific function, check with hardware connection */
esc_config_ctrl_signal_function(esc_ptr, BOARD_ECAT_NMII_LINK0_CTRL_INDEX, esc_ctrl_signal_func_alt_nmii_link0, BOARD_ECAT_PORT0_LINK_INVERT); /* NMII_LINK0 */
CTR MUX还支持将任意信号取反,比如ESC使用的NMII_LINKx信号要求使用低电平表示Link状态,如果PHY输入的Link信号电平相反, 可以使用该功能进行信号取反。