求高手,有偿,STM32F407与DP83848芯片在lwip下,实现组播问题

2019-12-22 13:43发布

本帖最后由 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 上传
单片机也没接收到数据

有没有高手指点一下,我的问题到底出在哪里?
如果有高手知道问题在哪里,并可包解决的话,可私聊,有偿
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
aozima
1楼-- · 2019-12-22 14:21
本帖最后由 aozima 于 2017-10-11 11:28 编辑

搜 一下 LWIP_IP_ACCEPT_UDP_PORT 看看是否有关

硬件方面,把 recv_all 打开,以关闭过滤器,并在驱动中dump所有接收到的数据包,确认硬件上有收到。
zhuhaibc
2楼-- · 2019-12-22 18:02
aozima 发表于 2017-10-11 11:27
搜 一下 LWIP_IP_ACCEPT_UDP_PORT 看看是否有关

硬件方面,把 recv_all 打开,以关闭过滤器,并在驱动中du ...

搜索不到与LWIP_IP_ACCEPT_UDP_PORT相关的内容,不知是不是我权限问题,因为是刚注册的号

“并在驱动中dump所有接收到的数据包”是什么意思?
fengyunyu
3楼-- · 2019-12-22 18:39
使用lwip做过组播的坛友估计比较少
zhuhaibc
4楼-- · 2019-12-22 19:06
fengyunyu 发表于 2017-10-11 11:47
使用lwip做过组播的坛友估计比较少

只要有人做过就好了,我以前也搞了好久没搞出来,最近有客户想要这个功能,搞了几天,还是不行,只能上来求助了
xivisi
5楼-- · 2019-12-22 19:11
 精彩回答 2  元偷偷看……
zhuhaibc
6楼-- · 2019-12-22 22:46
xivisi 发表于 2017-10-11 12:55
12年的时候,似乎搞过,没印象了……

找找看,看有没有代码,想参考参考

一周热门 更多>