lwip接收文件 stm32_TCP/IP协议学习(三) STM32中ETH驱动配置注意事项
ETH_DeInit();/*Software reset*/ETH_SoftwareReset();/*Wait for software reset*/while (ETH_GetSoftwareResetStatus() ==SET);/*ETHERNET Configuration---------------------------------------------*//*Call E
ETH_DeInit();/*Software reset*/ETH_SoftwareReset();/*Wait for software reset*/
while (ETH_GetSoftwareResetStatus() ==SET);/*ETHERNET Configuration---------------------------------------------*/
/*Call ETH_StructInit if you don't like to configure all ETH_InitStructure parameter*/ETH_StructInit(Ð_InitStructure);/*Fill ETH_InitStructure parametrs*/
/*------------------------ ETH_MACCR-----------------------------------*/
//参数是否自动配置,选择disable需要自动配置默认参数
ETH_InitStructure.ETH_AutoNegotiation =ETH_AutoNegotiation_Disable;
ETH_InitStructure.ETH_Watchdog= ETH_Watchdog_Disable; //关闭看门狗定时器,允许接收超长帧
ETH_InitStructure.ETH_Jabber = ETH_Jabber_Disable; //关闭jabber定时器,允许发送超长帧
ETH_InitStructure.ETH_InterFrameGap = ETH_InterFrameGap_40Bit; //发送帧间间隙
ETH_InitStructure.ETH_Speed = ETH_Speed_100M; //快速以太网速度
ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable; //不启用自循环模式
ETH_InitStructure.ETH_Mode = ETH_Mode_FullDuplex; //全双工模式
/*自动填充/CRC剥离处理不执行,转发所有帧*/ETH_InitStructure.ETH_AutomaticPadCRCStrip=ETH_AutomaticPadCRCStrip_Disable;#if CHECKSUM_BY_HARDWAREETH_InitStructure.ETH_ChecksumOffload= ETH_ChecksumOffload_Enable; //IPV4头文件硬件校验
#endif
/*------------------------ ETH_MACFFR----------------------------------*/ETH_InitStructure.ETH_ReceiveAll= ETH_ReceiveAll_Disable; //MAC过滤只接受通过源目的地址的数据
ETH_InitStructure.ETH_SourceAddrFilter = ETH_SourceAddrFilter_Normal_Enable; //MAC过滤源地址错误帧?
ETH_InitStructure.ETH_PassControlFrames = ETH_PassControlFrames_BlockAll; //MAC不转发任何控制帧
ETH_InitStructure.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Enable; //接收广播帧
ETH_InitStructure.ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; //目的地址过滤结果正常
ETH_InitStructure.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; //混杂模式,启用帧过滤
ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; //过滤器正常工作,不传送控制帧
ETH_InitStructure.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; //单播帧目的地址完美过滤
/*------------------------ DMA ETH_DMAOMR -----------------------------------*/
/*When we use the Checksum offload feature, we need to enable the Store and Forward mode:
the store and forward guarantee that a whole frame is stored in the FIFO, so the MAC can insert/verify the checksum,
if the checksum is OK the DMA can handle the frame otherwise the frame is dropped*/
/*丢弃校验错误帧不执行(因为未进行硬件校验)*/ETH_InitStructure.ETH_DropTCPIPChecksumErrorFrame=ETH_DropTCPIPChecksumErrorFrame_Disable;
ETH_InitStructure.ETH_ReceiveStoreForward= ETH_ReceiveStoreForward_Disable; //接收数据超过阈值转发
ETH_InitStructure.ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Enable; //描述符被占用和接收FIFO不可用时清空FIFO(解决堵塞)
ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Disable; //发送数据完整帧转发
ETH_InitStructure.ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes; //发送阈值为64Bytes
ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; //接收FIFO丢弃所有错误帧
/*接收FIFO上传长度不够的好帧*/ETH_InitStructure.ETH_ForwardUndersizedGoodFrames=ETH_ForwardUndersizedGoodFrames_Enable;
ETH_InitStructure.ETH_ReceiveThresholdControl= ETH_ReceiveThresholdControl_64Bytes; //接收阈值为64Bytes ETH_InitStructure.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Enable; //DMA直接发送第二个帧,不需要之前帧回复
/*------------------------ DMA ETH_DMABMR -----------------------------------*/ETH_InitStructure.ETH_AddressAlignedBeats= ETH_AddressAlignedBeats_Enable; //传输地址对齐
ETH_InitStructure.ETH_FixedBurst = ETH_FixedBurst_Enable; //固定的突发
ETH_InitStructure.ETH_RxDMABurstLength =ETH_RxDMABurstLength_32Beat;
ETH_InitStructure.ETH_TxDMABurstLength=ETH_TxDMABurstLength_32Beat;
ETH_InitStructure.ETH_DMAArbitration= ETH_DMAArbitration_RoundRobin_RxTx_2_1; //发送和接收比例 2:1
/*Configure Ethernet*/ETH_Init(Ð_InitStructure, DP83848_PHY_ADDRESS);/*Enable the Ethernet Rx-Tx Interrupt*/ETH_DMAITConfig(ETH_DMA_IT_NIS | ETH_DMA_IT_R | ETH_DMA_IT_T
, ENABLE);
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)