STM32F4xx_HAL_Driver
1.8.3
|
ETH HAL module driver. This file provides firmware functions to manage the following functionalities of the Ethernet (ETH) peripheral: More...
Go to the source code of this file.
Functions | |
HAL_StatusTypeDef | HAL_ETH_Init (ETH_HandleTypeDef *heth) |
Initialize the Ethernet peripheral registers. More... | |
HAL_StatusTypeDef | HAL_ETH_DeInit (ETH_HandleTypeDef *heth) |
DeInitializes the ETH peripheral. More... | |
void | HAL_ETH_MspInit (ETH_HandleTypeDef *heth) |
Initializes the ETH MSP. More... | |
void | HAL_ETH_MspDeInit (ETH_HandleTypeDef *heth) |
DeInitializes ETH MSP. More... | |
HAL_StatusTypeDef | HAL_ETH_RegisterCallback (ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID, pETH_CallbackTypeDef pCallback) |
Register a User ETH Callback To be used instead of the weak predefined callback. More... | |
HAL_StatusTypeDef | HAL_ETH_UnRegisterCallback (ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID) |
Unregister an ETH Callback ETH callback is redirected to the weak predefined callback. More... | |
HAL_StatusTypeDef | HAL_ETH_Start (ETH_HandleTypeDef *heth) |
Enables Ethernet MAC and DMA reception and transmission. More... | |
HAL_StatusTypeDef | HAL_ETH_Start_IT (ETH_HandleTypeDef *heth) |
Enables Ethernet MAC and DMA reception/transmission in Interrupt mode. More... | |
HAL_StatusTypeDef | HAL_ETH_Stop (ETH_HandleTypeDef *heth) |
Stop Ethernet MAC and DMA reception/transmission. More... | |
HAL_StatusTypeDef | HAL_ETH_Stop_IT (ETH_HandleTypeDef *heth) |
Stop Ethernet MAC and DMA reception/transmission in Interrupt mode. More... | |
HAL_StatusTypeDef | HAL_ETH_Transmit (ETH_HandleTypeDef *heth, ETH_TxPacketConfigTypeDef *pTxConfig, uint32_t Timeout) |
Sends an Ethernet Packet in polling mode. More... | |
HAL_StatusTypeDef | HAL_ETH_Transmit_IT (ETH_HandleTypeDef *heth, ETH_TxPacketConfigTypeDef *pTxConfig) |
Sends an Ethernet Packet in interrupt mode. More... | |
HAL_StatusTypeDef | HAL_ETH_ReadData (ETH_HandleTypeDef *heth, void **pAppBuff) |
Read a received packet. More... | |
HAL_StatusTypeDef | HAL_ETH_RegisterRxAllocateCallback (ETH_HandleTypeDef *heth, pETH_rxAllocateCallbackTypeDef rxAllocateCallback) |
Register the Rx alloc callback. More... | |
HAL_StatusTypeDef | HAL_ETH_UnRegisterRxAllocateCallback (ETH_HandleTypeDef *heth) |
Unregister the Rx alloc callback. More... | |
void | HAL_ETH_RxAllocateCallback (uint8_t **buff) |
Rx Allocate callback. More... | |
void | HAL_ETH_RxLinkCallback (void **pStart, void **pEnd, uint8_t *buff, uint16_t Length) |
Rx Link callback. More... | |
HAL_StatusTypeDef | HAL_ETH_RegisterRxLinkCallback (ETH_HandleTypeDef *heth, pETH_rxLinkCallbackTypeDef rxLinkCallback) |
Set the Rx link data function. More... | |
HAL_StatusTypeDef | HAL_ETH_UnRegisterRxLinkCallback (ETH_HandleTypeDef *heth) |
Unregister the Rx link callback. More... | |
HAL_StatusTypeDef | HAL_ETH_GetRxDataErrorCode (const ETH_HandleTypeDef *heth, uint32_t *pErrorCode) |
Get the error state of the last received packet. More... | |
HAL_StatusTypeDef | HAL_ETH_RegisterTxFreeCallback (ETH_HandleTypeDef *heth, pETH_txFreeCallbackTypeDef txFreeCallback) |
Set the Tx free function. More... | |
HAL_StatusTypeDef | HAL_ETH_UnRegisterTxFreeCallback (ETH_HandleTypeDef *heth) |
Unregister the Tx free callback. More... | |
void | HAL_ETH_TxFreeCallback (uint32_t *buff) |
Tx Free callback. More... | |
HAL_StatusTypeDef | HAL_ETH_ReleaseTxPacket (ETH_HandleTypeDef *heth) |
Release transmitted Tx packets. More... | |
HAL_StatusTypeDef | HAL_ETH_PTP_SetConfig (ETH_HandleTypeDef *heth, ETH_PTP_ConfigTypeDef *ptpconfig) |
Set the Ethernet PTP configuration. More... | |
HAL_StatusTypeDef | HAL_ETH_PTP_GetConfig (ETH_HandleTypeDef *heth, ETH_PTP_ConfigTypeDef *ptpconfig) |
Get the Ethernet PTP configuration. More... | |
HAL_StatusTypeDef | HAL_ETH_PTP_SetTime (ETH_HandleTypeDef *heth, ETH_TimeTypeDef *time) |
Set Seconds and Nanoseconds for the Ethernet PTP registers. More... | |
HAL_StatusTypeDef | HAL_ETH_PTP_GetTime (ETH_HandleTypeDef *heth, ETH_TimeTypeDef *time) |
Get Seconds and Nanoseconds for the Ethernet PTP registers. More... | |
HAL_StatusTypeDef | HAL_ETH_PTP_AddTimeOffset (ETH_HandleTypeDef *heth, ETH_PtpUpdateTypeDef ptpoffsettype, ETH_TimeTypeDef *timeoffset) |
Update time for the Ethernet PTP registers. More... | |
HAL_StatusTypeDef | HAL_ETH_PTP_InsertTxTimestamp (ETH_HandleTypeDef *heth) |
Insert Timestamp in transmission. More... | |
HAL_StatusTypeDef | HAL_ETH_PTP_GetTxTimestamp (ETH_HandleTypeDef *heth, ETH_TimeStampTypeDef *timestamp) |
Get transmission timestamp. More... | |
HAL_StatusTypeDef | HAL_ETH_PTP_GetRxTimestamp (ETH_HandleTypeDef *heth, ETH_TimeStampTypeDef *timestamp) |
Get receive timestamp. More... | |
HAL_StatusTypeDef | HAL_ETH_RegisterTxPtpCallback (ETH_HandleTypeDef *heth, pETH_txPtpCallbackTypeDef txPtpCallback) |
Register the Tx Ptp callback. More... | |
HAL_StatusTypeDef | HAL_ETH_UnRegisterTxPtpCallback (ETH_HandleTypeDef *heth) |
Unregister the Tx Ptp callback. More... | |
void | HAL_ETH_TxPtpCallback (uint32_t *buff, ETH_TimeStampTypeDef *timestamp) |
Tx Ptp callback. More... | |
void | HAL_ETH_IRQHandler (ETH_HandleTypeDef *heth) |
This function handles ETH interrupt request. More... | |
void | HAL_ETH_TxCpltCallback (ETH_HandleTypeDef *heth) |
Tx Transfer completed callbacks. More... | |
void | HAL_ETH_RxCpltCallback (ETH_HandleTypeDef *heth) |
Rx Transfer completed callbacks. More... | |
void | HAL_ETH_ErrorCallback (ETH_HandleTypeDef *heth) |
Ethernet transfer error callbacks. More... | |
void | HAL_ETH_PMTCallback (ETH_HandleTypeDef *heth) |
Ethernet Power Management module IT callback. More... | |
void | HAL_ETH_WakeUpCallback (ETH_HandleTypeDef *heth) |
ETH WAKEUP interrupt callback. More... | |
HAL_StatusTypeDef | HAL_ETH_ReadPHYRegister (ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, uint32_t *pRegValue) |
Read a PHY register. More... | |
HAL_StatusTypeDef | HAL_ETH_WritePHYRegister (const ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, uint32_t RegValue) |
Writes to a PHY register. More... | |
HAL_StatusTypeDef | HAL_ETH_GetMACConfig (const ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf) |
Get the configuration of the MAC and MTL subsystems. More... | |
HAL_StatusTypeDef | HAL_ETH_GetDMAConfig (const ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf) |
Get the configuration of the DMA. More... | |
HAL_StatusTypeDef | HAL_ETH_SetMACConfig (ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf) |
Set the MAC configuration. More... | |
HAL_StatusTypeDef | HAL_ETH_SetDMAConfig (ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf) |
Set the ETH DMA configuration. More... | |
void | HAL_ETH_SetMDIOClockRange (ETH_HandleTypeDef *heth) |
Configures the Clock range of ETH MDIO interface. More... | |
HAL_StatusTypeDef | HAL_ETH_SetMACFilterConfig (ETH_HandleTypeDef *heth, const ETH_MACFilterConfigTypeDef *pFilterConfig) |
Set the ETH MAC (L2) Filters configuration. More... | |
HAL_StatusTypeDef | HAL_ETH_GetMACFilterConfig (const ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig) |
Get the ETH MAC (L2) Filters configuration. More... | |
HAL_StatusTypeDef | HAL_ETH_SetSourceMACAddrMatch (const ETH_HandleTypeDef *heth, uint32_t AddrNbr, const uint8_t *pMACAddr) |
Set the source MAC Address to be matched. More... | |
HAL_StatusTypeDef | HAL_ETH_SetHashTable (ETH_HandleTypeDef *heth, uint32_t *pHashTable) |
Set the ETH Hash Table Value. More... | |
void | HAL_ETH_SetRxVLANIdentifier (ETH_HandleTypeDef *heth, uint32_t ComparisonBits, uint32_t VLANIdentifier) |
Set the VLAN Identifier for Rx packets. More... | |
void | HAL_ETH_EnterPowerDownMode (ETH_HandleTypeDef *heth, const ETH_PowerDownConfigTypeDef *pPowerDownConfig) |
Enters the Power down mode. More... | |
void | HAL_ETH_ExitPowerDownMode (ETH_HandleTypeDef *heth) |
Exits from the Power down mode. More... | |
HAL_StatusTypeDef | HAL_ETH_SetWakeUpFilter (ETH_HandleTypeDef *heth, uint32_t *pFilter, uint32_t Count) |
Set the WakeUp filter. More... | |
HAL_ETH_StateTypeDef | HAL_ETH_GetState (const ETH_HandleTypeDef *heth) |
Returns the ETH state. More... | |
uint32_t | HAL_ETH_GetError (const ETH_HandleTypeDef *heth) |
Returns the ETH error code. More... | |
uint32_t | HAL_ETH_GetDMAError (const ETH_HandleTypeDef *heth) |
Returns the ETH DMA error code. More... | |
uint32_t | HAL_ETH_GetMACError (const ETH_HandleTypeDef *heth) |
Returns the ETH MAC error code. More... | |
uint32_t | HAL_ETH_GetMACWakeUpSource (const ETH_HandleTypeDef *heth) |
Returns the ETH MAC WakeUp event source. More... | |
ETH HAL module driver. This file provides firmware functions to manage the following functionalities of the Ethernet (ETH) peripheral:
Copyright (c) 2016 STMicroelectronics. All rights reserved.
This software is licensed under terms that can be found in the LICENSE file in the root directory of this software component. If no LICENSE file comes with this software, it is provided AS-IS.
============================================================================== ##### How to use this driver ##### ============================================================================== [..] The ETH HAL driver can be used as follows: (#)Declare a ETH_HandleTypeDef handle structure, for example: ETH_HandleTypeDef heth; (#)Fill parameters of Init structure in heth handle (#)Call HAL_ETH_Init() API to initialize the Ethernet peripheral (MAC, DMA, ...) (#)Initialize the ETH low level resources through the HAL_ETH_MspInit() API: (##) Enable the Ethernet interface clock using (+++) __HAL_RCC_ETH1MAC_CLK_ENABLE() (+++) __HAL_RCC_ETH1TX_CLK_ENABLE() (+++) __HAL_RCC_ETH1RX_CLK_ENABLE() (##) Initialize the related GPIO clocks (##) Configure Ethernet pinout (##) Configure Ethernet NVIC interrupt (in Interrupt mode) (#) Ethernet data reception is asynchronous, so call the following API to start the listening mode: (##) HAL_ETH_Start(): This API starts the MAC and DMA transmission and reception process, without enabling end of transfer interrupts, in this mode user has to poll for data reception by calling HAL_ETH_ReadData() (##) HAL_ETH_Start_IT(): This API starts the MAC and DMA transmission and reception process, end of transfer interrupts are enabled in this mode, HAL_ETH_RxCpltCallback() will be executed when an Ethernet packet is received (#) When data is received user can call the following API to get received data: (##) HAL_ETH_ReadData(): Read a received packet (#) For transmission path, two APIs are available: (##) HAL_ETH_Transmit(): Transmit an ETH frame in blocking mode (##) HAL_ETH_Transmit_IT(): Transmit an ETH frame in interrupt mode, HAL_ETH_TxCpltCallback() will be executed when end of transfer occur (#) Communication with an external PHY device: (##) HAL_ETH_ReadPHYRegister(): Read a register from an external PHY (##) HAL_ETH_WritePHYRegister(): Write data to an external RHY register (#) Configure the Ethernet MAC after ETH peripheral initialization (##) HAL_ETH_GetMACConfig(): Get MAC actual configuration into ETH_MACConfigTypeDef (##) HAL_ETH_SetMACConfig(): Set MAC configuration based on ETH_MACConfigTypeDef (#) Configure the Ethernet DMA after ETH peripheral initialization (##) HAL_ETH_GetDMAConfig(): Get DMA actual configuration into ETH_DMAConfigTypeDef (##) HAL_ETH_SetDMAConfig(): Set DMA configuration based on ETH_DMAConfigTypeDef (#) Configure the Ethernet PTP after ETH peripheral initialization (##) Define HAL_ETH_USE_PTP to use PTP APIs. (##) HAL_ETH_PTP_GetConfig(): Get PTP actual configuration into ETH_PTP_ConfigTypeDef (##) HAL_ETH_PTP_SetConfig(): Set PTP configuration based on ETH_PTP_ConfigTypeDef (##) HAL_ETH_PTP_GetTime(): Get Seconds and Nanoseconds for the Ethernet PTP registers (##) HAL_ETH_PTP_SetTime(): Set Seconds and Nanoseconds for the Ethernet PTP registers (##) HAL_ETH_PTP_AddTimeOffset(): Add Seconds and Nanoseconds offset for the Ethernet PTP registers (##) HAL_ETH_PTP_InsertTxTimestamp(): Insert Timestamp in transmission (##) HAL_ETH_PTP_GetTxTimestamp(): Get transmission timestamp (##) HAL_ETH_PTP_GetRxTimestamp(): Get reception timestamp -@- The ARP offload feature is not supported in this driver. -@- The PTP offload feature is not supported in this driver. *** Callback registration *** ============================================= The compilation define USE_HAL_ETH_REGISTER_CALLBACKS when set to 1 allows the user to configure dynamically the driver callbacks. Use Function HAL_ETH_RegisterCallback() to register an interrupt callback. Function HAL_ETH_RegisterCallback() allows to register following callbacks: (+) TxCpltCallback : Tx Complete Callback. (+) RxCpltCallback : Rx Complete Callback. (+) ErrorCallback : Error Callback. (+) PMTCallback : Power Management Callback (+) EEECallback : EEE Callback. (+) WakeUpCallback : Wake UP Callback (+) MspInitCallback : MspInit Callback. (+) MspDeInitCallback: MspDeInit Callback. This function takes as parameters the HAL peripheral handle, the Callback ID and a pointer to the user callback function. For specific callbacks RxAllocateCallback use dedicated register callbacks: respectively HAL_ETH_RegisterRxAllocateCallback(). For specific callbacks RxLinkCallback use dedicated register callbacks: respectively HAL_ETH_RegisterRxLinkCallback(). For specific callbacks TxFreeCallback use dedicated register callbacks: respectively HAL_ETH_RegisterTxFreeCallback(). For specific callbacks TxPtpCallback use dedicated register callbacks: respectively HAL_ETH_RegisterTxPtpCallback(). Use function HAL_ETH_UnRegisterCallback() to reset a callback to the default weak function. HAL_ETH_UnRegisterCallback takes as parameters the HAL peripheral handle, and the Callback ID. This function allows to reset following callbacks: (+) TxCpltCallback : Tx Complete Callback. (+) RxCpltCallback : Rx Complete Callback. (+) ErrorCallback : Error Callback. (+) PMTCallback : Power Management Callback (+) EEECallback : EEE Callback. (+) WakeUpCallback : Wake UP Callback (+) MspInitCallback : MspInit Callback. (+) MspDeInitCallback: MspDeInit Callback. For specific callbacks RxAllocateCallback use dedicated unregister callbacks: respectively HAL_ETH_UnRegisterRxAllocateCallback(). For specific callbacks RxLinkCallback use dedicated unregister callbacks: respectively HAL_ETH_UnRegisterRxLinkCallback(). For specific callbacks TxFreeCallback use dedicated unregister callbacks: respectively HAL_ETH_UnRegisterTxFreeCallback(). For specific callbacks TxPtpCallback use dedicated unregister callbacks: respectively HAL_ETH_UnRegisterTxPtpCallback(). By default, after the HAL_ETH_Init and when the state is HAL_ETH_STATE_RESET all callbacks are set to the corresponding weak functions: examples HAL_ETH_TxCpltCallback(), HAL_ETH_RxCpltCallback(). Exception done for MspInit and MspDeInit functions that are reset to the legacy weak function in the HAL_ETH_Init/ HAL_ETH_DeInit only when these callbacks are null (not registered beforehand). if not, MspInit or MspDeInit are not null, the HAL_ETH_Init/ HAL_ETH_DeInit keep and use the user MspInit/MspDeInit callbacks (registered beforehand) Callbacks can be registered/unregistered in HAL_ETH_STATE_READY state only. Exception done MspInit/MspDeInit that can be registered/unregistered in HAL_ETH_STATE_READY or HAL_ETH_STATE_RESET state, thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. In that case first register the MspInit/MspDeInit user callbacks using HAL_ETH_RegisterCallback() before calling HAL_ETH_DeInit or HAL_ETH_Init function. When The compilation define USE_HAL_ETH_REGISTER_CALLBACKS is set to 0 or not defined, the callback registration feature is not available and all callbacks are set to the corresponding weak functions.
Definition in file stm32f4xx_hal_eth.c.