您好的支持团队!
我使用 MSP432E401Y。 我在 Code Composer Studio 中编写一个汇编代码。
我想使用标准的 MSP432E401Y 功能进行 MAC 滤波。 首先、我尝试启用目标 MAC 过滤。 我将 MAC 写入 EMACADDR0L 和 EMACADDR0H。 目的 MAC 过滤功能完美。
对于源 MAC 过滤、我将采取以下步骤:
-我将 MAC 地址写入 EMACADDR1L 和 EMACADDR1H;
-我将寄存器 EMACADDR1H 中的第31位(AE)置位(地址滤波器模块使用第二个地址进行完美滤波)、第30位(SA)(MAC Address1[47:0]用于与接收帧的 SA 字段进行比较);
-我将寄存器 EMACFRAMEFLTR 中的位9 (SAF)置位(源地址滤波器被启用)。 EMACFRAMEFLTR 的所有其它位为0。
您将询问我如何检查滤波。 我向 MCU 发送一个具有以下参数的以太网帧:
-帧的目的 MAC 地址与 EMACADDR0x 中的地址不匹配
-帧的源 MAC 地址与 EMACADDR1x 中的地址匹配。
但 DMA 会丢弃帧。 我认为帧应该被接收、因为 EMACFRAMEFLTR 的第31位被清零(MAC RX 模块只传递通过 SA 或 DA 地址滤波器的帧)。
此外、我清零 EMACADDR1H 中的位30 (SA)(MAC 地址1[47:0]用于与接收帧的 DA 域进行比较)、并发送与 EMACADDR1x 中的地址匹配的目标 MAC 地址帧。 但 DMA 会再次丢弃数据包。 只有当帧的目的 MAC 字段与 EMACADDR0x 匹配时、EMAC 才会接收帧。
我没有发现我的错误。 看起来 EMACADDR1x 始终处于禁用状态。 EMAC“看不到”位于 EMACADDR1x 中的地址。 但位31 (AE)= 1。 我在调试会话期间在"Registers"窗口中进行了检查。
请帮帮我。 我觉得这个错误很小。
此致。