STM32H735xx HAL User Manual
Defines | Functions
stm32h7xx_hal_eth.c File Reference

ETH HAL module driver. This file provides firmware functions to manage the following functionalities of the Ethernet (ETH) peripheral: + Initialization and deinitialization functions + IO operation functions + Peripheral Control functions + Peripheral State and Errors functions. More...

#include "stm32h7xx_hal.h"

Go to the source code of this file.

Defines

#define ETH_MACCR_MASK   ((uint32_t)0xFFFB7F7CU)
#define ETH_MACECR_MASK   ((uint32_t)0x3F077FFFU)
#define ETH_MACPFR_MASK   ((uint32_t)0x800007FFU)
#define ETH_MACWTR_MASK   ((uint32_t)0x0000010FU)
#define ETH_MACTFCR_MASK   ((uint32_t)0xFFFF00F2U)
#define ETH_MACRFCR_MASK   ((uint32_t)0x00000003U)
#define ETH_MTLTQOMR_MASK   ((uint32_t)0x00000072U)
#define ETH_MTLRQOMR_MASK   ((uint32_t)0x0000007BU)
#define ETH_DMAMR_MASK   ((uint32_t)0x00007802U)
#define ETH_DMASBMR_MASK   ((uint32_t)0x0000D001U)
#define ETH_DMACCR_MASK   ((uint32_t)0x00013FFFU)
#define ETH_DMACTCR_MASK   ((uint32_t)0x003F1010U)
#define ETH_DMACRCR_MASK   ((uint32_t)0x803F0000U)
#define ETH_MACPCSR_MASK
#define ETH_SWRESET_TIMEOUT   ((uint32_t)500U)
#define ETH_MDIO_BUS_TIMEOUT   ((uint32_t)1000U)
#define ETH_DMARXNDESCWBF_ERRORS_MASK
#define ETH_MAC_US_TICK   ((uint32_t)1000000U)
#define INCR_TX_DESC_INDEX(inx, offset)
#define INCR_RX_DESC_INDEX(inx, offset)

Functions

static void ETH_MAC_MDIO_ClkConfig (ETH_HandleTypeDef *heth)
 Configures the Clock range of SMI interface.
static void ETH_SetMACConfig (ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf)
static void ETH_SetDMAConfig (ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf)
static void ETH_MACDMAConfig (ETH_HandleTypeDef *heth)
 Configures Ethernet MAC and DMA with default parameters.
static void ETH_DMATxDescListInit (ETH_HandleTypeDef *heth)
 Initializes the DMA Tx descriptors.
static void ETH_DMARxDescListInit (ETH_HandleTypeDef *heth)
 Initializes the DMA Rx descriptors in chain mode.
static uint32_t ETH_Prepare_Tx_Descriptors (ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig, uint32_t ItMode)
 Prepare Tx DMA descriptor before transmission.
static void ETH_InitCallbacksToDefault (ETH_HandleTypeDef *heth)
HAL_StatusTypeDef HAL_ETH_Init (ETH_HandleTypeDef *heth)
 Initialize the Ethernet peripheral registers.
HAL_StatusTypeDef HAL_ETH_DeInit (ETH_HandleTypeDef *heth)
 DeInitializes the ETH peripheral.
__weak void HAL_ETH_MspInit (ETH_HandleTypeDef *heth)
 Initializes the ETH MSP.
__weak void HAL_ETH_MspDeInit (ETH_HandleTypeDef *heth)
 DeInitializes ETH MSP.
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.
HAL_StatusTypeDef HAL_ETH_UnRegisterCallback (ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID)
 Unregister an ETH Callback ETH callabck is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_ETH_DescAssignMemory (ETH_HandleTypeDef *heth, uint32_t Index, uint8_t *pBuffer1, uint8_t *pBuffer2)
 Assign memory buffers to a DMA Rx descriptor.
HAL_StatusTypeDef HAL_ETH_Start (ETH_HandleTypeDef *heth)
 Enables Ethernet MAC and DMA reception and transmission.
HAL_StatusTypeDef HAL_ETH_Start_IT (ETH_HandleTypeDef *heth)
 Enables Ethernet MAC and DMA reception/transmission in Interrupt mode.
HAL_StatusTypeDef HAL_ETH_Stop (ETH_HandleTypeDef *heth)
 Stop Ethernet MAC and DMA reception/transmission.
HAL_StatusTypeDef HAL_ETH_Stop_IT (ETH_HandleTypeDef *heth)
 Stop Ethernet MAC and DMA reception/transmission in Interrupt mode.
HAL_StatusTypeDef HAL_ETH_Transmit (ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig, uint32_t Timeout)
 Sends an Ethernet Packet in polling mode.
HAL_StatusTypeDef HAL_ETH_Transmit_IT (ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig)
 Sends an Ethernet Packet in interrupt mode.
uint8_t HAL_ETH_IsRxDataAvailable (ETH_HandleTypeDef *heth)
 Checks for received Packets.
HAL_StatusTypeDef HAL_ETH_GetRxDataBuffer (ETH_HandleTypeDef *heth, ETH_BufferTypeDef *RxBuffer)
 This function gets the buffer address of last received Packet.
HAL_StatusTypeDef HAL_ETH_GetRxDataLength (ETH_HandleTypeDef *heth, uint32_t *Length)
 This function gets the length of last received Packet.
HAL_StatusTypeDef HAL_ETH_GetRxDataInfo (ETH_HandleTypeDef *heth, ETH_RxPacketInfo *RxPacketInfo)
 Get the Rx data info (Packet type, VLAN tag, Filters status, ...)
HAL_StatusTypeDef HAL_ETH_BuildRxDescriptors (ETH_HandleTypeDef *heth)
 This function gives back Rx Desc of the last received Packet to the DMA, so ETH DMA will be able to use these descriptors to receive next Packets.
void HAL_ETH_IRQHandler (ETH_HandleTypeDef *heth)
 This function handles ETH interrupt request.
__weak void HAL_ETH_TxCpltCallback (ETH_HandleTypeDef *heth)
 Tx Transfer completed callbacks.
__weak void HAL_ETH_RxCpltCallback (ETH_HandleTypeDef *heth)
 Rx Transfer completed callbacks.
__weak void HAL_ETH_DMAErrorCallback (ETH_HandleTypeDef *heth)
 Ethernet DMA transfer error callbacks.
__weak void HAL_ETH_MACErrorCallback (ETH_HandleTypeDef *heth)
 Ethernet MAC transfer error callbacks.
__weak void HAL_ETH_PMTCallback (ETH_HandleTypeDef *heth)
 Ethernet Power Management module IT callback.
__weak void HAL_ETH_EEECallback (ETH_HandleTypeDef *heth)
 Energy Efficient Etherent IT callback.
__weak void HAL_ETH_WakeUpCallback (ETH_HandleTypeDef *heth)
 ETH WAKEUP interrupt callback.
HAL_StatusTypeDef HAL_ETH_ReadPHYRegister (ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, uint32_t *pRegValue)
 Read a PHY register.
HAL_StatusTypeDef HAL_ETH_WritePHYRegister (ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, uint32_t RegValue)
 Writes to a PHY register.
HAL_StatusTypeDef HAL_ETH_GetMACConfig (ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf)
 Get the configuration of the MAC and MTL subsystems.
HAL_StatusTypeDef HAL_ETH_GetDMAConfig (ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf)
 Get the configuration of the DMA.
HAL_StatusTypeDef HAL_ETH_SetMACConfig (ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf)
 Set the MAC configuration.
HAL_StatusTypeDef HAL_ETH_SetDMAConfig (ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf)
 Set the ETH DMA configuration.
void HAL_ETH_SetMDIOClockRange (ETH_HandleTypeDef *heth)
 Configures the Clock range of ETH MDIO interface.
HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig (ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig)
 Set the ETH MAC (L2) Filters configuration.
HAL_StatusTypeDef HAL_ETH_GetMACFilterConfig (ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig)
 Get the ETH MAC (L2) Filters configuration.
HAL_StatusTypeDef HAL_ETH_SetSourceMACAddrMatch (ETH_HandleTypeDef *heth, uint32_t AddrNbr, uint8_t *pMACAddr)
 Set the source MAC Address to be matched.
HAL_StatusTypeDef HAL_ETH_SetHashTable (ETH_HandleTypeDef *heth, uint32_t *pHashTable)
 Set the ETH Hash Table Value.
void HAL_ETH_SetRxVLANIdentifier (ETH_HandleTypeDef *heth, uint32_t ComparisonBits, uint32_t VLANIdentifier)
 Set the VLAN Identifier for Rx packets.
void HAL_ETH_EnterPowerDownMode (ETH_HandleTypeDef *heth, ETH_PowerDownConfigTypeDef *pPowerDownConfig)
 Enters the Power down mode.
void HAL_ETH_ExitPowerDownMode (ETH_HandleTypeDef *heth)
 Exits from the Power down mode.
HAL_StatusTypeDef HAL_ETH_SetWakeUpFilter (ETH_HandleTypeDef *heth, uint32_t *pFilter, uint32_t Count)
 Set the WakeUp filter.
HAL_ETH_StateTypeDef HAL_ETH_GetState (ETH_HandleTypeDef *heth)
 Returns the ETH state.
uint32_t HAL_ETH_GetError (ETH_HandleTypeDef *heth)
 Returns the ETH error code.
uint32_t HAL_ETH_GetDMAError (ETH_HandleTypeDef *heth)
 Returns the ETH DMA error code.
uint32_t HAL_ETH_GetMACError (ETH_HandleTypeDef *heth)
 Returns the ETH MAC error code.
uint32_t HAL_ETH_GetMACWakeUpSource (ETH_HandleTypeDef *heth)
 Returns the ETH MAC WakeUp event source.

Detailed Description

ETH HAL module driver. This file provides firmware functions to manage the following functionalities of the Ethernet (ETH) peripheral: + Initialization and deinitialization functions + IO operation functions + Peripheral Control functions + Peripheral State and Errors functions.

Author:
MCD Application Team
Attention:

Copyright (c) 2017 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 availability by calling HAL_ETH_IsRxDataAvailable()
          (##) 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 (HAL_ETH_IsRxDataAvailable() returns 1 or Rx interrupt
          occurred), user can call the following APIs to get received data:
          (##) HAL_ETH_GetRxDataBuffer(): Get buffer address of received frame
          (##) HAL_ETH_GetRxDataLength(): Get received frame length
          (##) HAL_ETH_GetRxDataInfo(): Get received frame additional info,
               please refer to ETH_RxPacketInfo typedef structure

      (#) 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

      -@- The PTP protocol offload APIs are 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 @ref HAL_ETH_RegisterCallback() to register an interrupt callback.

  Function @ref HAL_ETH_RegisterCallback() allows to register following callbacks:
    (+) TxCpltCallback   : Tx Complete Callback.
    (+) RxCpltCallback   : Rx Complete Callback.
    (+) DMAErrorCallback : DMA Error Callback.
    (+) MACErrorCallback : MAC 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.

  Use function @ref HAL_ETH_UnRegisterCallback() to reset a callback to the default
  weak function.
  @ref 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.
    (+) DMAErrorCallback : DMA Error Callback.
    (+) MACErrorCallback : MAC Error Callback.
    (+) PMTCallback      : Power Management Callback
    (+) EEECallback      : EEE Callback.
    (+) WakeUpCallback   : Wake UP Callback
    (+) MspInitCallback  : MspInit Callback.
    (+) MspDeInitCallback: MspDeInit Callback.

  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 @ref HAL_ETH_TxCpltCallback(), @ref HAL_ETH_RxCpltCallback().
  Exception done for MspInit and MspDeInit functions that are
  reset to the legacy weak function in the HAL_ETH_Init/ @ref HAL_ETH_DeInit only when
  these callbacks are null (not registered beforehand).
  if not, MspInit or MspDeInit are not null, the HAL_ETH_Init/ @ref 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 @ref HAL_ETH_RegisterCallback() before calling @ref 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 stm32h7xx_hal_eth.c.