搜索
bottom↓
回复: 10

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

[复制链接]

出0入0汤圆

发表于 2017-10-11 11:05:20 | 显示全部楼层 |阅读模式
本帖最后由 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软件发送数据,抓包软件也监听到了数据,但单片机没接收到数据


再关闭以太网的MAC滤波功能,代码更改如下所示:
ETH_InitStruct->ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect;
改为
ETH_InitStruct->ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_None;
编译下载,运行
PC软件发送数据,抓包软件也监听到了数据,但单片机还是没接收到数据



再分配多一个65000的端口,来实现接收
更改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_bind(pcb,IP_ADDR_ANY,65000);
       
        udp_recv(pcb,udp_sACN_recv,NULL);
}

编译下载,运行

单片机也没接收到数据

有没有高手指点一下,我的问题到底出在哪里?
如果有高手知道问题在哪里,并可包解决的话,可私聊,有偿

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2017-10-11 11:27:28 | 显示全部楼层
本帖最后由 aozima 于 2017-10-11 11:28 编辑

搜 一下 LWIP_IP_ACCEPT_UDP_PORT 看看是否有关

硬件方面,把 recv_all 打开,以关闭过滤器,并在驱动中dump所有接收到的数据包,确认硬件上有收到。

出0入0汤圆

 楼主| 发表于 2017-10-11 11:43:30 | 显示全部楼层
aozima 发表于 2017-10-11 11:27
搜 一下 LWIP_IP_ACCEPT_UDP_PORT 看看是否有关

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

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

“并在驱动中dump所有接收到的数据包”是什么意思?

出100入101汤圆

发表于 2017-10-11 11:47:06 | 显示全部楼层
使用lwip做过组播的坛友估计比较少

出0入0汤圆

 楼主| 发表于 2017-10-11 11:53:29 | 显示全部楼层
fengyunyu 发表于 2017-10-11 11:47
使用lwip做过组播的坛友估计比较少

只要有人做过就好了,我以前也搞了好久没搞出来,最近有客户想要这个功能,搞了几天,还是不行,只能上来求助了

出0入0汤圆

发表于 2017-10-11 12:55:00 | 显示全部楼层
12年的时候,似乎搞过,没印象了……

出0入0汤圆

 楼主| 发表于 2017-10-11 13:10:57 | 显示全部楼层
xivisi 发表于 2017-10-11 12:55
12年的时候,似乎搞过,没印象了……

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

出0入0汤圆

发表于 2017-10-11 16:15:16 | 显示全部楼层
zhuhaibc 发表于 2017-10-11 13:10
找找看,看有没有代码,想参考参考

早没了……要弄清楚,我也是查资料,

出0入0汤圆

发表于 2017-10-11 17:57:08 | 显示全部楼层
可以看看这位网友的解决方法

https://www.amobbs.com/forum.php ... =%E7%BB%84%E6%92%AD

出0入0汤圆

 楼主| 发表于 2017-10-13 16:15:38 | 显示全部楼层
guxingganyue 发表于 2017-10-11 17:57
可以看看这位网友的解决方法

https://www.amobbs.com/forum.php?mod=viewthread&tid=5647591&highlight=%E ...

谢谢,我的问题找到了,关了电脑的防火墙就行了

出0入0汤圆

 楼主| 发表于 2017-10-13 16:16:39 | 显示全部楼层
问题已找到,关了电脑的防火墙就行了,谢谢各位了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 21:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表