你好!
我使用TI的TMDXICE110与TMS320F28377D进行联合测试EtherCAT功能。
1、使用PRU-ICSS-EtherCAT_Slave_01.00.06.01中的ecat_ti_esc_spi_slave_AMIC11x_arm工程。
2、使用PRU-ICSS-EtherCAT_Slave_01.00.06.01\protocols\ethercat_slave\firmware\v1.0下的ecat_frame_handler_ti.bin与ecat_host_interface_ti.bin。
3、28377D使用TMDSECATCND379D_V1.0\TMDSECATCNCD379D_EtherCAT_Solution_Ref下的TMDSECATCNCD379D_EtherCAT_Reference工程,其中仅对SPI的引脚进行适当调整。
测试时,使用TwinCAT的Scan后在Visual Studio中提示如下错误:
请问是哪里出问题了吗?状态机总是不正常。
Chris Meng:
你好,
我看提示错误都是和TMDSECATCNCD379D相关,是否到C2000论坛询问一下?
yongqing wang:
检测一下驱动
MiloBai:
回复 yongqing wang:
测试发现,TI提供的程序spi通讯总是错误。无法正常全双工通讯。求解决方法
yongqing wang:
回复 MiloBai:
有用逻辑分析仪测试SPI信号吗
yongqing wang:
回复 MiloBai:
ti提供的spi例程是不能收信号还是不会发信号?
MiloBai:
回复 yongqing wang:
没有使用逻辑分析仪。使用示波器测试MOSI与MISO信号,发现28377D发送信号正常,而AMIC110发送的信号不正常。
在PRU-ICSS-EtherCAT_Slave_01.00.06.01的ecat_ti_esc_spi_slave_AMIC11x_arm例程中有个主循环task(SPISlave_statusTask),在while循环中增加接受28377D数据后将其输出发现接受的数据是错误的。
因此导致TMDSECATCNCD379D_EtherCAT_Reference例程永远停留在下面这个循环中。(我们的ESI设置ESC的PDI为SPI模式,因此返回值应为0x06)
do { HW_EscReadWord(u16PdiCtrl,ESC_PDI_CONTROL_OFFSET); u16PdiCtrl = SWAPWORD(u16PdiCtrl);
} while ((u16PdiCtrl & 0xFF) != 0x06); }