完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
百度一下LWIP双网口,找到了如下方法
在原子哥lwip例程基础上,我也按着大神的思路去改 1.lwip_comm_init()函数下,首先设置了两个网卡的地址信息,除了mac和ip不一样,其他两个是一样的 初始化两个网口驱动 使用两次netif_add() 添加俩网卡, netif_set_default()设置为默认网口,netif_set_up打开网口 2.原子哥例程中使用ethernetif_init()把low_level_init()给封装了 [C] 纯文本查看 复制代码 //使用low_level_init()函数来初始化网络//netif:网卡结构体指针//返回值:ERR_OK,正常// 其他,失败err_t ethernetif_init(struct netif *netif){ LWIP_ASSERT("netif!=NULL",(netif!=NULL));#if LWIP_NETIF_HOSTNAME //LWIP_NETIF_HOSTNAME netif->hostname="lwip"; //初始化名称#endif netif->name[0]=IFNAME0; //初始化变量netif的name字段 netif->name[1]=IFNAME1; //在文件外定义这里不用关心具体值 netif->output=etharp_output;//IP层发送数据包函数 netif->linkoutput=low_level_output;//ARP模块发送数据包函数 low_level_init(netif); //底层硬件初始化函数 return ERR_OK;} 这该肿么搞~~先学习一下在搞吧 实验58 网络通信实验.rar (2.79 MB ) |
|
相关推荐
26个回答
|
|
哈哈 搞定了 。
关于效验那一块,lan8720使用hal以太网库,使用的是硬件效验,28j60不是使用stm32的内部mac,所以没法使用以太网库的硬件效验,如果使用了肯定出现问题。 解决方法:lan8720也配置为软件效验,lwip也用软件效验,ok,都可以ping 代码修改: 8720的初始化中 [C] 纯文本查看 复制代码 ETH_Handler.Init.ChecksumMode=ETH_CHECKSUM_BY_SOFTWARE;//软件帧校验 lwipopts.h中 将CHECKSUM_BY_HARDWARE屏蔽掉 使用软件效验 |
|
|
|
哥们是啥子问题啊 没说明白 是添加了两个网口 有一个不能正常通信还是?
两个网口应该是可以实现的 不然路由器可以插这么多网线没理由啊! 然后F429自带的MAC是不是只有一个啊 设置两个MAC地址不知道行不行, 我没弄过双网口,关注中 |
|
|
|
双网口我觉得是不可以的,MAC控制器只有一个。除非分时复用。
|
|
|
|
429的内部mac确实只有一个,但是我可以外扩phy芯片啊,phy芯片可以挂载好多个呢,比如lan8720,这一点原子的例程中也有说到。我现在挂载lan8720,还有28J60(spi通信),单独使用是没问题的。lwip是支持多网口的
|
|
|
|
|
|
STM32F429 自带的 MAC 相当于数据链路层,PHY芯片相当于物理层,在链路层的基础上外接多个物理层是没问题的
|
|
|
|
我个人觉得MAC只有一个 MAC地址也就只有一个
多网口肯定支持 所以你那个双网口应该是可以实现的 多网口的意义是不是像路由器一样可以连接多台电脑啊?? 我在配置路由器的时候发现MAC地址只有一个,但是可以连接多台电脑 所以我觉得你在LWIP初始化的时候 MAC地址给一个就可以了 没必要两个 |
|
|
|
没具体做过,不太懂
|
|
|
|
路由器我不知道,但是两个网卡相当于两个客户端啊,在同一个局域网当中mac地址是不能重复的吧
|
|
|
|
你设置不同MAC即可
|
|
|
|
|
|
|
|
原来搞过一个(LAN8720PHY+STM32MAC) +(WLAN+MAC+phy)的双网卡 虽然都能ping通 但是感觉很费劲 后来又不折腾了
|
|
|
|
简短解说 就是麻烦麻烦 加麻烦 .老衲五木好像有双网卡的开发板 demo什么的 记得在淘宝看见过,,,,,,,,买一块
|
|
|
|
我看到了 好贵啊~~~
|
|
|
|
#define CHECKSUM_BY_HARDWARE //定义CHECKSUM_BY_HARDWARE,使用硬件帧校验 卡一 ok 卡二效验值=0 ping不通
屏蔽掉硬件效验 ,使用软件效验 卡2 ok 卡1效验值=0 ping不通 反正俩网卡只能效验一个。。。。 [C] 纯文本查看 复制代码 //帧校验和选项,STM32F4x7允许通过硬件识别和计算IP,UDP和ICMP的帧校验和#define CHECKSUM_BY_HARDWARE //定义CHECKSUM_BY_HARDWARE,使用硬件帧校验#ifdef CHECKSUM_BY_HARDWARE //CHECKSUM_GEN_IP==0: 硬件生成IP数据包的帧校验和 #define CHECKSUM_GEN_IP 0 //CHECKSUM_GEN_UDP==0: 硬件生成UDP数据包的帧校验和 #define CHECKSUM_GEN_UDP 0 //CHECKSUM_GEN_TCP==0: 硬件生成TCP数据包的帧校验和 #define CHECKSUM_GEN_TCP 0 //CHECKSUM_CHECK_IP==0: 硬件检查输入的IP数据包帧校验和 #define CHECKSUM_CHECK_IP 0 //CHECKSUM_CHECK_UDP==0: 硬件检查输入的UDP数据包帧校验和 #define CHECKSUM_CHECK_UDP 0 //CHECKSUM_CHECK_TCP==0: 硬件检查输入的TCP数据包帧校验和 #define CHECKSUM_CHECK_TCP 0 //CHECKSUM_CHECK_ICMP==1:硬件检查输入的ICMP数据包帧校验和 #define CHECKSUM_GEN_ICMP 0#else //CHECKSUM_GEN_IP==1: 软件生成IP数据包帧校验和 #define CHECKSUM_GEN_IP 1 // CHECKSUM_GEN_UDP==1: 软件生成UDOP数据包帧校验和 #define CHECKSUM_GEN_UDP 1 //CHECKSUM_GEN_TCP==1: 软件生成TCP数据包帧校验和 #define CHECKSUM_GEN_TCP 1 // CHECKSUM_CHECK_IP==1: 软件检查输入的IP数据包帧校验和 #define CHECKSUM_CHECK_IP 1 // CHECKSUM_CHECK_UDP==1: 软件检查输入的UDP数据包帧校验和 #define CHECKSUM_CHECK_UDP 1 //CHECKSUM_CHECK_TCP==1: 软件检查输入的TCP数据包帧校验和 #define CHECKSUM_CHECK_TCP 1 //CHECKSUM_CHECK_ICMP==1:软件检查输入的ICMP数据包帧校验和 #define CHECKSUM_GEN_ICMP 1#endif |
|
|
|
别告诉我你是分时使用STM32的MAC
|
|
|
|
不不,一个用了内部的mac,另一个是28j60(mac+phy)
|
|
|
|
单独用哪个都正常?
|
|
|
|
那少年你有的玩了
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2569 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2365 浏览 5 评论
3210 浏览 3 评论
2837 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2789 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
669浏览 1评论
906浏览 0评论
1027浏览 0评论
672浏览 0评论
500浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 17:39 , Processed in 1.323959 second(s), Total 79, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号