我在 simplelink MSP4.20.00.12的 API 文档中看到 EMACInit()有一个标记被描述为:
EMAC_BCONFIG_ALT_descriptors
它指出、必须将此标志设置为使用 DMA 的备用描述符并用于卸载 CRC 等
我搜索了所有源代码、但在任何地方都看不到定义的标志(甚至在我认为应该位于 emac.h 中的地方也看不到)。
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.
我在 simplelink MSP4.20.00.12的 API 文档中看到 EMACInit()有一个标记被描述为:
EMAC_BCONFIG_ALT_descriptors
它指出、必须将此标志设置为使用 DMA 的备用描述符并用于卸载 CRC 等
我搜索了所有源代码、但在任何地方都看不到定义的标志(甚至在我认为应该位于 emac.h 中的地方也看不到)。
查看 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 标志的内容、并解释驱动程序始终使用替代描述符。