完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
lwip 不能够开启自协商模式 ??
static void low_level_init(struct netif *netif) { uint32_t regvalue = 0; HAL_StatusTypeDef hal_eth_init_status; heth.Instance = ETH; heth.Init.AutoNegotiation = ETH_AUTONEGOTIATION_DISABLE; // 这个地方不知道为什么,我开启自商协议后,貌似就不行了,如果设置为禁止选项的话 就可以,哪位大神看看是怎么回事啊 ?? heth.Init.Speed = ETH_SPEED_100M; //速度100M,如果开启了自协商模式,此配置就无效 heth.Init.DuplexMode = ETH_MODE_FULLDUPLEX; //全双工模式,如果开启了自协商模式,此配置就无效 heth.Init.PhyAddress = LAN8742A_PHY_ADDRESS; heth.Init.MACAddr = &lwipdev.mac[0]; // 这个mac地址已经在其他地方设置好的 heth.Init.RxMode = ETH_RXINTERRUPT_MODE; //中断接收模式 heth.Init.ChecksumMode = ETH_CHECKSUM_BY_HARDWARE; //硬件帧校验 heth.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII; //RMII接口 /* USER CODE BEGIN MACADDRESS */ /* USER CODE END MACADDRESS */ hal_eth_init_status = HAL_ETH_Init(&heth); if (hal_eth_init_status == HAL_OK) { /* Set netif link flag */ netif->flags |= NETIF_FLAG_LINK_UP; } /* Initialize Tx Descriptors list: Chain Mode */ HAL_ETH_DMATxDescListInit(&heth, DMATxDscrTab, Tx_Buff, ETH_TXBUFNB); /* Initialize Rx Descriptors list: Chain Mode */ HAL_ETH_DMARxDescListInit(&heth, DMARxDscrTab, Rx_Buff, ETH_RXBUFNB); #if LWIP_ARP || LWIP_ETHERNET /* set MAC hardware address length */ netif->hwaddr_len = ETH_HWADDR_LEN; //初始化MAC地址,设置什么地址由用户自己设置,但是不能与网络中其他设备MAC地址重复 netif->hwaddr[0] = heth.Init.MACAddr[0]; netif->hwaddr[1] = heth.Init.MACAddr[1]; netif->hwaddr[2] = heth.Init.MACAddr[2]; netif->hwaddr[3] = heth.Init.MACAddr[3]; netif->hwaddr[4] = heth.Init.MACAddr[4]; netif->hwaddr[5] = heth.Init.MACAddr[5]; /* maximum transfer unit */ netif->mtu = 1500;//最大允许传输单元,允许该网卡广播和ARP功能 /* Accept broadcast address and ARP traffic */ netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP; /* create a binary semaphore used for informing ethernetif of frame reception */ osSemaphoreDef(SEM); // 定义os_semaphore_def_##name 结构体 s_xSemaphore = osSemaphoreCreate(osSemaphore(SEM) , 1 ); ////创建信号量 /* create the task that handles the ETH_MAC */ osThreadDef(EthIf, ethernetif_input, osPriorityRealtime, 0, INTERFACE_THREAD_STACK_SIZE); osThreadCreate (osThread(EthIf), netif); /* Enable MAC and DMA transmission and reception */ HAL_ETH_Start(&heth); /* Read Register Configuration */ HAL_ETH_ReadPHYRegister(&heth, PHY_ISFR, ®value); regvalue |= (PHY_ISFR_INT4); /* Enable Interrupt on change of link status */ HAL_ETH_WritePHYRegister(&heth, PHY_ISFR , regvalue ); /* Read Register Configuration */ HAL_ETH_ReadPHYRegister(&heth, PHY_ISFR , ®value); #endif /* LWIP_ARP || LWIP_ETHERNET */ } |
|
相关推荐
2个回答
|
|
|
|
老大,帮忙想想办法啊,看看是哪里没有设置对啊 ??
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2574 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2368 浏览 5 评论
3225 浏览 3 评论
2842 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2795 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
677浏览 1评论
914浏览 0评论
1035浏览 0评论
677浏览 0评论
509浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 20:29 , Processed in 1.157467 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号