初级会员

- 积分
- 165
- 金钱
- 165
- 注册时间
- 2016-4-22
- 在线时间
- 37 小时
|

楼主 |
发表于 2017-8-21 13:44:40
|
显示全部楼层
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;
}
|
|