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:Simplelink SDK 4.20.00.12 EMAC 问题

Guru**** 2394305 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/991699/msp432e401y-simplelink-sdk-4-20-00-12-emac-problem

器件型号:MSP432E401Y

我在 simplelink MSP4.20.00.12的 API 文档中看到 EMACInit()有一个标记被描述为:

EMAC_BCONFIG_ALT_descriptors

它指出、必须将此标志设置为使用 DMA 的备用描述符并用于卸载 CRC 等

我搜索了所有源代码、但在任何地方都看不到定义的标志(甚至在我认为应该位于 emac.h 中的地方也看不到)。

 

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

    您好!  

    让我与团队联系并向您提供反馈。  

    谢谢、  

    Lixin  

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

    查看 simplelink_msp432e4_SDK_4_20_00_12的源代码、一致认为 EMAC_BCONFIG_ALT_descriptor 的唯一出现是 EMACInit 标头中的以下注释:

    //! The \e ui32BusConfig parameter is the logical OR of various fields.  The
    //! <snip>
    //! - \b EMAC_BCONFIG_ALT_DESCRIPTORS indicates that the DMA engine should
    //! use the alternate descriptor format as defined in type
    //! \b tEMACDMADescriptor.  If absent, the basic descriptor type is used.
    //! Alternate descriptors are required if using IEEE 1588-2008 advanced
    //! timestamping, VLAN or TCP/UDP/ICMP CRC insertion features.  Note that,
    //! for clarity, emac.h does not contain type definitions for the basic
    //! descriptor type. Please see the technical reference manual/datasheet
    //! for information on basic descriptor structures.
    

    表15-79.  《MSP432E4 SimpleLink 微控制器技术参考手册》(修订版 A)中的 EMACDMABUSMOD 寄存器字段说明 包含以下字段:

    其中、我认为 ATDS 位在基本/备用描述符之间进行选择。

     EMACInit 函数包含以下内容:

        //
        // Set common flags.  Note that this driver assumes we are always using
        // 8 word descriptors so we need to OR in EMAC_DMABUSMOD_ATDS here.
        //
        ui32Val = (ui32BusConfig | (ui32DescSkipSize << EMAC_DMABUSMOD_DSL_S) |
                   EMAC_DMABUSMOD_ATDS);

    由于 EMAC 驱动程序被写入始终设置8字替代描述符、我认为这就是 为什么 EMAC_BCONFIG_ALT_descriptors 标志不存在的原因。 怀疑应更新文档以删除提及 EMAC_BCONFIG_ALT_descriptors 标志的内容、并解释驱动程序始终使用替代描述符。