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.

[参考译文] TMS570配置 EMAC 多播问题

Guru**** 2618835 points

Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/785454/tms570-configures-emac-multicast-problem

主题中讨论的其他器件:HALCOGEN
大家好、TI 专家、
 我们正在努力将 lwip1.4.1和 TCN TRDP 迁移到 TMS570上。  我们遇到 了无法  接收多播帧 、但可以 正确接收广播和单播帧的问题。 然后、发现没有从 EMAC 接口获取多播帧。
我们不知道驱动程序配置中是否存在问题。 我们的驱动程序使用 HALCOGEN 来根据需要生成一些更改。
驱动程序代码如下所示

  EMACInit (hdkif->EMAC_Ctrl_BASE、hdkif->EMAC_BASE);

  MDIOInit (hdkif->MDIO_base、MDIO_FREQ_INPUT、MDIO_FREQ_OUTPUT);
  while (delay--);

  EMACRxBroadCastEnable (hdkif->EMAC_BASE、0);

  /*在 EMAC 硬件中设置 MAC 地址*/
  EMACMACSrcAddrSet (hdkif->EMAC_BASE、hdkif->mac_addr);

  /*确认接收和发送中断以实现正确的中断脉冲*/
  EMACCoreIntAck (hdkif->EMAC_BASE、EMAC_INT_CORE0_RX);
  EMACCoreIntAck (hdkif->EMAC_BASE、EMAC_INT_CORE0_TX);

  EMACRxUnicastSet (hdkif->EMAC_BASE、0);
  EMACRxMultiCastEnable (hdkif->EMAC_BASE、0);
  EMACNumFreeBufSet (hdkif->EMAC_BASE、0、10);

  /*为通道0写入 RX HDP */
  EMACRxHdrDescPtrWrite (hdkif->EMAC_BASE、(U32) rxch->ACTIVE_HEAD、0);

  EMACTxEnable (hdkif->EMAC_BASE);
  EMACRxEnable (hdkif->EMAC_BASE);

  EMACMIIEnable (hdkif->EMAC_BASE);


  /**
  *启用发送和接收、启用中断
  *通道0和控制内核0
  *
  EMACTxIntPulseEnable (hdkif->EMAC_BASE、hdkif->EMAC_Ctrl_BASE、0、0);
  EMACRxIntPulseEnable (hdkif->EMAC_BASE、hdkif->EMAC_Ctrl_BASE、0、0);

代码未全部发布、这些是调用 EMAC 接口的部件。 此配置中是否存在任何问题?
谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您还需要设置 MACHASH1和 MACHASH2寄存器以匹配要侦听的多播地址。 它是一个哈希值、因此它获取 MAC 地址的48位、并将其哈希到单个位位置。 您必须在哈希寄存器中设置该位置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你。 现在可以正确接收多播帧。