完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
对于LWIP 上电需要插网线,是因为初始化调用的函数ETH_Init(Ð_InitStructure,DP83848_PHY_ADDRESS);里有两个读寄存器的指令超时
do // { // timeout++; // } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO)); /* Return ERROR in case of timeout */ if(timeout == PHY_READ_TO) { return ETH_ERROR; } // do // {//printf("1"); // timeout++; // } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_AutoNego_Complete) && (timeout < (uint32_t)PHY_READ_TO)); /* Return ERROR in case of timeout */ if(timeout == PHY_READ_TO) { printf("1"); return ETH_ERROR; } 把这两个屏蔽掉就可以了 |
|
相关推荐
11个回答
|
|
@huoyancool 楼主,是不是说屏蔽掉之后就可以实现:上电没有插网线,上电一段时间后再插网线就可以直接联网吗,不需要设置什么吗
|
|
|
|
我不需要设置什么就可以联网,你可以试试,因为这两个语句的意思就是查看是否联网
|
|
|
|
直接屏蔽两句话就相当于不管网线插没插都初始化,对lwip底层不是特别了解,不知懂这么做会不会造成什么隐患,若是lz知道什么,麻烦解惑,谢谢.
|
|
|
|
我觉得不会有影响,因为这两句话的意思你也可以看出来,是读寄存器状态,并没有改变什么,而寄存器你读不读都不影响什么。
|
|
|
|
楼主,按你的方法初始化不过怎么回事
|
|
|
|
你调试看看是卡在什么地方了。我去掉后是可行的
|
|
|
|
我不是用的原子哥的接口程序,我屏蔽后插上网线也检测不到了。但是打开屏蔽又可以了
|
|
|
|
能将你初始化的代码给我借鉴一下么,我就这个问题没解决了。万分感谢
|
|
|
|
楼主,我测试过了,直接屏蔽不行。可否借鉴一下
|
|
|
|
u8 ETH_MACDMA_Config(void)
{ u8 rval; ETH_InitTypeDef ETH_InitStructure; //ê1ÄüòÔì«íøMACòÔ¼°MAC½óêÕoí·¢Ëíê±Öó RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC | RCC_AHB1Periph_ETH_MAC_Tx |RCC_AHB1Periph_ETH_MAC_Rx, ENABLE); ETH_DeInit(); //AHB×üÏßÖØÆôòÔì«íø ETH_SoftwareReset(); //èí¼tÖØÆôíøÂç while (ETH_GetSoftwareResetStatus() == SET);//μè′yèí¼tÖØÆôíøÂçíê3é ETH_StructInit(D_InitStructure); //3õê¼»ˉíøÂçÎaĬèÏÖμ ///íøÂçMAC2ÎêyéèÖà ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; //¿aÆôíøÂç×Ôêêó|1|Äü ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable; //1رշ′à¡ ETH_InitStructure.ETH_RetryTransmission = ETH_RetryTransmission_Enable; //1رÕÖØ′«1|Äü ETH_InitStructure.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; //1رÕ×Ô¶ˉè¥3yPDA/CRC1|Äü ETH_InitStructure.ETH_ReceiveAll = ETH_ReceiveAll_Disable; //1رսóêÕËùóDμÄÖ¡ ETH_InitStructure.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Enable;//ÔêDí½óêÕËùóD1ã2¥Ö¡ ETH_InitStructure.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; //1رջìoÏÄ£ê½μÄμØÖ·1yÂË ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect;//¶Ôóú×é2¥μØÖ·ê1óÃíêÃàμØÖ·1yÂË ETH_InitStructure.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; //¶Ôμ¥2¥μØÖ·ê1óÃíêÃàμØÖ·1yÂË #ifdef CHECKSUM_BY_HARDWARE ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Enable; //¿aÆôipv4oíTCP/UDP/ICMPμÄÖ¡D£ÑéoíD¶ÔØ #endif //μ±ÎòÃÇê1óÃÖ¡D£ÑéoíD¶ÔØ1|ÄüμÄê±oò£¬ò»¶¨òaê1Äü′æ′¢×a·¢Ä£ê½,′æ′¢×a·¢Ä£ê½ÖDòa±£Ö¤Õû¸öÖ¡′æ′¢ÔúFIFOÖD, //ÕaÑùMACÄü2åèë/궱e3öÖ¡D£ÑéÖμ,μ±ÕæD£ÑéÕyè·μÄê±oòDMA¾í¿éòÔ′|àíÖ¡,·ñÔò¾í¶aÆúμô¸ÃÖ¡ ETH_InitStructure.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Enable; //¿aÆô¶aÆúTCP/IP′íÎóÖ¡ ETH_InitStructure.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable; //¿aÆô½óêÕêy¾YμÄ′æ′¢×a·¢Ä£ê½ ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable; //¿aÆô·¢Ëíêy¾YμÄ′æ′¢×a·¢Ä£ê½ ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; //½ûÖ1×a·¢′íÎóÖ¡ ETH_InitStructure.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Enable; //2»×a·¢1yD¡μÄoÃÖ¡ ETH_InitStructure.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Enable; //′ò¿a′|àíμú¶tÖ¡1|Äü ETH_InitStructure.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; //¿aÆôDMA′«êäμÄμØÖ·¶ÔÆë1|Äü ETH_InitStructure.ETH_FixedBurst = ETH_FixedBurst_Enable; //¿aÆô1ì¶¨í»·¢1|Äü ETH_InitStructure.ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat; //DMA·¢ËíμÄ×î′óí»·¢3¤¶èÎa32¸ö½úÅÄ ETH_InitStructure.ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat; //DMA½óêÕμÄ×î′óí»·¢3¤¶èÎa32¸ö½úÅÄ ETH_InitStructure.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_2_1; rval=ETH_Init(D_InitStructure,DP83848_PHY_ADDRESS); //ÅäÖÃETH if(rval==ETH_SUCCESS)//ÅäÖÃ3é1| { ETH_DMAITConfig(ETH_DMA_IT_NIS|ETH_DMA_IT_R,ENABLE); //ê1ÄüòÔì«íø½óêÕÖD¶Ï } return rval; } |
|
|
|
谢谢,我已经解决。初始化未插网线时我并未让它成功,而是在接收函数或者单开一个任务判断初始化未成功时调用以太网重连函数进行连接。只要重新连接成功一次后后续就不需要再调用重连函数也能正常工作了。我是带FREERTOS系统的。
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2335 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2081 浏览 5 评论
2779 浏览 3 评论
2531 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2474 浏览 4 评论
541浏览 0评论
558浏览 0评论
326浏览 0评论
145浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-23 15:24 , Processed in 1.313267 second(s), Total 80, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号