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 problem

Part Number: MSP432E401Y

I see in the API documentation for simplelink MSP4.20.00.12 I see the EMACInit() there is a flag described as:

EMAC_BCONFIG_ALT_DESCRIPTORS

It states this flag must be set to use the alternate descriptors for DMA and use for offload CRC etc.

I searched all the source code and I do not see the flag defined anywhere (not even in the emac.h where I think it should be).

 

  • Hi, 

    Let me check with team and feedback to you. 

    Thanks, 

    Lixin 

  • Looking at the source code for simplelink_msp432e4_sdk_4_20_00_12 agree that the only occurrence of EMAC_BCONFIG_ALT_DESCRIPTORS is the following comment in the header of 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.
    

    Table 15-79. EMACDMABUSMOD Register Field Descriptions in the MSP432E4 SimpleLinkTm Microcontrollers Technical Reference Manual (Rev. A) contains the following field:

    Where I think the ATDS bit selects between basic / alternate descriptors.

    The EMACInit function contains the following:

        //
        // 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);

    Since the EMAC driver has been written to always set 8 word alternative descriptors, I think that is why the EMAC_BCONFIG_ALT_DESCRIPTORS flag doesn't exist. Suspect the documentation should be updated to remove mention of the EMAC_BCONFIG_ALT_DESCRIPTORS flag, and instead explain that alternative descriptors are always used by the driver.