本帖最后由 dwj0 于 2019-4-28 15:02 编辑
我用STM32F427驱动LAN8720,当使用自动协商功能时,一切正常。
但自动协商时,如果网线没有连接,那么等待的时间有点长。
因此我使用不自动协商,强制指定百兆全双工。网线插上开机能正常工作,但是当我重新插拔网线之后,网线灯就不亮了。
我查看了自动协商状态完成时,也是百兆全双工啊,而且以前DM9161这么用也没有问题,怎么8720不行呢?
另外,能过调试发现,使用不自动协商,当我网线拔掉,重新插上时,检查状态寄存器BSR中的Link Status位为0,就是没有检测到网线插入
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
- void Eth_Link_IT_task( void * pvParameters )
- {
- uint32_t pcPHYAddress;
- pcPHYAddress = ( uint32_t ) pvParameters;
-
- for(;;)
- {
- PhyRegistData = ETH_ReadPHYRegister((uint16_t) pcPHYAddress, PHY_BSR) & PHY_Linked_Status;
- if(PhyRegistData == 0 ){
- printf("Link Down!
");
- netif_set_link_down(&xnetif);
-
- PhyLinked = 0;
- #ifdef USE_DHCP
- if(SysCfg.DHCP_Enable){
- DHCP_state = DHCP_LINK_DOWN;
- }
- #endif
-
- }
- else{
- if(PhyLinked == 0){
- printf("Link up!
");
- netif_set_link_up(&xnetif);
- PhyLinked = 1;
- #ifdef USE_DHCP
- if(SysCfg.DHCP_Enable){
- DHCP_state = DHCP_START;
- }
- #endif
- }
- }
- vTaskDelay(1000);
- }
- }
复制代码一周热门 更多>