ETH_DMADescTypeDef* ETH_HandleTypeDef::RxDesc
Rx descriptor to Get
ETH_DMADescTypeDef* ETH_HandleTypeDef::TxDesc
Tx descriptor to Set
ETH_DMARxFrameInfos ETH_HandleTypeDef::RxFrameInfos
last Rx frame infos
__IO HAL_ETH_StateTypeDef ETH_HandleTypeDef::State
ETH communication state
HAL_LockTypeDef ETH_HandleTypeDef::Lock
ETH Lock
17.2 ETH Firmware driver API description
17.2.1 How to use this driver
1. Declare a ETH_HandleTypeDef handle structure, for example: ETH_HandleTypeDef
heth;
2. Fill parameters of Init structure in heth handle
3. Call HAL_ETH_Init() API to initialize the Ethernet peripheral (MAC, DMA, ...)
4. Initialize the ETH low level resources through the HAL_ETH_MspInit() API:
a. Enable the Ethernet interface clock using
__HAL_RCC_ETHMAC_CLK_ENABLE();
__HAL_RCC_ETHMACTX_CLK_ENABLE();
__HAL_RCC_ETHMACRX_CLK_ENABLE();
b. Initialize the related GPIO clocks
c. Configure Ethernet pin-out
d. Configure Ethernet NVIC interrupt (IT mode)
5. Initialize Ethernet DMA Descriptors in chain mode and point to allocated buffers:
a. HAL_ETH_DMATxDescListInit(); for Transmission process
b. HAL_ETH_DMARxDescListInit(); for Reception process
6. Enable MAC and DMA transmission and reception:
a. HAL_ETH_Start();
7. Prepare ETH DMA TX Descriptors and give the hand to ETH DMA to transfer the
frame to MAC TX FIFO:
a. HAL_ETH_TransmitFrame();
8. Poll for a received frame in ETH RX DMA Descriptors and get received frame
parameters
a. HAL_ETH_GetReceivedFrame(); (should be called into an infinite loop)
9. Get a received frame when an ETH RX interrupt occurs:
a. HAL_ETH_GetReceivedFrame_IT(); (called in IT mode only)
10. Communicate with external PHY device:
a. Read a specific register from the PHY HAL_ETH_ReadPHYRegister();
b. Write data to a specific RHY register: HAL_ETH_WritePHYRegister();
11. Configure the Ethernet MAC after ETH peripheral initialization
HAL_ETH_ConfigMAC(); all MAC parameters should be filled.
12. Configure the Ethernet DMA after ETH peripheral initialization
HAL_ETH_ConfigDMA(); all DMA parameters should be filled.
17.2.2 Initialization and de-initialization functions
This section provides functions allowing to:
Initialize and configure the Ethernet peripheral
De-initialize the Ethernet peripheral
This section contains the following APIs: