您好!
我们需要使用 KSZ9897R 交换机在 AM64上进行以太网连接。 它们通过 RGMII 连接。 我们尝试使用 SDK 中的 LWIP TCPIP 服务器示例使其正常工作、但网络从未启动:
能否告诉我们、 我们需要在代码中更改哪些内容才能集成 KSZ9897R?
我们使用 SDK v09.01.00。
此致、
Andrean
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.
您好!
我们需要使用 KSZ9897R 交换机在 AM64上进行以太网连接。 它们通过 RGMII 连接。 我们尝试使用 SDK 中的 LWIP TCPIP 服务器示例使其正常工作、但网络从未启动:
能否告诉我们、 我们需要在代码中更改哪些内容才能集成 KSZ9897R?
我们使用 SDK v09.01.00。
此致、
Andrean
您好、Nitika、
感谢您的答复!
我当时正在尝试了解 Enet 驱动程序是否可以在不对开关进行配置的情况下使用该开关。 我刚刚尝试删除"MDIO 主站"并将端口设置为"捆绑"模式:
它是否足以 使它正常工作(假设它的配置良好)、或者我是否需要如 https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/09_01_00_41/exports/docs/api_guide_am64x/enetphy_guide_top.html 中所述实施完整的驱动程序 ?
此致、
Andrean
Ashwani 您好!
您似乎正在使用 AM64x 进行定制电路板设计。
是的、我们计划使用定制电路板。 目前、我们处于评估阶段。
您能帮我讲一讲定制电路板架构的方框图吗? 在您的用例中、流量是如何流动的? 您要配置的接口类型是什么?
这是一个有关我们拥有的器件的抽象方框图。
KSZ9897R 提供5个 PHY 端口和2个 RGMII 端口。 5个 PHY 连接到不同的器件(为简单起见、我仅在图片中添加了两个)。 其中一个 RGMII 通过评估板上使用的同一接口连接到 AM64芯片:
目前、我们有一个用于开关配置的 I2C 接口、但我们可以轻松地将其更改为 MDIO 引脚。 我们使用 strap 配置引脚为 RGMII 模式、速度、自动协商等配置开关 如果我们启用交换机的电源并按图中所示连接2台 PC、那么我们可以对这两台 PC 执行 ping 操作。 在下一步、我们希望使用 TI TCP Server 示例在 AM64与其中一台 PC 之间建立通信。 因此、我们禁用了 MDIO 主站并启用了"捆绑模式"。 我们期望它能尽快建立通信、但 ENET 驱动程序似乎需要通过 MDIO 读取 BMSR 寄存器。 是这样吗?
您是否已获得 TI 评估的电路板原理图?
否、我们没有与 TI 进行任何审查。
此致、
Andrean
感谢 Andrean 提供详细信息。
RGMII 连接到 AM64芯片
您使用的是 CPSW 还是 ICSSG?
AM64x SIT 处理器数据表(修订版 G)(TI.com)
AM243x MCU+ SDK:以太网和网络(TI.com)
3.2.2.9. CPSW 以太网- Processor SDK AM64X 文档
3.6.3.4. PRU_ICSSG 两端口以太网交换机- Processor SDK AM64X 文档
此致
Ashwani
这意味着您使用的是 MDIO 手动模式、而不是 MDIO 自动模式。 正确吗?
AM64x MCU+ SDK:MDIO 手动模式启用(TI.com)
刻度
Ashwani
感谢 Andrean、
[报价用户 id="475111" url="~/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication ]KSZ9897R 交换机[/QUOT]您正在 将 此交换机模拟为 MAC 还是 PHY?
此致
Ashwani
有。
您是否确认 TI 驱动程序已在"捆绑模式"下使用 MDIO? [报价] [报价用户 id="475111" url="~/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication/5212023 #5212023"]否、我们没有对 TI 进行任何评论。
我建议审阅原理图以避免硬件问题。
此致
Ashwani
Ashwani 您好!
因此、我们测试了以太网、它似乎运行良好。 我们可以运行 TCP 服务器和客户端示例。 我们还有两个问题:
1) 1)更改 IsAlive 函数以始终返回"true"的最简单方法是什么? 当我们通过 RGMII 与交换机通信时、连接始终接通。 RGMII 端口没有 PHY 寄存器。
2) 2)如何在"捆绑"模式下更改以太网速度配置? 默认情况下、它设置为100Mb/s、但我们想尝试1Gb/s
此致、
Andrean
Ashwani 您好!
如果它处于捆绑模式、则不应执行该代码。 对吗?
有。 想法是关闭通过 MDIO 进行的任何通信。 我们正在考虑通过 I2C 编写多个定制的访问功能、并且仅使用来自驱动程序的 RGMII 通信。 通常、自举引脚应该足以满足要求。 您确认吗?
我考虑过使用驱动程序以及使用 MDIO 接口改变每个状态。 是否有另一种方法可以使用通用 PHY 驱动程序禁用 MDIO 通信?
此致、
Andrean
是的、会执行。 我们看到了:
- Enet 驱动程序进入 ENETPHY_FSM_STATE_INIT 状态。 在此设置默认值
-然后,它进入 ENETPHY_FSM_STATE_FINING 状态。 在这里、它称为 EnetPhy_findingState、而 EnetPhy_IsAlive . 它还会读取 PHY 的 ID 来绑定正确的驱动程序。 选择通用驱动程序是因为不需要驱动程序。
-然后进入 ENETPHY_FSM_STATE_LINK_WAIT 状态。 在该地址上、它会读取 PHY_BMSR 寄存器和用于自动协商的值。
-然后进入 ENETPHY_FSM_STATE_LINKED 状态。 进行调用 EnetPhy_isPhyLinked 以检测链路。
如果 MDIO"主站"为 false 并且端口已绑定、我们需要设置默认通信配置(100MB、全双工)。 EnetPhy_IsAlive 和 EnetPhy_isPhyLinked 应始终返回 true 或具有外部函数来读取此信息。 RGMII 连接没有 PHY 或 PHY_BMSR 寄存器。 因此、应从不同的寄存器读取状态。
此致、
Andrean
感谢 Andrean 提供详细信息。
如果 MDIO"主设备"为假、端口已绑定
我将对此进行介绍。
由于我在6月12日之前不在办公室、所以只能在下周末查看。
[报价 userid="475111" url="~/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication/5237759 #5237759"] EnetPhy_IsAlive 和 EnetPhy_isPhyLinked 应始终返回 true同时、您可以尝试权变措施以强制返回 true。
此致
Ashwani