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.

[参考译文] TMS570LC4357:您能帮助我解决4个主要与 EMAC 模块有关的问题吗?

Guru**** 2609955 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/762673/tms570lc4357-can-you-help-me-to-solve-4-questions-mainly-about-the-emac-modules

器件型号:TMS570LC4357

在过去几天里、我遇到了以下3个问题:

1.can 您可以帮助我查看原理图?e2e.ti.com/.../8267.SB_5F00_V1005.pdf

当我想使用以太网模块时、我发现如果我写入 valueto 寄存器、我将读取不同的值。例如:

MDIO_USERACCESS0 =  
(1 <<31)/*[31] GO*/
|(0 < 30)/*[30] Read*/
|(0 < 29)/*[29] Ack*/
|((RegAddr & 0x1F)<< 21)/*[25-21] PHY 寄存器地址*/
|((PhyAddr & 0x1F)<< 16)/*[20-16] PHY 地址*/
|(0 <<0);/*[15-0]数据*/

(

#define MDIO_base        (0xFCF78900UL)

#define MDIO_USERACCESS0    *(volatile uint32_t*)(MDIO_base + 0x80UL)

)

写入 MDIO_USERACCESS0后、我将读取0x0021FFFF 或类似的内容、但显然我没有写入 0x0021FFFF。

3.我不能读热泡。

#define ECTRL_BASE        (0xFCF78800UL)

#define ECTRL_SOFTRESET *(uint32_t*)(ECTRL_BASE + 0x04UL)

我找不到寄存器 ECTRL_SOFTRESET 或无法读取它的值。

我无法连接 到 DP83640

IsNormal =(MDIO_LINK 和2U)? true:false;

(

#define MDIO_LINK *(volatile uint32_t*)(MDIO_base + 0x0CUL)

#define MDIO_base        (0xFCF78900UL)

)

MDIO_LINK 始终为0;

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

    如果您需要 TI 查看您的原理图、请联系当地的 FAE。
    2.您的软件必须在启动一个新的传输前检查 USERACCESS0中 GO 位的状态、以确保之前的传输已经完成。

    //检查 GO 位
    while (MDIO_USERACCESS0 & 0x8000000);

    //读取数据
    值= MDIO_USERACCESS0;

    3.您能否使用 CCS 寄存器窗口访问 SOFTRESET 寄存器? 或者、您是否能够在代码中写入/读取 SOFTRESET 而不是使用 CCS 表达式?

    #define ECTRL_SOFTRESET *(volatile uint32_t*)(ECTRL_base + 0x04)
    值= ECTRL_SOFTRESET;

    4.如果具有相应地址的 PHY 有链路且 PHY 确认读取事务、则设置 MDIO 链路。 如果 PHY 指示它没有链路或无法确认读取事务、则该位复位。 写入寄存器无效。

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

    如何从 PHY 读取 ID 或版本号? 我是说您能举个例子吗?

    我使用如下引脚:

    pinmux 文件是否正确?

    e2e.ti.com/.../0358.HL_5F00_pinmux.c

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

    寄存器2和寄存器3用于 PHY ID。

    您在测试中使用了哪个板?

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

    我想我已经知道原因了。我不正确地使用了引脚。例如、

    我同时将引脚 G4用作 MII_TXD3、T2用作 MII_TXD2、但将 J18用作 MII_TXD0、将 J19用作 MII_TXD1。

    MII_RXD 引脚也是如此。

    感谢您的回答。