RT1052接收不到 UDP 组播包 问题解决

RT1052使用RT-THREAD系统,开启了组播功能,但是接收不到数据,找了很久,是EMAC把组播包给过滤掉了,找了很久终于解决了,记录一下

在fs_enet.c文件里面在364行的位置

void ENET_Init(ENET_Type *base,

               enet_handle_t *handle,

               const enet_config_t *config,

               const enet_buffer_config_t *bufferConfig,

               uint8_t *macAddr,

               uint32_t srcClock_Hz)

函数对MAC等接收和发送进行了设置,感觉需要分析一下

 

这个函数在drv_eth.c文件里面调用,参数在这个文件里面输入进行设置

其中enet_config_t结构控制了相关控制参数,在fs_enet.h文件里面定义,在627行

 

其中enet_config_t 的macSpecialConfig是设置mac的相关参数的,这个参数的相关定义在fs_enet.h文件的269行enet_special_control_flag_t枚举里面

枚举的相关定义:

RT1052接收不到 UDP 组播包 问题解决_第1张图片

 

在drv_eth.c文件里面的static void _enet_config(void)函数中,进行了如下设置:

修改了config.macSpecialConfig=kENET_ControlPromiscuousEnable;

然后可以接收到了

原因应该是MAC初始设置是启用了广播帧拒绝

你可能感兴趣的:(编程)