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 微控制器和以太网 PHY 的专有 PCBA。 我们想使用 DP83822 PHY (就像 controlCARD 上的 PHY 一样)、但当时已经售罄了、因此我们用它替代了 DP83826E。 我们在读取和写入 PHY 芯片中的寄存 器时没有问题、但我们无法成功执行 MII 回送。 我们尝试 在我们的定制板上运行 C2000Ware F28388D 示例项目 ethernet_ex2_phy_loopback、但它在没有收到良好数据包的情况下始终失败。 controlCARD 在等待时间方面存在一些问题(需要在结尾进行解释)、但在微调微小的变量后、MII 回送项目在 controlCARD 上运行良好。 我们感到困惑、因为乍一看、两个 PHY 非常相似。 更具体 地说、DP83822和 DP83826的基本模式控制寄存器位于同一地址、并且在相同的位位置包含相同的字段。 但是、尽管 有熟悉的编程接口、 示例项目仅为一个而不是为另一个传递。 但是、我们已经确认了内部回送示例 Ethernet_ex1_basic_TX_Rx_loopback 与我们的专有电路板一起工作(再次增加等待时间)。
到目前为止、我们已尽力遵循 DP83826数据表中提供的表格和说明、但 这是无效的。 因此、 我们希望 TI 员工 通过提供一些具体的示例代码来帮助我们、说明如何 使用 F28388D 微控制器在 DP83826E PHY 上回送 MII。 如果它有任何相关性、我们还会像在 controlCARD 中一样为 PHY 使用25MHz 时钟信号、并且我们仅使用基本模式以太网。
P.S.:等待数据包返回的 SYSCTL_DELAY()值太短,即使在内部回送示例中也是如此。 我必须将其从3000个周期增加到至少6000个周期、以避免接收返回的数据包时出现问题。
更新1:
我们从多路复用为 ENET_MII_RX_ERR 信号的微控制器 GPIO 引脚上断开 PHY RX_ER 引脚、然后运行 MII 环回示例。
这一次 它通过了。 然而、这并不是一个理想的解决 方案、因为它相当于将一分钱放在保险丝盒中、以使所有高功率家用电器立即运行。
但 这确实有助于缩小搜索范围、因为我们现在正在研究在定制电路板运行期间如何将 RX_ER 置为有效。
当然 、我们很高兴地欢迎 TI 在 寻找 RX_ER 断言的原因方面提供任何帮助。
Update1_edit:我想更正我之前的语句。 无法实际断开 PHY RX_ER 引脚与微控制器的物理连接。 相反、我的员工没有 将任何引脚复用为以太网接收错误引脚。
更新2:
我们尝试使用一段以太网电缆执行外部环回、我们 将这些电缆分开并将某些电线短接在一起。 然后、我们运行 PHY MII 环回项目的修改版本、其中我们不会更改任何 PHY 寄存器、因此所有数据包都经过 PHY 的所有阶段并传输到电缆线路。 controlCARD 在接收通过此环回电缆段发送的自己的数据包时没有问题。 但是、 我们自己的专有板遇到了一种奇怪的现象、即我们没有收到任何正常的数据包、但也没有收到任何接收错误(是的、用作 ENET_MII_RX_ERR 的 GPIO 引脚已重新启用以提供该功能)。
截至此帖子、到目前为止所有硬件诊断尝试都表明电路板没有任何问题。 如果问题 确实与固件或 PHY 寄存器相关、 那么、我们目前不知道需要做些什么来使该 PHY 与 MCU 配合使用、因为 以太网模块有数十个配置变量、32个可按位寻址的 PHY 寄存器中至少有17个具有一些可写位。
我们发现数据表有时不有用。 例如、以下列表项与任何寄存器地址不对应、但它们位于"9.3.14.4数字回送"标题下。
此外、BOSCH 寄存器字段说明没有提到 相关位、位0至4的 MII 回送。 实际上、位2 (当置位时对应于值4)与该寄存器字段说明 表中的数字回路明确相关、与"通过设置 BMCR 中的位[14]和 BOSCH 中的位[2]启用 MII 回路"这一句相矛盾。
我们不希望测试数字回路。 我们只是注意到、数据表 中似乎 包含 指示 数字回送需要设置0x16[2]的语句、而指示 MII 回送的语句需要设置0x16[2]。 如果这些说法是矛盾的,那么我们不知道哪一个是正确的,哪一个是错误的。 如果这些语句 并不矛盾、并且两个环回都 涉及设置 PHY 寄存器0x16中的同一位、则数据表中没有用于支持该假设的显式语句。
因此、我们发现数据表对某些器件没有帮助。
我们从多路复用为 ENET_MII_RX_ERR 信号的微控制器 GPIO 引脚上断开 PHY RX_ER 引脚、然后运行 MII 环回示例。
这一次 它通过了。 然而、这并不是一个理想的解决 方案、因为它相当于将一分钱放在保险丝盒中、以使所有高功率家用电器立即运行。
但 这确实有助于缩小搜索范围、因为我们现在正在研究在定制电路板运行期间如何将 RX_ER 置为有效。
当然 、我们很高兴地欢迎 TI 在寻找 RX_ER 断言的原因方面提供任何帮助。
编辑:我想更正我之前的陈述。 无法实际断开 PHY RX_ER 引脚与微控制器的物理连接。 相反、我的员工没有 多路复用任何 GPIO 引脚作为以太网接收错误引脚。
我们尝试使用一段以太网电缆执行外部环回、我们 将这些电缆分开并将某些电线短接在一起。 然后、我们运行 PHY MII 环回项目的修改版本、其中我们不会更改任何 PHY 寄存器、因此所有数据包都经过 PHY 的所有阶段并传输到电缆线路。 controlCARD 在接收通过此环回电缆段发送的自己的数据包时没有问题。 但是、 我们自己的专有板遇到了一种奇怪的现象、即我们没有收到任何正常的数据包、但也没有收到任何接收错误(是的、用作 ENET_MII_RX_ERR 的 GPIO 引脚已重新启用以提供该功能)。
截至此帖子、到目前为止所有硬件诊断尝试都表明电路板没有任何问题。 如果问题 确实与固件或 PHY 寄存器相关、 那么、我们目前不知道需要做些什么来使该 PHY 与 MCU 配合使用、因为 以太网模块有数十个配置变量、32个可按位寻址的 PHY 寄存器中至少有17个具有一些可写位。
您好 Howard、
很抱歉、我们的回复很晚。 在整个对话过程中,控制卡配置似乎工作正常,而不是您的专有主板 ?
是的、controlCARD 在默认 PHY 回路示例中没有问题、但专有电路板有。
但是 、一名员工最近尝试不同 PHY 寄存器配置的努力至少使事情能够在没有自动协商、没有 MDIX、10 Mbps、半双工连接的情况下正常工作。 我们甚至成功运行了 lwip 示例。 但是、我们仍然希望连接速度至少为100Mbps。