本帖最后由 morning_enr6U 于 2022-8-8 08:58 编辑
nx_stm32_eth_driver_429.c
(138.62 KB, 下载次数: 9)
[C] 纯文本查看 复制代码 static UINT _nx_driver_hardware_initialize(NX_IP_DRIVER *driver_req_ptr)
{
/* Default to successful return. */
driver_req_ptr -> nx_ip_driver_status = NX_SUCCESS;
/* Setup indices. */
nx_driver_information.nx_driver_information_receive_current_index = 0;
nx_driver_information.nx_driver_information_transmit_current_index = 0;
nx_driver_information.nx_driver_information_transmit_release_index = 0;
/* Clear the number of buffers in use counter. */
nx_driver_information.nx_driver_information_number_of_transmit_buffers_in_use = 0;
/* Make sure there are receive packets... otherwise, return an error. */
if (nx_driver_information.nx_driver_information_packet_pool_ptr == NULL)
{
/* There must be receive packets. If not, return an error! */
return(NX_DRIVER_ERROR);
}
#ifdef NX_DRIVER_ETH_HW_IP_INIT
nx_eth_init();
#endif /* NX_DRIVER_ETH_HW_IP_INIT */
ETH_DMAConfigTypeDef dmaDefaultConf;
dmaDefaultConf.DMAArbitration = ETH_DMAARBITRATION_RX1_TX1;
dmaDefaultConf.AddressAlignedBeats = ENABLE;
dmaDefaultConf.BurstMode = ETH_BURSTLENGTH_FIXED;
dmaDefaultConf.TxDMABurstLength = ETH_TXDMABURSTLENGTH_32BEAT;
dmaDefaultConf.RxDMABurstLength = ETH_RXDMABURSTLENGTH_32BEAT;
dmaDefaultConf.FlushRxPacket = DISABLE;
#ifndef STM32_ETH_HAL_LEGACY
dmaDefaultConf.PBLx8Mode = DISABLE;
dmaDefaultConf.RebuildINCRxBurst = DISABLE;
dmaDefaultConf.SecondPacketOperate = ENABLE;
dmaDefaultConf.TCPSegmentation = DISABLE;
dmaDefaultConf.MaximumSegmentSize = 536;
#endif
#ifdef STM32_ETH_HAL_LEGACY
dmaDefaultConf.DropTCPIPChecksumErrorFrame = ENABLE;
dmaDefaultConf.ReceiveStoreForward = DISABLE;
dmaDefaultConf.TransmitStoreForward = ENABLE;
dmaDefaultConf.TransmitThresholdControl = ENABLE;
dmaDefaultConf.ForwardErrorFrames = DISABLE;
dmaDefaultConf.ReceiveThresholdControl = DISABLE;
dmaDefaultConf.SecondFrameOperate = DISABLE;
dmaDefaultConf.EnhancedDescriptorFormat = DISABLE;
dmaDefaultConf.DescriptorSkipLength = DISABLE;
#endif
/* enable OSF bit to enhance throughput */
HAL_ETH_SetDMAConfig(e_handle, &dmaDefaultConf);
FilterConfig.PromiscuousMode = DISABLE;
FilterConfig.HashUnicast = DISABLE;
FilterConfig.HashMulticast = DISABLE;
FilterConfig.DestAddrInverseFiltering = DISABLE;
FilterConfig.PassAllMulticast = DISABLE;
FilterConfig.BroadcastFilter = ENABLE;
FilterConfig.SrcAddrInverseFiltering = DISABLE;
FilterConfig.SrcAddrFiltering = DISABLE;
FilterConfig.HachOrPerfectFilter = DISABLE;
FilterConfig.ReceiveAllMode = DISABLE;
FilterConfig.ControlPacketsFilter = 0x00;
/* Set Tx packet config common parameters */
memset(&TxPacketCfg, 0, sizeof(ETH_TxPacketConfig));
TxPacketCfg.Attributes = ETH_TX_PACKETS_FEATURES_CSUM ;
TxPacketCfg.CRCPadCtrl = ETH_CRC_PAD_DISABLE;
/* Clear the number of buffers in use counter. */
nx_driver_information.nx_driver_information_multicast_count = 0;
/* Return success! */
return(NX_SUCCESS);
}
这里只是一个API,以太网硬件初始化部分,其它的API也不大一样,硬汉大哥有没有移植过这个版本的?这里和教程差距较大,不知道是不是新版本的ST改良了驱动?
ST新驱动昨天漏发了,今天补上。
nx_stm32_eth_driver.c
(105.36 KB, 下载次数: 11)
|