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:无法接收以太网的现象。

Guru**** 2540720 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received

器件型号:MSP432E401Y
Thread 中讨论的其他器件:EK-TM4C1294XL

您好!

存在无法接收以太网的现象。

通常无法正常接收时

-RDES0寄存器自身位保持为1

-EMACDMARIS_RI 位保持为0

-EMACDMARIS_RS 位保持为0x03

上述现象并不总是发生的、如果我在与 MAC 设置无关的位置更改源代码并进行编译、那么它将正常工作。

(可能由于编译而导致内存分配发生变化、并且时序变化是相关的。)

如果您有任何想法、请告诉我。

谢谢、

科基

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

    您好、Koki、

    这可能难以跟踪。  当您在不相关的段中"更改"代码时、您是否执行添加其他指令行之类的操作(例如调用函数、或者可能创建新函数、或者执行一些数学运算)、或者是否添加新变量。  我正在尝试了解它是否与 RAM 与闪存相关。

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

    您好、Dennis

    在大多数情况下、它正常工作、但在极少数情况下无法接收。

    当无法接收时执行以下方法之一时、它正常工作。

    如果可以接收一次、后续接收将正常运行

    技术时的效率

    -当我使用 int 创建一个变量时,内存分配发生了变化,并且工作正常

    -如果我在使用调试器的初始化过程中执行停止或步进,它会正常工作。

    -通过调用 EMAC 复位() x 2次来工作

     

    以防万一、我将介绍初始化代码。

    e2e.ti.com/.../emac_5F00_init.c

    谢谢、

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

    您好、Koki、

    不幸的是、我找不到任何对这个问题非常了解的人。  我咨询了我们的连接组、但它们仅支持无线设备。  我尝试在 E2E 上搜索 TM4C 产品和以太网问题、找到了很多主题、但与您的问题无关。  您也可以尝试在那里搜索。  我会不断寻找能够提供帮助的人。

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

    您好、Dennis

    [引用 userid="114745" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3724730 #3724730">您也可以尝试在此处进行搜索。  我会不断寻找能够提供帮助的人。

    是的、我还将从过去的论坛中搜索。

    如果您有 任何信息、请告诉我。

    谢谢、

    科基

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

    您好、Koki、

    下面有一个建议、作为隔离和识别问题的方法、您能否编写一个测试函数、该函数可以读取和转储以太网寄存器、以查看是否可以识别不同的寄存器?   

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

    您好、 Dennis

    我仅总结了寄存器值存在差异的地方。

    ------------------------------------------------------------------

    当系统正常运行时、μ 〇・・・寄存器值
    μ×・・・寄存器的值


    EMAC_PMTCTLSTAT (以太网 MAC PMT 控制和状态寄存器)
    〇 0x01000000
    ×0x03000000

    EMAC_TXCNTGB (良好和不良帧的以太网 MAC 发送帧计数)
    〇 0x000000C9
    ×0x00000000

    EMAC_TXOCTCNTG (以太网 MAC 发送八位位组计数正常)
    〇 0x00005630
    ×0x00000000


    EMAC_RXCNTGB (良好和不良帧的以太网 MAC 接收帧计数)
    〇 0x000000E1
    ×0x00000000

    EMAC_RXCNTGUNI (良好单播帧的以太网 MAC 接收帧计数
    〇 0x000000CD
    ×0x00000000

    EMAC_DMARIS (以太网 MAC DMA 中断状态)
    〇 0x006804C4
    ×0x00660004

    EMAC_MFBOC (以太网 MAC 丢失帧和缓冲区溢出计数器)
    〇 0x00000001
    ×0x00000000

    EMAC_HOSRXDESC (以太网 MAC 当前主机接收描述符)
    〇 0x200238DC
    ×0x200238BC

     ------------------------------------------------------------------

    此外、TI 提供的示例代码使用接收中断、但我使用一个标志来检查是否已接收到该中断。

    使用此标志的确认方法是否存在任何问题?

     

    谢谢、

    科基

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

    您好、Koki、

    您是否使用 LWIP v1.4.1进行以太网时钟?  

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

    您好!  

    [引用 userid="48581" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3729984 #3729984">您是否使用 LWIP v1.4.1进行以太网时钟?  [/报价]

    未使用 TCI/IP 堆栈。
    目前、我正在尝试查看是否只能通过 EMAC 接收以太网帧。

    目前、我在下面的文件夹中查看了 API 指南中描述的编程示例、我很好奇。

    文件://C:/ti/simplelink_msp432e4_sdk_4_20_00_12/docs/driverlib/msp432e4/api_guide/html/group__emac__api.html

    在初始化过程中、有以下说明。

    //等待链接变为活动状态。

    while ((EMAC0_BASE、ui8PHYAddr、EPHY_BMSR)& EPHY_BMRS_LINKSTAT)= 0){}

    上述操作将等待 LAN 链路、然后启用 EMAC 和 DMA。

    作为一项测试、我添加了上述内容、现在一切似乎都正常。

    是否需要等待链路才能启用 EMAC 和 DMA?

    谢谢、

    科基

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3734247 #3734247"]是否需要等待链接才能启用 EMAC 和 DMA?

    这似乎不正确。 为什么 EMAPPHYREAD()甚至需要测试链路状态? 也许只需拔下电缆、这样代码就不会出现故障读取缓冲器 DMARIS 标志。 PHY 在某些 TI 以太网外设的 EMAC 内部是分离的。   

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

    你好、GI

    [引用 userid="48581" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3734637 #373467]\n 可能仅需拔下电缆、因此代码不会出现故障读取缓冲器 DMARIS 标志。 [/报价]

    请告诉我更多详细信息。

    如果您对解决此问题有任何想法、请再次告知我。

    谢谢、

    科基

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

    您好、Koki、

    上面提到的红色代码似乎可以解决问题?

    对于 LWIP 1.4.1配置、GPTM 驱动的 SW 中断首先加载 Tm4C129_HAL.c、然后测试 PHY 的 HAL 级别是否存在链路状态。 对 DHCP 的 IP/MAC 函数调用仍循环、以便 PHY 链路状态标志在与上述应用代码流中的链路状态测试中变为真。  这种顺序可防止上层 IP 层通过运行 PHY、并在 EMAC 完全配置为通过 HAL 进行 PHY 数据传输之前尝试将 IP 分配给堆栈。 在 EK-TM4C1294XL Launch Pad 上加载的 LWIP 网络堆栈中存在这种代码行为和各种代码示例。

    此致、

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

    你好、GI

    [引用 userid="48581" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3736563 #3736563"]上面您说过红色代码似乎可以解决问题?

    是的、现在工作正常。

     

    以上不是基本解决方案、对吧?

    2.可以用标志检查以太网接收情况吗? (在示例代码中、接收由中断确认。)

    3. 如果您对"无法正确接收 ETH "的原因有任何疑问、请告知我。

    谢谢、

    科基

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3723360 #3723360"]在大多数情况下,它正常工作,但在极少数情况下无法接收它

    如果 DMA 接收器输入到 FAST 且没有剩余的缓冲空间、也许您可以检查 DMARIS 标志的 Ro 位状态可能会指示过载  

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

    你好、GI

    好的、我会检查一下!

    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3736969 #3736969"]2. 是否可以使用标志检查以太网接收? (在示例代码中、接收由中断确认。)

    2个呢?

    谢谢、

    科基

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3739157 #3739157]2. 是否可以使用标志检查以太网接收? [/报价]

    如果您的代码使用 utils/ring buffer.c、它可以从读取缓冲区标志状态中受益。  也许 为什么建议使用 LWIP 来处理7个网络层或传输层。  

    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1006914/msp432e401y-phenomenon-that-ethernet-cannot-be-received/3739157 #3739157"]
    (在示例代码中、接收由中断确认。)

    2个呢?

    [/报价]

    然而、如果 DMARIS 的 Ro 标志被置位、那么中断故障(Ro)将在故障标志状态的原因之后出现。 在下一个字节进入 PHY 之前、您需要停止 DMARIS 标志(Ro)的设置并清空 DMA Rx 寄存器。 如果数据流具有多个字节、则很难实现这一点、因此7网络层使用 PCB 的环形缓冲器来过滤 TCP/IP 堆栈中的数据。

    可能会尝试导入 CCS 并修改使用 LWIP1.4.1作为传输律师  的 MPS432的 TM4C1294项目。否则、请在 MPS432下找到使用 LWIP 传输处理 DMA 描述符数据的项目文件夹。 CCS 具有资源浏览器来查找这些项目(如果存在)。 明智的做法是投资 EK-TM4C1294XL Launch Pad、通过 LWIP v1.4.1进行更广泛的 TCPIP 传输。  

    在你的奇科奇冒险中最幸运的  

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

    您好、Koki、

    我们已经听过您的介绍、现在已经有一段时间了、因此我将假定您能够继续推进您的项目。

    感谢 GI 帮助您解决此问题。


    我将此帖子标记为已解决,但如果不是这种情况,请单击“这不能解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题已锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。