STM32F439xx HAL User Manual
Defines | Functions
stm32f4xx_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 de-initialization functions + IO operation functions + Peripheral Control functions + Peripheral State and Errors functions. More...

#include "stm32f4xx_hal.h"

Go to the source code of this file.

Defines

#define ETH_TIMEOUT_SWRESET   500U
#define ETH_TIMEOUT_LINKED_STATE   5000U
#define ETH_TIMEOUT_AUTONEGO_COMPLETED   5000U

Functions

static void ETH_MACDMAConfig (ETH_HandleTypeDef *heth, uint32_t err)
 Configures Ethernet MAC and DMA with default parameters.
static void ETH_MACAddressConfig (ETH_HandleTypeDef *heth, uint32_t MacAddr, uint8_t *Addr)
 Configures the selected MAC address.
static void ETH_MACReceptionEnable (ETH_HandleTypeDef *heth)
 Enables the MAC reception.
static void ETH_MACReceptionDisable (ETH_HandleTypeDef *heth)
 Disables the MAC reception.
static void ETH_MACTransmissionEnable (ETH_HandleTypeDef *heth)
 Enables the MAC transmission.
static void ETH_MACTransmissionDisable (ETH_HandleTypeDef *heth)
 Disables the MAC transmission.
static void ETH_DMATransmissionEnable (ETH_HandleTypeDef *heth)
 Enables the DMA transmission.
static void ETH_DMATransmissionDisable (ETH_HandleTypeDef *heth)
 Disables the DMA transmission.
static void ETH_DMAReceptionEnable (ETH_HandleTypeDef *heth)
 Enables the DMA reception.
static void ETH_DMAReceptionDisable (ETH_HandleTypeDef *heth)
 Disables the DMA reception.
static void ETH_FlushTransmitFIFO (ETH_HandleTypeDef *heth)
 Clears the ETHERNET transmit FIFO.
static void ETH_Delay (uint32_t mdelay)
 This function provides delay (in milliseconds) based on CPU cycles method.
HAL_StatusTypeDef HAL_ETH_Init (ETH_HandleTypeDef *heth)
 Initializes the Ethernet MAC and DMA according to default parameters.
HAL_StatusTypeDef HAL_ETH_DeInit (ETH_HandleTypeDef *heth)
 De-Initializes the ETH peripheral.
HAL_StatusTypeDef HAL_ETH_DMATxDescListInit (ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMATxDescTab, uint8_t *TxBuff, uint32_t TxBuffCount)
 Initializes the DMA Tx descriptors in chain mode.
HAL_StatusTypeDef HAL_ETH_DMARxDescListInit (ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount)
 Initializes the DMA Rx descriptors in chain mode.
__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_TransmitFrame (ETH_HandleTypeDef *heth, uint32_t FrameLength)
 Sends an Ethernet frame.
HAL_StatusTypeDef HAL_ETH_GetReceivedFrame (ETH_HandleTypeDef *heth)
 Checks for received frames.
HAL_StatusTypeDef HAL_ETH_GetReceivedFrame_IT (ETH_HandleTypeDef *heth)
 Gets the Received frame in interrupt mode.
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_ErrorCallback (ETH_HandleTypeDef *heth)
 Ethernet transfer error callbacks.
HAL_StatusTypeDef HAL_ETH_ReadPHYRegister (ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t *RegValue)
 Reads a PHY register.
HAL_StatusTypeDef HAL_ETH_WritePHYRegister (ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t RegValue)
 Writes to a PHY register.
HAL_StatusTypeDef HAL_ETH_Start (ETH_HandleTypeDef *heth)
 Enables Ethernet MAC and DMA reception/transmission.
HAL_StatusTypeDef HAL_ETH_Stop (ETH_HandleTypeDef *heth)
 Stop Ethernet MAC and DMA reception/transmission.
HAL_StatusTypeDef HAL_ETH_ConfigMAC (ETH_HandleTypeDef *heth, ETH_MACInitTypeDef *macconf)
 Set ETH MAC Configuration.
HAL_StatusTypeDef HAL_ETH_ConfigDMA (ETH_HandleTypeDef *heth, ETH_DMAInitTypeDef *dmaconf)
 Sets ETH DMA Configuration.
HAL_ETH_StateTypeDef HAL_ETH_GetState (ETH_HandleTypeDef *heth)
 Return the ETH HAL state.

Detailed Description

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

Author:
MCD Application Team
  ==============================================================================
                    ##### How to use this driver #####
  ==============================================================================
    [..]
      (#)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_ETHMAC_CLK_ENABLE();
               (+++) __HAL_RCC_ETHMACTX_CLK_ENABLE();
               (+++) __HAL_RCC_ETHMACRX_CLK_ENABLE();
           
          (##) Initialize the related GPIO clocks
          (##) Configure Ethernet pin-out
          (##) Configure Ethernet NVIC interrupt (IT mode)   
    
      (#)Initialize Ethernet DMA Descriptors in chain mode and point to allocated buffers:
          (##) HAL_ETH_DMATxDescListInit(); for Transmission process
          (##) HAL_ETH_DMARxDescListInit(); for Reception process

      (#)Enable MAC and DMA transmission and reception:
          (##) HAL_ETH_Start();

      (#)Prepare ETH DMA TX Descriptors and give the hand to ETH DMA to transfer 
         the frame to MAC TX FIFO:
         (##) HAL_ETH_TransmitFrame();

      (#)Poll for a received frame in ETH RX DMA Descriptors and get received 
         frame parameters
         (##) HAL_ETH_GetReceivedFrame(); (should be called into an infinite loop)

      (#) Get a received frame when an ETH RX interrupt occurs:
         (##) HAL_ETH_GetReceivedFrame_IT(); (called in IT mode only)

      (#) Communicate with external PHY device:
         (##) Read a specific register from the PHY  
              HAL_ETH_ReadPHYRegister();
         (##) Write data to a specific RHY register:
              HAL_ETH_WritePHYRegister();

      (#) Configure the Ethernet MAC after ETH peripheral initialization
          HAL_ETH_ConfigMAC(); all MAC parameters should be filled.
      
      (#) Configure the Ethernet DMA after ETH peripheral initialization
          HAL_ETH_ConfigDMA(); all DMA parameters should be filled.
      
      -@- The PTP protocol and the DMA descriptors ring mode are not supported 
          in this driver

  
Attention:

© COPYRIGHT(c) 2017 STMicroelectronics

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of STMicroelectronics nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Definition in file stm32f4xx_hal_eth.c.