本帖最后由 zhuhaibc 于 2017-10-11 14:09 编辑
不知怎样编辑这个题目才能吸引更多高手过来,希望管理人员能帮忙编辑一下,谢谢
单片机型号:STM32F407
网口芯片:DP83848
lwip版本:v1.3.2
本地IP为:192.168.0.50,与组播共用端口5568
我做过的修改如下所示:
1、 在opt.h文件中,将
#define LWIP_IGMP 0
改为
#define LWIP_IGMP 1
即打开IGMP功能
到论坛上搜 lwip与IGMP搜不到任何信息
2、在ethernetif.c文件中,将语句
netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP;
改为
netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_IGMP; //添加IGMP标志
3、添加igmp_tmr()函数的调用
在 netconf.c文件靠前的位置添加变量,大约在该文件的第70行左右,代码如下所示。
#ifdef LWIP_IGMP
uint32_t IGMPTimer=0;
#endif
然后在该文件的#ifdef USE_DHCP前面,大约在第180行的位置添加igmp计时器调用代码:
#if LWIP_IGMP
if(localtime-IGMPTimer>=IGMP_TMR_INTERVAL)
{
IGMPTimer=localtime;
igmp_tmr();
}
#endif
4、UDP初始化
void UDP_sACN_Init(void)
{
struct udp_pcb *pcb;
#if LWIP_IGMP
struct ip_addr ipgroup;
IP4_ADDR(&ipgroup,230,0,0,11);
igmp_joingroup(IP_ADDR_ANY,(struct ip_addr *)(&ipgroup));
#endif
pcb = udp_new();
udp_bind(pcb,IP_ADDR_ANY,5568);
udp_recv(pcb,udp_sACN_recv,NULL);
}
编译下载,运行
PC软件发送数据,抓包软件也监听到了数据,但单片机没接收到数据
数据截图2.jpg (108.8 KB, 下载次数: 0)
下载附件
第三次发
2017-10-11 10:54 上传
单片机也没接收到数据
有没有高手指点一下,我的问题到底出在哪里?
如果有高手知道问题在哪里,并可包解决的话,可私聊,有偿
搜 一下 LWIP_IP_ACCEPT_UDP_PORT 看看是否有关
硬件方面,把 recv_all 打开,以关闭过滤器,并在驱动中dump所有接收到的数据包,确认硬件上有收到。
一周热门 更多>