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.
我们开发了一个使用 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、
我直接收到客户的以下信息并附上。 您能看一下吗?
谢谢。
汤姆
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