最近在学习EtherCat,用的是德国Beckoff的ET1100,主要使用CANOPEN协议, 由于是刚接触CANopen协议,开始有点头大,不知何去何从。 仔细研究了找到的参考代码研究了2天,发现,其实CANopen协议的本质就是维护一堆变量,不过这堆变量的数目很庞大,需要一一搞明白。 下面一一道来。 一、EtherCat与MCU通讯 本质就是SPI通讯,切记。 1.首先要初始化SPI,如我用的是stm32f407,用的是PA4,5,6,7 PA4----CS PA5----CLK PA6----MISO PA7----MOSI 对应的ET1100使用管脚如下: PD10---CLK PDI1----CS PDI2----MISO PDI3----MOSI 如果想使用ET1100的中断管脚,再增加一个IO口,并设置该IO口外部中断即可。 SPI初始化完成后要对ET1100进行一次写和读操作,确认SPI通讯正常,同时也检测EtherCat可以正常工作。向0x0204地址中写入0x93,然后读取。反复进行,直到写入与读取的值相同为止。然后清除0x0204地址的值。 同步时钟的输入输出中断可用,可不用。 同时要启动一个定时器。
|