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.

[参考译文] TMS320F28388D:F28388D - NDK - DP83826E

Guru**** 1999175 points
Other Parts Discussed in Thread: DP83822I, DP83826E, C2000WARE, TMDSCNCD28388D
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1180359/tms320f28388d-f28388d---ndk---dp83826e

器件型号:TMS320F28388D
主题中讨论的其他器件:DP83822IDP83826EC2000WARETMDSCNCD28388D

我们开发了一个使用 F28388D 并具有以太网端口的电路板、其源自 controlCARD、即使用 DP83822I PHY 通过 MII 连接到 EMAC;该软件使用 NDK_f2838x_3_61_01_01驱动程序。 到目前为止、我们开发了运行良好的 TCP 服务器。

由于 DP83822I 将被淘汰、因此我们使用在基本模式下配置的 DP83826E 开发了一个电路板版本、发现运行相同软件时遇到的一些问题。

到目前为止、我们测试了以下内容:

-似乎正确检测到链路(电缆断开/连接时设置/重置 emacData.LinkUp)
-数据包似乎正确接收(emacData.rxCount 在 ping/网络活动上增加),但由于 NDK 驱动程序链接为一个库,我实际上无法判断接收到的数据包是否正确
-似乎没有数据包被发送(没有应答 ping 和  emacData.txCount 不递增)
- MII_TX_CLK 时钟正确@25MHz
- MII_TX_ERR 为低电平
- MII_TX_EN 为低电平
-在 MII_TX_D0..3中没有数据传输

我的问题是:

1) NDK 驱动程序是否支持开箱即用的 DP83826E phy? (建议用德州仪器(TI)替代 DP83822I)
2) 2)如何精确定位传输故障?

此致、
埃尔克

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

    Elker、

    您的问题将转发给 PHY 专家、预计会在几天后得到回复。

    此致

    Siddharth

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

    Elker、

    您是否仍在使用  DP83822驱动程序? 如果是、请使用 DP83826驱动程序、我已将其链接到产品页面(https://www.ti.com/product/DP83826E#software-development)

    此外、如果这无法解决问题、您是否可以发送0到1e 寄存器以及自举寄存器?

    此致、

    Jason Lee

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

    Jason、您好!
    感谢您的回复。 您所指的页面指向 Linux 内核驱动程序的链接、该驱动程序具有与 DP83822和 DP83826E 相同的驱动程序(文件为 drivers/net/phy/dp83822.c)。

    我知道 F28388D 的唯一 NDK EMAC 驱动器是 NDK_f2838x_3_61_01_01、链接如下:
    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/825398/tms320f28388d-tcp-ip-stack-availability

    在此驱动器源代码内部、没有引用 Phy 模型、对 phy 寄存器的唯一访问是用于检测链路(正常运行)以及读取和清除中断状态寄存器(似乎对接收消息有效)。

    我将转储 dp83822和 dp83826的寄存器、并检查是否有任何差异。

    关于搭接、 我们在基本模式下使用 dp83826、因此通过上拉/下拉不存在外部配置;我不认为这里有问题。

    请告诉我、DP83822和 DP83826E 的配置有何不同。

    此致、
    埃尔克  

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

    Elker、

    是的、请尽快通过寄存器发送、以便我们进行调查。 谢谢!

    此致、

    Jason Lee

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

    Jason、您好!
    下面是 PHY 寄存器之间的比较:

    唯一相关的更改是 PHYIDR2 (与这两个元件的数据表匹配)和 CR3 (在 DP83826E 上、这是 DP83822 的默认值);所有寄存器看起来为默认值、这与 NDK 驱动器一致、在启动时不会更改任何内容。

    如果有帮助、我可以转储更多寄存器。

    此致、
    埃尔克

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

    Elker、

    您能否尝试软复位(将4000写入寄存器0x1F)并让我知道问题是否仍然存在?  

    此致、

    Jason Lee

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

    大家好、Jason、

    我直接收到客户的以下信息并附上。  您能看一下吗?

    谢谢。

    汤姆

    e2e.ti.com/.../Elker-thread-1180359.docx

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

    Jason、您好!
    我已经使用器件复位(屏蔽0x4000)实现了寄存器写入和写入寄存器0x1F。
    PHY 链路 LED 按预期关闭、几秒钟后重新打开;此行为也可在变量  emacData.LinkUp 中看到。
    从 PC 执行 Ping 操作时、我可以看到  emacData.rxCount 在每次轮询中计数、但 TX 端没有任何东西(与该线程的第一个帖子中所述相同)。

    此外、通过分析 DP83822和 DP83826E 的 Linux 驱动程序、我看不到配置有任何差异:它应该适用于默认配置;请告诉我、DP83826E 也是这样的假设。

    此致、
    埃尔克

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

    Elker、

    我会与团队协商并尽快与您联系。

    此致、

    Jason Lee

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

    Elker 和 Tom、

    由于此主题已持续了很长时间、您能否总结一下 您和您的团队最近遇到的问题? 我们的应用团队对该查询中的变量数量稍有兴趣。

    同时,我会见了我们的团队,我们建议如下:检查链路连接,然后 RJ45电缆连接,然后磁性。 直截了当地说、连接器原理图实际上与 DP83822和 DP83826不同。 此外、我还附上了原理图检查清单(可在 TI.com 上的 DP83826产品页面上找到软件驱动器)

    e2e.ti.com/.../DP83826_5F00_Schematic_5F00_Design_5F00_Review_5F00_Checklist.xlsx

    此致、

    Jason Lee

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

    大家好、Jason、

    我拉动了 Elker 正在使用的板。

    关于检查清单...  我对硬件做了一些笔记。  您能检查我的备注吗?

    e2e.ti.com/.../DP83826_5F00_Schematic_5F00_Design_5F00_Review_5F00_Checklist_5F00_Paolo.xlsx

    "由于此主题已持续了很长时间、您能否总结一下 您和您的团队最近遇到的问题? 我们的应用团队对这个查询中的变量数量感到有些困惑。"

    基本上 Elker 看到的是:从 PC ping 时、emacData.rxCount 在每个轮询上计数、但在 TX 端不计数

    谢谢。
    Paolo

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

    Paolo

    我将查看这些原理图注释、并将其提供给团队;感谢您的耐心等待。

    此致、

    Jason Lee

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

    工作!!!


    我意识到,为了从 ping 命令中获得响应,必须更改我的网卡上的此设置。

    我必须删除"自动协商"设置并放入"10 Mbps 全双工"。

    对于 PHY DP83822、无需执行此操作。

    怎么回事?
    我们是否需要设置任何注册表?

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

    Paolo、您好!

    当 Jason 明天返回办公室工作时(今天是美国 TI 的假日)、将会查看这个反馈。 但只是为了更进一步地理解它:

    -我的基本理解是822在他们的系统中工作正常,而826在 AutoNeg 与链路伙伴一起工作时,没有在100Mbps 模式下进行链路连接。 是这样吗?

    -关于在前一篇文章中共享的注册快照,当各自的822和826连接到 PC 时,它们是否被捕获:  

         我没有看到它们中的任何一个进行连接(寄存器1)+都没有从链路伙伴(寄存器5和6)接收到任何速度状态

    -请分享寄存器值 x467和 x468的826。 这将帮助我们确认 PHY 是否在所需的自举模式下启动。

    -如果他们强制100Mbps 全双工从他们的 PC (而不是 AutoNeg ), 826是否再次链接? 这将帮助我们确定问题是自动协商还是100Mbps 链路建立。

    --

    此致、

    Vikram

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

    1)"-我的基本理解是、当 AutoNeg 与链路伙伴一起打开时、822在其系统中可以正常工作、而826在100Mbps 模式下无法进行链接。 是这样吗?"  

    正确!

    4)"-如果他们强制从 PC 使用100Mbps 全双工(而不是 AutoNeg)、826是否会再次建立链路?"

    否! 将 PC 设置为100 Mbps 826将无法连接!

    对于第2点和第3点,我等待 Elker 的回答

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

    Paolo

    感谢您的反馈! 我们将等待 Elker 的回应,并继续进一步调查。

    此致、

    Jason Lee

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

    Jason、您好!
    很抱歉我迟到了回复。

    我已实现了第22条 PHY 的扩展寄存器读数、并最终读取了寄存器0x467/0x468。
    此处比较了 DP83822和 DP83826E 在连接 PC 时的情况(例如建立链路)。

    我仔细检查了寄存器0x467值(SOR1)、我发现它有一个奇怪的0x87值;第22条的读数似乎正确、因为在 DP83822上、我可以读取与数据表一致的值、而且 DP83826E 上的寄存器0x468 (SOR1)似乎与数据表一致。

    我已经尝试过几次重启、但 DP83826E 的 SOR1读数始终为0x87;这可能是 故障症状吗?

    此致、
    埃尔克

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

    Elker、

    Jason 今天很忙、下周早些时候应该和你联系。

    --

    此致、

    Vikram

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

    Elker、

    Jason 还在外面,但我们有内部审查,下面是我们可以 尝试解决这个问题的后续步骤:  

    1. 我们是否可以在连接链路伙伴的情况下转储寄存器(我们认为上面共享的数据日志没有连接链路伙伴/连接):

           a.当 PC 卡编程为自动协商打开时  

           b. PC 卡编程为10Mbps 模式

    2.我们能否将两块板与826连接,看看它是否链接并捕获链接案例中的上述寄存器日志。

    --

    此致、

    Vikram

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

    您好 Vikram:

    在以下情况下、我将附加 phy 寄存器转储:
    -具有自动协商功能的 PC 卡
    - PC 卡固定速度@10MBps 全双工
    - dp83826>>dp83826 (带跳线)
    - dp83826>>dp83826 (带交叉电缆)

    e2e.ti.com/.../2023_5F00_02_5F00_06_2D00_phy_5F00_compar3.xlsx

    请注意:由于我们的应用实现了 TCP 服务器、因此在板对板连接中、我们只能检查链路检测和寄存器转储;尤其是在板对板连接中可以检测到链路。

    我们在该文件中突出显示了各种情况之间的差异。

    是否可以在 DSP 引导时在 PHY 配置上强制使用10MBps 全双工?  我们可以接受将 PHY 速度设置为@10Mbps;如果可能、 您能否指出要写入的寄存器/值?  

    此致、
    埃尔克

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

    Elker、

    在 xls 中、我只看到822's 工作表。 您是否错过了添加826的状态?

    --

    此致、

    Vikram

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

    您好 Vikram:
    请原谅我的错误。
    附加的 xls 中包含的寄存器转储确实是在826个板上完成的。

    此致、
    埃尔克

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

    Elker 您好!

    哦,好的,然后东西正在看健康的 Phy 端:  

    1."PC AutoNeg On"寄存器1显示 PHY 连接正常。  

    2."PC AutoNeg On"的寄存器 x10显示 PHY 确实在100Mbps 模式下建立了链路。

    也许我们应该看看处理器端、以检查响应100Mbps 数据的设置是否正常。 在西达尔斯循环、然后我们将从那里取下它。

    Siddharth、

    从 PHY 端看、数据正常、但当通过 AutoNeg 以100Mbps 模式链接时、MAC 未响应 ping 请求。 处理器是否需要任何设置来支持此功能?

    --

    此致、

    Vikram

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

    您好!  

    在 NDK 端完成了哪些配置?  具体来说,是否对 LinkSpeed 和 LinkMode 进行了任何配置?  

    此致

    Siddharth

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

    你好,Siddartah,
    NDK 由 ndk_f2838x_3_61_01_01.zip 驱动程序配置;特别是  我们的项目中使用了驱动程序中的文件 EMACF2838X.c 和 Ethernet.c。  函数 EMACF2838XLLD_getInitConfig ()是配置结构的填充位置,特别是:

      configPtr->LinkMode = Ethernet_MAC_CONFIGURATION_DM_FULL_DUPLEX;

    但未分配 linkSpeed (并保持为零)。

    DP83826E 是否需要不同的设置?

    此致、
    埃尔克

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

    Elker、

    我还查看了 NDK TI 驱动程序的源代码,发现 ethernet.h 中的 EMACF2838XLLD_initconfig 结构中有两个参数"linkSpeed"和"linkMode"。 函数 EMACF2838XLLD_getInitConfig 被用来配置这个结构。  仅限链接模式参数在 Ethernet.c 的 EMACF2838XLLD_getInitConfig 函数中配置为"Ethernet_MAC_CONFIGURATION_DM_FULL_DUPLEX "。 我找不到为 linkSpeed 完成的任何初始化、看起来它没有配置速度。 不幸的是、  先前处理 NDK 的团队已 解散、因为 NDK 产品已不再受支持。  

    此致

    Siddharth

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

    Elker、

    可能有助于您缩小问题范围的其他建议很少。

    1.  检查 EMAC 的 MAC_Configuration 寄存器的第14位(FES)。  对于100Mbps 配置、该位应设置为1

    2.您可以尝试在 MAC 和 PHY 之间输入一个简单的环回示例来确保 PHY 正常工作。  C2000Ware 中提供了一个示例(ethernet_ex1_basic_tx_rx_loopback) wihch 可用作参考。 此示例基于低级别以太网驱动程序,并在控制卡(TMDSCNCD28388D)上进行了验证。 根据您的测试设置,示例中需要进行一些更改。  

    此致

    Siddharth  

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

    尊敬的 Siddharth:

    MAC_Configuration (FES)的位14为0。

    MAC_Configuration 寄存器为0x0800_A003、尤其是对于第15/14位、这意味着端口选择为10MBps。
    DP83822和 DP83826E 电路板上的配置相同、但 DP83822与 PC 正确协商、而 DP83826E 否

    我将帮助您返回进行在电路板上运行的"ethernet_ex1_basic_tx_rx_looping"操作。

    此致、
    埃尔克

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

    尊敬的 Siddharth:

    我已在 TMDSCNCD28388D 上加载 启用以太网的"cm_common_config_C28x"和"Ethernet_ex1_basic_TX_Rx_loopback": 如果没有电缆、我将 stats.rxastUnicetsGood = 0 (失败)、而如果我将以太网电缆插入 PC、结果是 stats.rxastPacketsGood = 1 (成功)。

    然后、我使用 DP83826E 配置了我们的电路板引脚排列、并在我们的电路板上重复进行了测试:我得到了与 EVB 相同的结果 、stats.rxUnicastPacketsGood = 0不使用 电缆、而 stats.rxUnicastPacketsGood = 1使用电缆连接。

    从该测试来看、DP83826E 似乎工作正常:据我所知、ENET 外设与 PHY 进行了正确通信。

    此致、
    埃尔克

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

    Elker、  

    请检查运行此示例时是否已启用 PHY 环回。 您可以读取 PHY 寄存器并对其进行验证。  

    如果 MAC 和 PHY 能够通信,我不知道其他什么原因 可能导致此问题。

    此致

    Siddharth