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.

[参考译文] MSP432E401Y:禁用自动协商并强制100Base-TX、全双工

Guru**** 2558340 points
Other Parts Discussed in Thread: MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/890850/msp432e401y-disabling-auto-negotiation-and-force-100base-tx-full-duplex

器件型号:MSP432E401Y

您好!

我的客户正在使用 MSP432E401Y 并尝试为100Base-TX、全双工(强制模式)配置 EMAC 和 PHY。
他引用以下 URL:
http://software-dl.ti.com/simplelink/esd/simplelink_msp432e4_sdk/1.60.00.10/docs/driverlib/msp432e4/html/group__emac__api.html#ga6f369bdbe2e8ea108ef1398242030198

并使用以下代码:

int main (void)
{
/*PHY 初始化*/
//启用并重置 MAC。
SysCtlPeripheralEnable (SYSCTL_Periph_EMAC0);
SysCtlPeripheralReset (SYSCTL_Periph_EMAC0);

//启用和复位内部 PHY。
SysCtlPeripheralEnable (SYSCTL_Periph_EPHY0);
SysCtlPeripheralReset (SYSCTL_Periph_EPHY0);

//设置 PHY 类型和配置选项。
EMACPHYConfigSet (EMAC0_BASE、(EMAC_PHY_FORCE_100B_T_FULL_DUPLEX | EMAC_PHY_INT_VICATE_MDIX | EMAC_PHY_INT_MDIX_EN));

// EMACPHYWrite (EMAC0_BASE、0x00、EPHY_BMCR、EPHY_BMCR_DUPLEXM | EPHY_BMCR_SPEED);

//初始化 EMAC
EMACInit (EMAC0_BASE、0x3938700、(EMAC_BCONFIG_FIXED_BURST | EMAC_BCONFIG_PRIORY_FIXED)、1、1、1、 0);
//配置 EMAC
EMACConfigSet (EMAC0_BASE、(EMAC_CONFIG_100Mbps | EMAC_CONFIG_FULL_DUPLEX | EMAC_CONFIG_CHECKSUM_OFFLOAD | EMAC_CONFIG_USE_MACADDR0 | EMAC_CONFIG_STACT_CRC)、
(EMAC_MODE_RX_STORE_Forward | EMAC_MODE_TX_STORE_Forward | EMAC_MODE_RX_FLUSE_DISABLE)、0);

/*调用驱动程序初始化函数*/
Board_init();


但它不起作用、以太网充当自协商。

开发环境:
CCS
TI-RTOS
MSP432E401Y LaunchPad
PHY:内部

这里的潜在问题是什么?

谢谢、此致、
田志郎一郎

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

    大家好、Tashiro-san、我在 E2E 上检查了关键字"EMACPHYConfigSet" API、 之前的线程 有类似的问题。 根据此主题讨论、在硬件方面、请考虑参考 系统设计指南 以确保不存在硬件问题。 在软件上、请尝试使用 SDK :http://dev.ti.com/tirex/explore/node?node=AFrVBkyAqdpNLs83C5MQwA__J4.hfJy__LATEST。 谢谢!

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

    您好、Xiaodong、

    感谢您的回复。

    客户使用 TI LaunchPad 和内部 PHY、因此硬件不会有问题。
    对于软件、我们是否有在 SDK 中配置100Base-TX、全双工(强制模式)的示例代码?
    您提供的 URL 不存在。

    谢谢、此致、
    田志郎一郎

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

    您好 Tashiro-san

    我检查 MSP432E4-SDK 信息。 到目前为止、我还没有找到有关"我们是否有在 SDK 中配置100Base-TX、全双工(强制模式)的示例代码?"的答案。 我将与软件团队核实。

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

    你好,柯希宏

    已咨询 SDK 专家。

    我们没有演示100Base-TX、全双工的代码示例。 但我们可以使用 SDK 上提供的 LwIP 示例。

    请安装 MSP432E4 SDK。 SimpleLink MSP432E4 SDK (适用于 MSP432E4 MCU)附带 lwIP TCP/IP 协议栈(./source/third_party/lwip)和示例(./examples/nortos/MSP_EXP432E401Y/lwip)。 请使用其中一个 lwIP 示例、并按以下示例 lwiopts.h 文件中的方式更新 PHY 配置。 然后将 E4连接到仅支持100 Base-TX 全双工的以太网交换机。

    EMAC_PHY_CONFIG (EMAC_PHY_TYPE_内部| EMAC_PHY_INT_MDIX_EN | EMAC_PHY_FORCE_100B_T_FULL_DUPLEX)

    希望这对您有所帮助!

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

    您好、Xiaoh正直、

    感谢您的回复。
    客户尝试修改 LwIP 示例代码并确认以下更改工作正常。

    EMAC_PHY_CONFIG (EMAC_PHY_TYPE_内部| EMAC_PHY_INT_MDIX_EN | EMAC_PHY_FORCE_100B_T_FULL_DUPLEX)


    因此、根本原因是软件配置。 由于客户正在使用 TI-RTOS、LwIP 示例代码无法按原样使用。
    使用 TI-RTOS + driverlib 时、用户是否需要遵循特定的规则?
    例如、假设使用 updecho 示例;
    simplelink_msp432e4_sdk_3_40_00_08/examples/rtos/MSP_EXP432E401y/ns/udpecho
    以下代码应放置在何处?
    EMAC_PHY_CONFIG (EMAC_PHY_TYPE_内部| EMAC_PHY_INT_MDIX_EN | EMAC_PHY_FORCE_100B_T_FULL_DUPLEX)

    谢谢、此致、
    田志郎一郎

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

    添加离线提供的答案。

    ========================================================================================
    他们需要修改中的以下行 \source\ti\drivers\emac\EMACMSP432E4.c

    #define EMAC_PHY_CONFIG        (EMAC_PHY_TYPE_INTERNAL |                    \
                                    EMAC_PHY_INT_MDIX_EN |                      \
                                    EMAC_PHY_AN_100B_T_FULL_DUPLEX)

    更改为

    #define EMAC_PHY_CONFIG        (EMAC_PHY_TYPE_INTERNAL |                    \
                                    EMAC_PHY_INT_MDIX_EN |                      \
                                    EMAC_PHY_FORCE_100B_T_FULL_DUPLEX)

    他们可以修改文件,然后重建驱动程序库(如 SDK 用户指南中的“重建驱动程序”一节所述)。 另一个选项(最初更简单)是只需将此文件添加到工程中、进行更改、然后重新构建应用程序。 将使用本地副本而不是 SDK 的版本。
    ========================================================================================



    ========================================================================================
    我得到了“力量”来工作。 我将 EMACMSP432E4.c 文件添加到 TCP Echo 示例中、并对其进行了以下更改:

    1. #includes 之前添加#define __MSP432E401Y__。 我希望这会导致生成错误。
    2. 将地址从1更改为0

    #define PHY_PHY_ADDR 0

    1. 更改为强制

    #define EMAC_PHY_CONFIG     (EMAC_PHY_TYPE_INTERNAL |                    \

                                    EMAC_PHY_INT_MDIX_EN |                      \

                                    EMAC_PHY_FORCE_100B_T_FULL_DUPLEX)

     

    进行这些更改后、我能够获得 IP 地址。 你能试试吗?

    ========================================================================================