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.

[参考译文] TMS320F28P650SK:自定义硬件失败"PDI 读写测试"在 C2000 中、示例 f28p65x_cpu1_pdi_hal_test_app

Guru**** 2826855 points

Other Parts Discussed in Thread: TMS320F28P650DK, TMS320F28P650SK, C2000WARE, SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1587467/tms320f28p650sk-custom-hw-failing-pdi-read-and-write-tests-in-c2000-example-f28p65x_cpu1_pdi_hal_test_app

器件型号: TMS320F28P650SK
Thread 中讨论的其他器件: TMS320F28P650DKC2000WARE、SysConfig

您好、

如果在 TI TMS320F28P650DK LaunchPad 套件上运行 f28p65x_cpu1_pdi_hal_test_app 示例、则一切都会顺利运行。
我 从 LaunchPad 的工作缓冲区配置副本中使用 TMS320F28P650SK 为定制板创建了新的构建配置 (_cally_AMP)。
然后、我修改了文件 ethercat_subdevice_cpu1_hal.c 、以添加我们的特定电路板配置 (_cally_AMP) 初始化代码。

当我在定制电路板上进行调试时、它从第 594 行开始无法通过“针对整个 ESC PDI RAM 范围执行 PDI 读取和写入测试“部分进行测试。  它没有读取和写入 PDI RAM。 ESC_readDWord 和 ESC_writeDWord 不会从 0x50800 开始更改存储器。

2025-11-13_10-36-19.png

什么会导致这种情况不起作用?

谢谢、Rob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是我们在定制板上安装的确切 MCU。
    F28P650SK7ZEJR - TMSF28P650SK7 256 引脚 BGA 修订版 2

    -罗伯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Rob、
    您能否分享在 cpu1_hal.c 文件中所做的更改
    也可以检查功能“ ESC_setupPDITestInterface() “即使是在没有更改的情况下被调用。

    此致、
    Keshav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Keshav:
    这是项目。  我正在   TMS320F28P650SK 板上运行 CALLY_AMP_RAM 配置。
    是、 “ ESC_setupPDITestInterface() “ 正在调用。

    谢谢、

    Rob
    Robe2e.ti.com/.../f28p65x_5F00_cpu1_5F00_pdi_5F00_hal_5F00_test_5F00_app.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Rob、

    我看到您已经注释掉了等待加载 EEPROM 的代码部分。 cpu1_hal.c 文件中的第 1664 行及以后
    取消注释该段即可正常工作。 进行了测试。

    此致、
    Keshav。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Keshav:

    当我取消注释该段时、EEPROM 加载失败并返回“ESC_HW_INIT_FAIL"。“。  返回在 main() 中进行检查、并进入无限失败循环。  因此,我注释掉了这项检查 ,以便它可以继续执行 ESC_setupPDITestInterface() 调用,但它仍然失败 “//对整个 ESC PDI RAM 范围执行 PDI 读写测试“。   它未通过 EEPROM 加载检查、因为从未加载过我的 SII EEPROM。  我无法将 SII EEPROM 加载到电路板上、因为 Acontis Master 和 Beckhoff EEPROM Programmer 工具在扫描网络时无法找到器件。  因此、我开始在 MCU/ESC 侧进行一些测试、并尝试读取 ESC Regs/Mem 和 PHY Regs/Mem、以便找出无法对 SII EEPROM 进行扫描和编程的问题。 下面是我的最新项目,其中 EEPROM check 没有注释,并且在  ESC_initHW () 返回时进行检查。  未编程的 SII EEPROM 是否会导致我无法读取/写入 PDI RAM?  如果是、原因是什么?

    e2e.ti.com/.../f28p65x_5F00_cpu1_5F00_pdi_5F00_hal_5F00_test_5F00_app_5F00_2.zip

    谢谢、

    Rob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Robert:

    Keshav 目前已离职、将于本周结束时返回。  

    作为解决您问题的权变措施、您是否可以使用 TwinCAT 或 CTT 中的在线描述选项来对 EEPROM 进行编程?

    此致、
    Aaron

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Robert:

    非编程 SII EEPROM 是否会导致我无法读取/写入 PDI RAM?  如果是、为什么?

    为了成功进行 PDI 测试、必须使用正确的器件信息、配置数据和特定于您的硬件的参数对 EEPROM 进行编程。 PDI 系统使用此信息来正确识别硬件并与硬件进行通信。 如果不这样做、扫描肯定会因为 ESI 文件不匹配而失败。

    因此、必须首先加载 EEPROM。 在扫描成功且子器件达到 OP 状态后、您可以从 TwinCAT 对 EEPROM 进行覆写。

    当我取消注释该段时、EEPROM 无法加载并返回“ESC_HW_INIT_FAIL"
    </s>“

    这是需要进一步理解的东西。 可能是定制电路板中的 EEPROM 配置出现问题。

    此致、
    Aaron

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

    1. 首次在 f28p65x 上运行 PDI 示例时,它会进入   ESC_signalFail() 循环。

    2.然后您必须通过 TwinCAT 加载 EEPROM 并重置 CPU、然后重新运行示例。

    3.之后它将进入初始化状态,不会进入 ESC_signalFail() 循环。 状态。

    您可以参阅“C:\ti\c2000\C2000Ware_5_02_00_00\libraries\communications\EtherCAT\f28p65x\docs“中所述的 EtherCAT 文档

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    编号 因为当我尝试在 CTT 中扫描子设备时、我收到此丢失帧错误。  我还尝试使用 SSC 和 Acontis EC-Engineer 提供的 EEPROM 编程器进行扫描。  因此、我尝试在 MCU PDI 端与 PHY 网络端进行一些故障排除。

    ——罗伯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid=“550875" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1587467/tms320f28p650sk-custom-hw-failing-pdi-read-and-write-tests-in-c2000-example-f28p65x_cpu1_pdi_hal_test_app/6140633
    未编程的 SII EEPROM 是否会导致我无法读取/写入 PDI RAM?  如果是、原因是什么?

    为了成功进行 PDI 测试、必须使用正确的器件信息、配置数据和特定于您的硬件的参数对 EEPROM 进行编程。 PDI 系统使用此信息来正确识别硬件并与硬件进行通信。 如果不这样做、扫描肯定会因为 ESI 文件不匹配而失败。

    因此、必须首先加载 EEPROM。 在扫描成功且子器件达到 OP 状态后、您可以从 TwinCAT 对 EEPROM 进行覆写。

    [/报价]

    如果您的电路板上有一个从未编程过的空白 Sii EEPROM(全部为 0xFF)、该怎么办?  我们已经开发了另外三个不同的 EtherCAT 子器件、所有这些子器件都使用 NXP ARM M4 和 Beckhoff ET1100 ESC。  在所有这三款产品中、我们都能够在它们具有空白 EEPROM 时扫描和发现这些器件。  它们只是显示为一个产品和修订代码为 0xFFFFFFFF 的未知器件。  然后我们第一次对它们进行编程。 在进行固件/EEPROM 更新时、我还使用了这些其他产品上的 PDI 从 MCU (SSC) 对 EEPROM 进行编程。  我们可能遇到硬件或 PHY 配置问题、导致帧丢失。  不确定如何对此进行故障排除。  我认为应该能够使用 PDI 接口来读取 ESC 和 PHY 寄存器以查看正在发生的情况。  我是否应该像使用 ET1100 ESC 一样使用空白 EEPROM 来实现这一点?  

    谢谢、

    Rob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Rob、

    如果未加载 EEPROM、则 PDI 不工作。
    您可以查看 ESC DL 状态寄存器说明、网址为 https://download.beckhoff.com/download/document/io/ethercat-development-products/ethercat_esc_datasheet_sec2_registers_3i0.pdf 的 第 2.19 节

    因此、 在没有加载 EEPORM 的情况下从 MCU PDI 侧调试丢失帧问题将不起作用。 您必须回到 PHY 网络端。


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好!

    很抱歉我错过了该器件、“ EEPROM 未加载、PDI 不工作(无法访问处理数据 RAM)“。  我认为能够访问“处理数据 RAM“与访问 ESC 寄存器的能力相同。  我可以在未加载 EEPROM 的情况下读取 ESC 寄存器。 以下是我们器件 ESC 寄存器的内容。  

    e2e.ti.com/.../Cartridge_2D00_Amp_5F00_ESC_5F00_reg_5F00_offline.txt

    我们的器件只有一个端口、即端口 0。 因此、我在 SysConfig 中只配置了端口 0。 我还在 ESC_initHW (void) 函数中添加了这个 API 调用来配置 PHY 端口数。

    uint16_t ret = ESCSS_configurePortCount(ESC_SS_CONFIG_BASE, ESCSS_ONE_PORT_SELECTION, ESCSS_VALID_KEY_VALUE);
    

    但是、如果您注意到寄存器文本文件中、DL 状态寄存器在端口 1 上声明一个链路、该链路不应打开。  如果端口 1 打开、将说明如何丢失帧。  它从端口 1 流出、而不返回。

    0x0110:0x0111    ESC DL Status:  0x5A32
                     PDI operational/EEPROM loaded:  EEPROM not loaded, PDI not operational
                     PDI Watchdog Status:            Watchdog reloaded
                     Enhanced Link detection:        Deactivated for all ports
                     Physical link on Port 0:        Link detected
                     Physical link on Port 1:        Link detected
                     Physical link on Port 2:        No link
                     Physical link on Port 3:        No link
                     Loop Port 0:                    Open
                     Communication on Port 0:        Communication established
                     Loop Port 1:                    Open
                     Communication on Port 1:        Communication established
                     Loop Port 2:                    Closed
                     Communication on Port 2:        No stable communication
                     Loop Port 3:                    Closed
                     Communication on Port 3:        No stable communication

    是否缺少某些功能来禁用端口 1?

    谢谢、

    Rob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Rob、

    在 hal.c 文件中、您可以尝试删除与端口 1 相关的 GPIO 引脚配置。
    请查看提到的部分  

    // P1 TX 和 RX 数据
    // P1 TX 使能、RX DV、RX ERR
    // P1 TX 和 RX 时钟
    // P1 链接状态和链路活动 LED

    这将解决此问题。

    但我想知道为什么在端口 1 上您看到的是检测到的链路和建立的通信。 只有在将电缆连接到端口 1 时才会发生这种情况。

    此致、
    Keshav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Keshav:

    当我首次设置工程时、将 P1 相关的 GPIO 配置从 ethercat_subdevice_cpu1_hal.c 移至 SysConfig 时、我已删除这些配置。   首次设置工程时、我将可以执行的所有操作从 ethercat_subdevice_cpu1_hal.c 文件移到了 SysConfig。  我重新检查了 ethercat_subdevice_cpu1_hal.c 文件和 SysConfig、没有看到任何 与端口 1 (P1) 相关的 GPIO 配置 已完成。  我将附加这些文件以供参考、还将附加从 SysConfig 生成的 board.*文件。  在 检测到链路并建立通信的情况下、我仍会获得相同的端口 0 和端口 1 结果。
    目标  

    ESCSS_configurePortCount(ESC_SS_CONFIG_BASE, ESCSS_ONE_PORT_SELECTION, ESCSS_VALID_KEY_VALUE);

    仅启用端口 0、或者此 API 不起作用?
    下一种方法是将端口 1 信号分配给未使用的引脚、并将其置于未连接/无链路状态、看看会得到什么结果。

    e2e.ti.com/.../hal_5F00_and_5F00_SysConfig.zip

    谢谢、

    Rob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Keshav:

    我找到了一种权变措施、即强制 PHY1 链路状态为低电平。

    只需添加、即可将端口 1 PHY1_LINKSTATUS 分配给 SYSCONFIG 并将其分配给未使用的引脚。

    然后将其配置为“悬空输入“、而不是  PHY0_LINKSTATUS 配置为的“悬空反极性输入“。

    这似乎会强制 ESC_PHY1_LINKSTATUS 为低电平、导致其关闭端口 1。  如此处的 DL 状态所示:

    e2e.ti.com/.../Cartridge_2D00_Amp_5F00_ESC_5F00_reg_5F00_offline_5F00_4.txt

    由于端口 1 已关闭、我没有从主设备获得丢失的帧、因此能够扫描 SII EEPROM 并对其进行编程。

    现在我可以对 EEPROM 进行编程、并使用 Acontis 主器件(主器件)进入运行状态。  一切似乎都正常。

    正如您可以从 随附的文件“Cartridge-Amp_ESC_reg_offline_4.txt"中“中的 ESC 寄存器端口描述符 (0x0007) 所示、仍需配置和启用端口 1、并且我们必须为 ESC_PHY1_LINKSTATUS 使用额外的 GPIO。

    如果我们有一个更干净的解决方案就好了。  我还附加了我的新 hal 和 sysconf 与这些更改。

    e2e.ti.com/.../new_5F00_hal_5F00_and_5F00_SysConfig.zip

    此致、

    Rob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Rob、
    更干净的方法是实际使用 API ESCSS_configurePortCount
    让我在我这边尝试一下、然后返回给您。

    此致、

    Keshav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Rob 嗨、如果您尝试在具有 1 个 PHY 的定制板或具有 2 个 PHY 的 TI 板中执行此操作、您能不能告诉我吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Keshav:我正在尝试在我们具有 1 个 PHY 的定制板 (CartridgeAmp_F28P65X.syscfg) 上执行此操作。
    您是否尝试使用  API ESCSS_configurePortCount 并使其正常工作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rob、

    我尝试使用 API  ESCSS_configurePortCount、 这将写入寄存器 ESCSS_PHY_IO_CONFIG 的位 2 和位 3。 检查 TRM 中的 26.5.3.3。 看起来这些位只是关于选择操作的端口数量的广播、写入该寄存器不会更改运行的端口数量。

    我删除了所有 PHY1 相关配置、我看到了类似的问题、即无论是否连接、端口 1 上都会检测到物理链路。 因此、要禁用端口 1、您必须正确配置 LINKSTATUS 信号、以便在未连接端口 1 时(即使端口 1 不存在)、它不会显示为检测到链路。 因此、您所做的操作似乎是正确的(但会浪费 GPIO)。

    您可以尝试写入 DL 控制寄存器位 10 和 11、无论 Linkstatus 如何、它都将关闭端口 1。 您可以查看 DL 控制寄存器的第 2.17 节 https://download.beckhoff.com/download/document/io/ethercat-development-products/ethercat_esc_datasheet_sec2_registers_3i0.pdf