主题中讨论的其他器件: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://www.alliedtelesis.com/sites/default/files/documents/datasheets/fs705efc_ds.pdf
https://www.alliedtelesis.com/documents/installation-guide-fs705efc-and-fs706efc