This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28P650DK: TMS320F28P650DK开发板ESC通信失效

Part Number: TMS320F28P650DK
Other Parts Discussed in Thread: C2000WARE

Dear TI Expert:

我使用TMS320F28P650DK时发现ESC部分无法进行通信,具体描述如下:

①我使用TMS320F28P650DK开发板进行测速,其中使用到了官方提供的EtherCAT协议栈,通过PDO将速度传到TwinCAT上位机进行观察,以前一直没有问题,上周使用该开发板时发现D11的红灯一直闪烁。

②TMS320F28P650DK开发板连接到电脑的TwinCAT上后,TwinCAT中的I/O Devices下添加的设备的Online标签页中的DLL Status的PortA和PortB没有任何显示。

③网线一插到TMS320F28P650DK开发板时开发板的J45网口的信号灯就熄灭了。

④更换为同事另一块TMS320F28P650DK开发板,刷入同样的程序,协议栈OK,正常进入OP,J45信号灯正常闪烁,winCAT中的I/O Devices下添加的设备的Online标签页中的DLL Status的PortA和PortB也有对应的显示。

⑤对比发现,OK的开发板和NG的开发板刷入同一套协议栈程序,初始化完协议栈后,ESC寄存器的初始化结果存在不一样,截图如下:

针对上述问题和现象,是不是ESC外设相关的硬件坏了呢?有没有什么解决方法呢?
  • 您好,
        已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • ESC外围设备可能出现故障。
    但首先您可以确保EEPROM已编程到不工作的设备中。

  • ①ESC通信失效的这个开发板,之前使用的时候是好的,之前EEPROM也成功写入了ESC配置信息,而且协议栈也能工作;,程序都是原来的程序,没有改动,协议栈的内容也更没有更改,ESC配置信息也没有更改。开发板是前几天没法使用的,而且D11的红灯在一直闪烁,上位机的硬件没法连接,应该不存在EEPROM编程到不工作的设备中吧,毕竟调试TMS320F28P650DK开发板时,能看到寄存器信息,也能显示变量之类的,DSP核应该是工作的,只是ESC有问题。

    ②而且换了同事的开发板,相同的程序,刷入后,并往EEPROM写入配置信息,就OK了,且上位机,网线,接口都是和原来一样的。

  • 如果如屏幕截图所示,ENABLE_DEBUG_ACCESS寄存器设置为1,并且您看到D11 LED闪烁。当hal.c文件中设置了PDI_hal_TEST变量,但ESC_initHW()函数不成功时,就会发生这种情况。您可以再看看
    您还可以尝试在两个设备上运行pdi_hal_test示例并告知结果。您可以在\C2000Ware_xx\libraries \communications \Ethercat\f28p65x\examples中找到该示例

  • 如果如屏幕截图所示,ENABLE_DEBUG_ACCESS寄存器设置为1,并且您看到D11 LED闪烁。当hal.c文件中设置了PDI_hal_TEST变量,但ESC_initHW()函数不成功时,就会发生这种情况。您可以再看看

    我检查了hal.c文件中的PDI_hal_TEST变量,该变量没有被启用,#ifdef PDI_HAL_TEST的区域为灰色,因此没有执行满足PDI_HAL_TEST的代码。

    ENABLE_DEBUG_ACCESS寄存器设置为1的原因,是因为我的开发板是最开始的硬件版本,硬件存在bug,好像会导致全新的开发板运行配置好的协议栈后,无法被TwinCAT扫描到链路,按照https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1325322/faq-launchxl-f28p65x-how-do-i-fix-the-ethercat-issue-where-the-launchpad-cannot-be-scanned-in-twincat 中的解决方案,添加了

    ESCSS_enableDebugAccess(0x00057E00U);
    ESCSS_initMemory(0x00057E00U);
    ESC_writeWordISR(0x0100,0x0516);
    DEVICE_DELAY_US(100);
    mii_writePhyRegister(0x19, 0x00 , 0x8020);......;mii_writePhyRegister(0x1F, 0x01, 0x4000);
    DEVICE_DELAY_US(100);

    所以才ENABLE_DEBUG_ACCESS寄存器设置为1。

    关于ESC通信NG的开发板,ESC_loadedCheckEEPROM函数的返回值是ESC_EEPROM_NOT_LOADED,导致ESC_initHW()函数的返回值是ESC_HW_INIT_FAIL65535;而同一套代码,同事的ESC通信OK的开发板,ESC_loadedCheckEEPROM函数的返回值是ESC_EEPROM_SUCCESSESC_initHW()函数的返回值是ESC_HW_INIT_SUCCESS。

    关于ESC通信NG的开发板的贴图如下:

    关于PDI_hal_TEST变量,同一套协议栈程序,同样的环境,在另一块开发板中能正常运行,感觉也能验证这一块代码,软件层面是没有问题的。

    您还可以尝试在两个设备上运行pdi_hal_test示例并告知结果。您可以在\C2000Ware_xx\libraries \communications \Ethercat\f28p65x\examples中找到该示例

    关于这个,例程有点问题,提示error #10008-D: cannot find file "c2000ware_libraries.cmd.genlibs",从其他例程复制了这个文件到该例程下,存在报错,贴图如下:

    所以没有继续花时间去尝试。

    总之,不管怎么说,同一套ECAT协议栈程序,不同的开发板,ESC失效的开发板在失效之前,都是用了几个月,ESC通信,EEPROM都是OK的,TwinCAT的DLL Status也能扫描到硬件链路。ESC失效后就不显示了。软件的配置啥的应该没问题。

    因此,是否是导致ESC通信失效的硬件坏了?比如EEPROM坏了之类的?或者是其他硬件坏了?

  • 您好,我看提示说”TI Thinks Resolved“,但是这个问题我还没看到对应的解决方案或者答复,或者能提供售后服务帮我解决此问题吗?

  • TI没有维修服务,我们只能协助您判断可能是哪里出了问题。

x 出现错误。请重试或与管理员联系。