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.

[参考译文] RTOS/TM4C129XNCZAD:自协商问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/814734/rtos-tm4c129xnczad-auto-negotiation-problem

器件型号:TM4C129XNCZAD
主题中讨论的其他器件:DK-TM4C129X

工具/软件:TI-RTOS

您好!

我们有一个带有 TM4C129X 的 PCB、我将尝试说明我们面临的问题:

我们使用的是 TI-RTOS。 TIRTOSTiVAC:2.16.1.14. 我们使用 的是 EMAC_init()。 这最终会根据  EMACSNON.c 中的 EMAC_PHY_CONFIG 定义初始化 PHY。  EMAC_PHY_AN_100B_T_FULL_DUPLEX。  

2 -从产品要求的角度来看、这正是我们想要的。 我们希望客户能够在其设备允许的速度下与我们的设备进行连接。

2:当我们将 PCB 与许多网络适配器连接时、例如连接到 USB-Ethernet 适配器 D-Link dub-E100、一切都按预期进行。 自协商会产生一个非常稳定的链路、该链路在100Mbps 和全双工条件下建立。 这也通过读取 PHY 状态寄存器来验证。 (带有 EMAC0_BASE、0、0x010)

但是、当我们将连接到"某些"以太网集线器/交换机时、例如 Allied Telesis at - FS705EFC、自动协商在此设置下失败。 其故障方式如下(从现在开始,我只想说为 at-FS705EFC 切换) :

  • 它连接、链路打开、以太网 PHY 状态寄存器值变为0x0F15 (链路打开、100Mbit、全双工、位4为1、因此自动协商 完成)
  •  同时以太网 PHY 基本模式状态(0x01)的值 为0x786D。
  • 在大约1秒内、链路断开。 在固件轮询时、当链路断开时、
    • 以太网 PHY 基本模式状态(0x01): 0x7849
    • 以太网 PHY 状态(0x10) :0x0902

4 -当我强制使用100Mbit 全双工进行连接、并将配置更改为  EMAC_PHY_FORCE_100B_T_FULL_DUPLEX 时、该连接不起作用。  无法建立连接、链路从未启动。

5 - 当我强制连接10Mbit 全双工或100Mbit 半双工、ceteris paribus、只需将配置更改为  EMAC_PHY_FORCE_10B_T_FULL_DUPLEX 或  EMAC_PHY_FORCE_100B_T_HALF_DUPLEX、就 可以正常工作  与 at - FS705EFC 建立了非常稳定的连接、没有任何问题。

6-当我 用100Mbit 全双工将任何其他第三方设备连接到 at-FS705EFC 交换机时,交换机可以建立连接。 因此,交换机不存在无法建立100Mbit 全双工的固有问题。

7 -同样值得注意的是 、EMAC_PHY_AN_100B_T_HALF_DUPLEX、 EMAC_PHY_AN_10B_T_FULL_DUPLEX 不能与交换机一起工作(与上面的连接断开周期相同)、但  EMAC_PHY_AN_10B_T_HALF_DUPLEX 工作(最终结果为名称建议的10B 半双工、以太网 PHY 状态= 0x117)。 我也不理解、指定了其他参数以及自动协商、以及它们真正的作用。

那么、现在我们来看看问题部分:

1) 1)为什么我们具有  EMAC_PHY_AN_100B_T_FULL_DUPLEX 配置的器件不能与  at–FS705EFC (和其他一些)交换机/适配器配合使用?

2) 2)为什么我们具有  EMAC_PHY_AN_100B_T_Half-Duplex  配置的器件不能与开关一起工作、而  EMAC_PHY_FORCE_100B_T_Halt_Duplex 工作?

3) 3)这些连接/断开周期是否具有我不理解的含义? 我应该查询其他一些寄存器还是缺少什么?

如果有人对上述器件的数据表感兴趣、请访问以下链接:

https://eu.dlink.com/uk/en/-/media/consumer_products/dub/dub-e100/datasheet/dub_e100_d1_datasheet_en_eu.pdf

https://www.alliedtelesis.com/sites/default/files/documents/datasheets/fs705efc_ds.pdf

https://www.alliedtelesis.com/documents/installation-guide-fs705efc-and-fs706efc

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

    您好、Erman、

         当 EMAC_PHY_AN_100B_T_HALF_DUPLEX、EMAC_PHY_AN_10B_T_FULL_DUPLEX 使用 Allied Telsis  AT–FS705EFC  交换机指定时、您是否有机会使用 Wireshark 进一步进行调试? 我建议您在使用其他有效设置时、如  EMAC_PHY_FORCE_10B_T_FULL_DUPLEX 或  EMAC_PHY_FORCE_100B_T_HALF_DUPLEX、也比较 Wireshark 跟踪。  

      尽管您说其他第三方设备可以与 Allied Telesis  AT FS705EFC  交换机正常配合使用、  但在指定自动协商时、Tiva 设备也可以与其他交换机(如 USB-Ethernet Adapter、D-Link dub-E100)配合使用。 因此、很难得出一个结论、即问题不依赖于开关。  

     您是否可以运行 TivaWare 以太网示例、如 enet_io 或 enet_lwip? 这些是非 TI-RTOS 示例。 但是、它们使用 EMAC_PHY_AN_100B_T_FULL_DUPLEX 配置。 请参阅下面的内容。  不确定您是否在 TI-RTOS 项目中启用了 MDIX。

    #define EMAC_PHY_CONFIG (EMAC_PHY_TYPE_内部| EMAC_PHY_INT_MDIX_EN | EMAC_PHY_AN_100B_T_FULL_DUPLEX)

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

    您好、Charles、

    感谢您的回复。

    1) 1)我无法使用 Wireshark 进行任何有用的操作。 请参阅以下帖子:

    www.wireshark.org/.../msg00117.html

    您是否知道使用 Wireshark 解决自动协商问题的方法/指南?

    2) 2)即使是与开关相关的问题、我也想了解到底是什么问题。

    为什么 Switch+Tiva 系统会自动协商到无法通信的速度?

    如何避免/阻止它? 这是我的要点。

    3) 3)完整形式的 EMAC_PHY_CONFIG 正如您所说的。 我刚刚更改了定义的速度/双工部分。
    (EMAC_PHY_TYPE_INTERNAL | EMAC_PHY_INT_MDIX_EN | EMAC_PHY_AN_100B_T_FULL_DUPLEX)

    4) 4)由于电路板设计原因、我无法直接尝试这些示例、但我将查看非 TI-RTOS、直接 Tivaware 示例。 但我很好奇,到底有什么区别,或者他们如何以不同的方式配置自动协商,因此它可能起作用? 您是否认为自动否定广播寄存器/位中的一个可以作为答案?

    此致、

    Erman

     

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

    您好!

     我的理解是、为了使自协商正常工作、链路的两端都必须在运行/支持自协商。 自协商是一种协议、双方必须握手以确定最终速度和双工。 如果一方未处于自协商模式、则自协商不起作用。 这就引出了一个问题   、即 Allied Telesis AT-FS705EFC 交换机是否支持并配置为在自动协商模式下运行。 您能找到吗?

     我要求运行非 TI-RTOS TivaWare 示例的原因只是为了确保 TI-RTOS 没有任何关系。 TI-RTOS 使用稍旧版本的 TivaWare 库。 我同意、无论是运行 TI-RTOS 还是非 TI-RTOS 都应该显示相同的结果、但我只是想确保情况确实如此。 在尝试非 TI-RTOS 示例时、您是否还想尝试 TI-RTOS 以太网示例? 同样、只需确保 TI-RTOS 示例和您自己的应用程序产生相同的行为。  

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

    您好、Charles、

    我是%100确定 的、在-FS705EFC 支持 并运行自动协商模式。 我使用第三方设备和我们的旧项目验证了这一点。  

    今天、一位同事为我提供了"TM4C129X 开发板"、我有机会使用  at - FS705EFC  交换机尝试以下示例

    • \ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c129x\enet_lwip\ccs\Debug\enet_lwip.bin
    • \ti\TivaWare_C_Series-2.1.4.178\examples\boards\dk-tm4c129x\enet_io\ccs\Debug\enet_io.bin

    这两种二进制文件都能正常工作、并且建立了稳定的链路。

    您会推荐哪些 TI-RTOS 示例?

    此致、

    Erman

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

    我随附了原理图的相关部分、以防您认为这可能是我们的 PCB 设计所致。

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

    您好!

     您能否按如下所示尝试这些 TI-RTOS 示例? 请使用 CCS 资源浏览器将这些示例下载到您的工作区中。  

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

    您好!

     要确定问题是否与软件或您的定制硬件有关、请进行以下实验。 我们已经知道、TivaWare 示例在开发板中运行正常。

     1.在开发板上运行 TI-RTOS 以太网示例

     2.在定制板上运行 TI-RTOS 以太网示例

     3.在您的定制板上运行非 TI-RTOS TivaWare 示例。 您之前已经报告过、它适用于开发板。

     4.在开发板上运行您自己的应用程序。  

     我认为,根据上述实验的结果,我们可以进一步缩小问题的范围。  

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

    您好、Charles、

    1- TI-RTOS 以太网示例在开发板上运行并与交换机通信。

    2-3-我之前已经说过、示例不能在我们的定制 PCB 上运行、因为它是系统的一部分、如果没有其他外设设置、它就无法启动以太网。 我尝试同时运行 Tivaware 和 TI-RTOS、但两者都没有"按原样"运行。 我更喜欢避免更改示例、使其在我的定制 PCB 中"正常工作"、这将是相当多的工作。

    4-我们自己的应用程序在开发板上运行,并与交换机通信。

    这是否证明它是硬件问题?  

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

    您好、Erma、

     您的4项结果确实提供了一些证据、证明它可能与硬件相关。 我建议您将 PCB、尤其是以太网接口与 TM4C129系统设计指南中的建议进行比较。 我还将查看您的原理图。  

     可在以下链接中找到系统设计指南。

    您似乎在使用具有内置磁性的 RJ45。 如果我错了、请纠正我的问题。 该系统设计包含外部磁性元件(PHY 和保护二极管之间)的参考原理图以下链接指向实现具有内置磁性元件的 RJ45的 TI 设计。 查看并比较其以太网连接。  

    http://www.ti.com/tool/TIDM-TM4C129POE

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

    您好、Charles、

    是的、我们有内部磁性元件。 我们的接线和您发布的示例接线几乎相同。 具有外部磁性元件的 RJ45连接器具有不同的品牌、但它们也具有相同的特性。

    此致、

    Erman

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

    [引用用户="Charles Tsaaa"]我的理解是,为了使自动协商正常工作,链路的两端都必须在运行/支持自动协商。 自动协商是一种协议、双方必须握手以确定最终速度和双工[/报价]

    我不认为  这完全是真的。  我们过去曾为    某些设置为自动协商  的 Windows XP 网卡设置10Mbps 的 Cisco 交换机端口,然后以10Mbps 连接,否则根本不连接。

    如果 定制 PCB 布局问题更重要、我会更担心。

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

    您好、Erman、

    关于 C3304/5 (100nF)、如果+3V3 是尖峰(有噪声)或单迹线与 较宽的铜平面、您可能会尝试1000nF 至 4700nF。 用 示波器而非 DMM 检查所有点。

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

    您好、Erman、

     如果您的应用程序在开发板上运行、但不在定制板上运行、那么有足够的证据表明您的板上存在一些差异导致它无法以稳健/稳定的方式工作。 我知道需要付出一些努力、但我仍然建议您是否可以修改 TivaWare 示例并将其移植到您的定制板上、以进一步隔离问题。 如果您电路板上的 TivaWare 示例不能与特定开关配合使用、但可以与其他开关配合使用、则这再次增强了我们对该问题的理解。

     我还想给大家一个机会,即我将从明天开始离开办公室一周,进入论坛的机会非常有限。   

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

    您好、Erma、

     您是否有机会按照我的建议将 TivaWare 示例移植到您的定制板、以进一步证明这可能是板上的硬件问题? 我还注意到、您在 RJ45和 PHY 之间没有看到我们的系统设计指南以及 TI 设计中建议的 ESD 二极管、该设计将 RJ45与内置变压器配合使用。 虽然我无法肯定这是否是问题的根本原因、但在以太网接口上使用 ESD 二极管来保护瞬态威胁非常重要。  

     我认为这篇文章 对您的理解很有用。  

    https://interferencetechnology.com/defending-ethernet-ports-from-electrical-transient-events/

     找出您的问题是否与 ESD 二极管缺失有关的另一种方法是将这些二极管插入 PCB 中的适当位置。 无论您当前的问题如何、都需要执行此操作。  

     我现在要关闭这个线程。 我希望我已向您提供信息、以便您对后续步骤做出一些判断。 如果您有一些要共享的更新、您只需回复此主题即可。