183#ifdef HAL_ETH_MODULE_ENABLED
197#define ETH_MACCR_MASK 0xFFFB7F7CU
198#define ETH_MACECR_MASK 0x3F077FFFU
199#define ETH_MACFFR_MASK 0x800007FFU
200#define ETH_MACWTR_MASK 0x0000010FU
201#define ETH_MACTFCR_MASK 0xFFFF00F2U
202#define ETH_MACRFCR_MASK 0x00000003U
203#define ETH_MTLTQOMR_MASK 0x00000072U
204#define ETH_MTLRQOMR_MASK 0x0000007BU
206#define ETH_DMAMR_MASK 0x00007802U
207#define ETH_DMASBMR_MASK 0x0000D001U
208#define ETH_DMACCR_MASK 0x00013FFFU
209#define ETH_DMACTCR_MASK 0x003F1010U
210#define ETH_DMACRCR_MASK 0x803F0000U
211#define ETH_MACPMTCSR_MASK (ETH_MACPMTCSR_PD | ETH_MACPMTCSR_WFE | \
212 ETH_MACPMTCSR_MPE | ETH_MACPMTCSR_GU)
215#define ETH_SWRESET_TIMEOUT 500U
216#define ETH_MDIO_BUS_TIMEOUT 1000U
218#define ETH_DMARXDESC_ERRORS_MASK ((uint32_t)(ETH_DMARXDESC_DBE | ETH_DMARXDESC_RE | \
219 ETH_DMARXDESC_OE | ETH_DMARXDESC_RWT |\
220 ETH_DMARXDESC_LC | ETH_DMARXDESC_CE |\
221 ETH_DMARXDESC_DE | ETH_DMARXDESC_IPV4HCE))
223#define ETH_MAC_US_TICK 1000000U
225#define ETH_MACTSCR_MASK 0x0087FF2FU
227#define ETH_PTPTSHR_VALUE 0xFFFFFFFFU
228#define ETH_PTPTSLR_VALUE 0xBB9ACA00U
231#define ETH_MACMIIAR_CR_MASK 0xFFFFFFE3U
234#define ETH_REG_WRITE_DELAY 0x00000001U
237#define ETH_MACCR_CLEAR_MASK 0xFD20810FU
240#define ETH_MACFCR_CLEAR_MASK 0x0000FF41U
243#define ETH_DMAOMR_CLEAR_MASK 0xF8DE3F23U
246#define ETH_MAC_ADDR_HBASE (uint32_t)(ETH_MAC_BASE + 0x40U)
247#define ETH_MAC_ADDR_LBASE (uint32_t)(ETH_MAC_BASE + 0x44U)
250#define ETH_DMARXDESC_FRAMELENGTHSHIFT 16U
260#define INCR_TX_DESC_INDEX(inx, offset) do {\
262 if ((inx) >= (uint32_t)ETH_TX_DESC_CNT){\
263 (inx) = ((inx) - (uint32_t)ETH_TX_DESC_CNT);}\
267#define INCR_RX_DESC_INDEX(inx, offset) do {\
269 if ((inx) >= (uint32_t)ETH_RX_DESC_CNT){\
270 (inx) = ((inx) - (uint32_t)ETH_RX_DESC_CNT);}\
290#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
348#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
350 ETH_InitCallbacksToDefault(heth);
352 if (heth->MspInitCallback == NULL)
358 heth->MspInitCallback(heth);
369 SYSCFG->PMC &= ~(SYSCFG_PMC_MII_RMII_SEL);
377 SET_BIT(heth->
Instance->DMABMR, ETH_DMABMR_SR);
383 while (READ_BIT(heth->
Instance->DMABMR, ETH_DMABMR_SR) > 0U)
411 SET_BIT(heth->
Instance->MACIMR, ETH_MACIMR_TSTIM | ETH_MACIMR_PMTIM);
414 SET_BIT(heth->
Instance->MMCRIMR, ETH_MMCRIMR_RGUFM | ETH_MMCRIMR_RFAEM | \
418 SET_BIT(heth->
Instance->MMCTIMR, ETH_MMCTIMR_TGFM | ETH_MMCTIMR_TGFMSCM | \
438#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
440 if (heth->MspDeInitCallback == NULL)
445 heth->MspDeInitCallback(heth);
490#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
508 pETH_CallbackTypeDef pCallback)
512 if (pCallback == NULL)
515 heth->
ErrorCode |= HAL_ETH_ERROR_INVALID_CALLBACK;
523 case HAL_ETH_TX_COMPLETE_CB_ID :
524 heth->TxCpltCallback = pCallback;
527 case HAL_ETH_RX_COMPLETE_CB_ID :
528 heth->RxCpltCallback = pCallback;
531 case HAL_ETH_ERROR_CB_ID :
532 heth->ErrorCallback = pCallback;
535 case HAL_ETH_PMT_CB_ID :
536 heth->PMTCallback = pCallback;
540 case HAL_ETH_WAKEUP_CB_ID :
541 heth->WakeUpCallback = pCallback;
544 case HAL_ETH_MSPINIT_CB_ID :
545 heth->MspInitCallback = pCallback;
548 case HAL_ETH_MSPDEINIT_CB_ID :
549 heth->MspDeInitCallback = pCallback;
554 heth->
ErrorCode |= HAL_ETH_ERROR_INVALID_CALLBACK;
564 case HAL_ETH_MSPINIT_CB_ID :
565 heth->MspInitCallback = pCallback;
568 case HAL_ETH_MSPDEINIT_CB_ID :
569 heth->MspDeInitCallback = pCallback;
574 heth->
ErrorCode |= HAL_ETH_ERROR_INVALID_CALLBACK;
583 heth->
ErrorCode |= HAL_ETH_ERROR_INVALID_CALLBACK;
614 case HAL_ETH_TX_COMPLETE_CB_ID :
618 case HAL_ETH_RX_COMPLETE_CB_ID :
622 case HAL_ETH_ERROR_CB_ID :
626 case HAL_ETH_PMT_CB_ID :
631 case HAL_ETH_WAKEUP_CB_ID :
635 case HAL_ETH_MSPINIT_CB_ID :
639 case HAL_ETH_MSPDEINIT_CB_ID :
645 heth->
ErrorCode |= HAL_ETH_ERROR_INVALID_CALLBACK;
655 case HAL_ETH_MSPINIT_CB_ID :
659 case HAL_ETH_MSPDEINIT_CB_ID :
665 heth->
ErrorCode |= HAL_ETH_ERROR_INVALID_CALLBACK;
674 heth->
ErrorCode |= HAL_ETH_ERROR_INVALID_CALLBACK;
723 SET_BIT(heth->
Instance->MACCR, ETH_MACCR_TE);
732 SET_BIT(heth->
Instance->MACCR, ETH_MACCR_RE);
744 SET_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_ST);
747 SET_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_SR);
789 SET_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_ST);
792 SET_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_SR);
799 SET_BIT(heth->
Instance->MACCR, ETH_MACCR_TE);
808 SET_BIT(heth->
Instance->MACCR, ETH_MACCR_RE);
816 ETH_DMAIER_FBEIE | ETH_DMAIER_AISE | ETH_DMAIER_RBUIE));
843 CLEAR_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_ST);
846 CLEAR_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_SR);
849 CLEAR_BIT(heth->
Instance->MACCR, ETH_MACCR_RE);
861 CLEAR_BIT(heth->
Instance->MACCR, ETH_MACCR_TE);
898 ETH_DMAIER_FBEIE | ETH_DMAIER_AISE | ETH_DMAIER_RBUIE));
901 CLEAR_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_ST);
904 CLEAR_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_SR);
907 CLEAR_BIT(heth->
Instance->MACCR, ETH_MACCR_RE);
920 CLEAR_BIT(heth->
Instance->MACCR, ETH_MACCR_TE);
929 for (descindex = 0; descindex < (uint32_t)
ETH_RX_DESC_CNT; descindex++)
961 if (pTxConfig == NULL)
994 if ((heth->
Instance->DMASR & ETH_DMASR_FBES) != (uint32_t)RESET)
1005 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
1033 if (pTxConfig == NULL)
1059 if (((heth->
Instance)->DMASR & ETH_DMASR_TBUS) != (uint32_t)RESET)
1062 (heth->
Instance)->DMASR = ETH_DMASR_TBUS;
1087 uint32_t desccnt = 0U;
1088 uint32_t desccntmax;
1089 uint32_t bufflength;
1090 uint8_t rxdataready = 0U;
1092 if (pAppBuff == NULL)
1109 && (rxdataready == 0U))
1142#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1149 (uint8_t *)dmarxdesc->
BackupAddr0, (uint16_t) bufflength);
1174 if (rxdataready == 1U)
1202 uint8_t *buff = NULL;
1203 uint8_t allocStatus = 1U;
1209 while ((desccount > 0U) && (allocStatus != 0U))
1215#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1228 WRITE_REG(dmarxdesc->
BackupAddr0, (uint32_t)buff);
1229 WRITE_REG(dmarxdesc->
DESC2, (uint32_t)buff);
1233 if (allocStatus != 0U)
1280 if (rxAllocateCallback == NULL)
1349 if (rxLinkCallback == NULL)
1399 if (txFreeCallback == NULL)
1450 uint8_t pktTxStatus = 1U;
1452#ifdef HAL_ETH_USE_PTP
1457 while ((numOfBuf != 0U) && (pktTxStatus != 0U))
1474#ifdef HAL_ETH_USE_PTP
1489#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1491#ifdef HAL_ETH_USE_PTP
1502#ifdef HAL_ETH_USE_PTP
1531#ifdef HAL_ETH_USE_PTP
1543 ETH_TimeTypeDef time;
1545 if (ptpconfig == NULL)
1550 tmpTSCR = ptpconfig->Timestamp |
1551 ((uint32_t)ptpconfig->TimestampUpdate << ETH_PTPTSCR_TSFCU_Pos) |
1552 ((uint32_t)ptpconfig->TimestampAll << ETH_PTPTSCR_TSSARFE_Pos) |
1553 ((uint32_t)ptpconfig->TimestampRolloverMode << ETH_PTPTSCR_TSSSR_Pos) |
1554 ((uint32_t)ptpconfig->TimestampV2 << ETH_PTPTSCR_TSPTPPSV2E_Pos) |
1555 ((uint32_t)ptpconfig->TimestampEthernet << ETH_PTPTSCR_TSSPTPOEFE_Pos) |
1556 ((uint32_t)ptpconfig->TimestampIPv6 << ETH_PTPTSCR_TSSIPV6FE_Pos) |
1557 ((uint32_t)ptpconfig->TimestampIPv4 << ETH_PTPTSCR_TSSIPV4FE_Pos) |
1558 ((uint32_t)ptpconfig->TimestampEvent << ETH_PTPTSCR_TSSEME_Pos) |
1559 ((uint32_t)ptpconfig->TimestampMaster << ETH_PTPTSCR_TSSMRME_Pos) |
1560 ((uint32_t)ptpconfig->TimestampFilter << ETH_PTPTSCR_TSPFFMAE_Pos) |
1561 ((uint32_t)ptpconfig->TimestampClockType << ETH_PTPTSCR_TSCNT_Pos);
1567 SET_BIT(heth->
Instance->PTPTSCR, ETH_PTPTSCR_TSE);
1568 WRITE_REG(heth->
Instance->PTPSSIR, ptpconfig->TimestampSubsecondInc);
1569 WRITE_REG(heth->
Instance->PTPTSAR, ptpconfig->TimestampAddend);
1572 if (ptpconfig->TimestampAddendUpdate == ENABLE)
1574 SET_BIT(heth->
Instance->PTPTSCR, ETH_PTPTSCR_TSARU);
1575 while ((heth->
Instance->PTPTSCR & ETH_PTPTSCR_TSARU) != 0)
1582 SET_BIT(heth->
Instance->PTPTSCR, ETH_PTPTSCR_TSSTI);
1588 time.Seconds = heth->
Instance->PTPTSHR;
1590 time.NanoSeconds = heth->
Instance->PTPTSLR;
1592 HAL_ETH_PTP_SetTime(heth, &time);
1608 if (ptpconfig == NULL)
1612 ptpconfig->Timestamp = READ_BIT(heth->
Instance->PTPTSCR, ETH_PTPTSCR_TSE);
1613 ptpconfig->TimestampUpdate = ((READ_BIT(heth->
Instance->PTPTSCR,
1614 ETH_PTPTSCR_TSFCU) >> ETH_PTPTSCR_TSFCU_Pos) > 0U) ? ENABLE : DISABLE;
1615 ptpconfig->TimestampAll = ((READ_BIT(heth->
Instance->PTPTSCR,
1616 ETH_PTPTSCR_TSSARFE) >> ETH_PTPTSCR_TSSARFE_Pos) > 0U) ? ENABLE : DISABLE;
1617 ptpconfig->TimestampRolloverMode = ((READ_BIT(heth->
Instance->PTPTSCR,
1618 ETH_PTPTSCR_TSSSR) >> ETH_PTPTSCR_TSSSR_Pos) > 0U)
1620 ptpconfig->TimestampV2 = ((READ_BIT(heth->
Instance->PTPTSCR,
1621 ETH_PTPTSCR_TSPTPPSV2E) >> ETH_PTPTSCR_TSPTPPSV2E_Pos) > 0U) ? ENABLE : DISABLE;
1622 ptpconfig->TimestampEthernet = ((READ_BIT(heth->
Instance->PTPTSCR,
1623 ETH_PTPTSCR_TSSPTPOEFE) >> ETH_PTPTSCR_TSSPTPOEFE_Pos) > 0U)
1625 ptpconfig->TimestampIPv6 = ((READ_BIT(heth->
Instance->PTPTSCR,
1626 ETH_PTPTSCR_TSSIPV6FE) >> ETH_PTPTSCR_TSSIPV6FE_Pos) > 0U) ? ENABLE : DISABLE;
1627 ptpconfig->TimestampIPv4 = ((READ_BIT(heth->
Instance->PTPTSCR,
1628 ETH_PTPTSCR_TSSIPV4FE) >> ETH_PTPTSCR_TSSIPV4FE_Pos) > 0U) ? ENABLE : DISABLE;
1629 ptpconfig->TimestampEvent = ((READ_BIT(heth->
Instance->PTPTSCR,
1630 ETH_PTPTSCR_TSSEME) >> ETH_PTPTSCR_TSSEME_Pos) > 0U) ? ENABLE : DISABLE;
1631 ptpconfig->TimestampMaster = ((READ_BIT(heth->
Instance->PTPTSCR,
1632 ETH_PTPTSCR_TSSMRME) >> ETH_PTPTSCR_TSSMRME_Pos) > 0U) ? ENABLE : DISABLE;
1633 ptpconfig->TimestampFilter = ((READ_BIT(heth->
Instance->PTPTSCR,
1634 ETH_PTPTSCR_TSPFFMAE) >> ETH_PTPTSCR_TSPFFMAE_Pos) > 0U) ? ENABLE : DISABLE;
1635 ptpconfig->TimestampClockType = ((READ_BIT(heth->
Instance->PTPTSCR,
1636 ETH_PTPTSCR_TSCNT) >> ETH_PTPTSCR_TSCNT_Pos) > 0U) ? ENABLE : DISABLE;
1655 heth->
Instance->PTPTSHUR = time->Seconds;
1658 heth->
Instance->PTPTSLUR = time->NanoSeconds;
1661 SET_BIT(heth->
Instance->PTPTSCR, ETH_PTPTSCR_TSSTU);
1686 time->Seconds = heth->
Instance->PTPTSHR;
1688 time->NanoSeconds = heth->
Instance->PTPTSLR;
1709 ETH_TimeTypeDef *timeoffset)
1713 if (ptpoffsettype == HAL_ETH_PTP_NEGATIVE_UPDATE)
1718 if (READ_BIT(heth->
Instance->PTPTSCR, ETH_PTPTSCR_TSSSR) == ETH_PTPTSCR_TSSSR)
1731 heth->
Instance->PTPTSHUR = timeoffset->Seconds;
1733 heth->
Instance->PTPTSLUR = timeoffset->NanoSeconds;
1736 SET_BIT(heth->
Instance->PTPTSCR, ETH_PTPTSCR_TSSTU);
1757 uint32_t descidx = dmatxdesclist->
CurTxDesc;
1792 timestamp->TimeStampLow = dmatxdesc->DESC0;
1794 timestamp->TimeStampHigh = dmatxdesc->DESC1;
1842 if (txPtpCallback == NULL)
1892 uint32_t mac_flag = READ_REG(heth->
Instance->MACSR);
1893 uint32_t dma_flag = READ_REG(heth->
Instance->DMASR);
1894 uint32_t dma_itsource = READ_REG(heth->
Instance->DMAIER);
1895 uint32_t exti_flag = READ_REG(EXTI->PR);
1898 if (((dma_flag & ETH_DMASR_RS) != 0U) && ((dma_itsource & ETH_DMAIER_RIE) != 0U))
1903#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1905 heth->RxCpltCallback(heth);
1913 if (((dma_flag & ETH_DMASR_TS) != 0U) && ((dma_itsource & ETH_DMAIER_TIE) != 0U))
1918#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1920 heth->TxCpltCallback(heth);
1928 if (((dma_flag & ETH_DMASR_AIS) != 0U) && ((dma_itsource & ETH_DMAIER_AISE) != 0U))
1932 if ((dma_flag & ETH_DMASR_FBES) != 0U)
1935 heth->
DMAErrorCode = READ_BIT(heth->
Instance->DMASR, (ETH_DMASR_FBES | ETH_DMASR_TPS | ETH_DMASR_RPS));
1947 ETH_DMASR_RBUS | ETH_DMASR_AIS));
1951 ETH_DMASR_RBUS | ETH_DMASR_AIS));
1953#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1955 heth->ErrorCallback(heth);
1969#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1971 heth->PMTCallback(heth);
1986#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1988 heth->WakeUpCallback(heth);
2082 uint32_t *pRegValue)
2088 tmpreg1 = heth->
Instance->MACMIIAR;
2091 tmpreg1 &= ~ETH_MACMIIAR_CR_MASK;
2094 tmpreg1 |= ((PHYAddr << 11U) & ETH_MACMIIAR_PA);
2095 tmpreg1 |= (((uint32_t)PHYReg << 6U) & ETH_MACMIIAR_MR);
2096 tmpreg1 &= ~ETH_MACMIIAR_MW;
2097 tmpreg1 |= ETH_MACMIIAR_MB;
2100 heth->
Instance->MACMIIAR = tmpreg1;
2106 while ((tmpreg1 & ETH_MACMIIAR_MB) == ETH_MACMIIAR_MB)
2114 tmpreg1 = heth->
Instance->MACMIIAR;
2118 *pRegValue = (uint16_t)(heth->
Instance->MACMIIDR);
2139 tmpreg1 = heth->
Instance->MACMIIAR;
2142 tmpreg1 &= ~ETH_MACMIIAR_CR_MASK;
2145 tmpreg1 |= ((PHYAddr << 11U) & ETH_MACMIIAR_PA);
2146 tmpreg1 |= (((uint32_t)PHYReg << 6U) & ETH_MACMIIAR_MR);
2147 tmpreg1 |= ETH_MACMIIAR_MW;
2148 tmpreg1 |= ETH_MACMIIAR_MB;
2151 heth->
Instance->MACMIIDR = (uint16_t)RegValue;
2154 heth->
Instance->MACMIIAR = tmpreg1;
2160 while ((tmpreg1 & ETH_MACMIIAR_MB) == ETH_MACMIIAR_MB)
2168 tmpreg1 = heth->
Instance->MACMIIAR;
2202 if (macconf == NULL)
2208 macconf->
DeferralCheck = ((READ_BIT(heth->
Instance->MACCR, ETH_MACCR_DC) >> 4) > 0U) ? ENABLE : DISABLE;
2213 macconf->
ReceiveOwn = ((READ_BIT(heth->
Instance->MACCR, ETH_MACCR_ROD) >> 13) == 0U) ? ENABLE : DISABLE;
2214 macconf->
LoopbackMode = ((READ_BIT(heth->
Instance->MACCR, ETH_MACCR_LM) >> 12) > 0U) ? ENABLE : DISABLE;
2216 macconf->
Speed = READ_BIT(heth->
Instance->MACCR, ETH_MACCR_FES);
2217 macconf->
Jabber = ((READ_BIT(heth->
Instance->MACCR, ETH_MACCR_JD) >> 22) == 0U) ? ENABLE : DISABLE;
2218 macconf->
Watchdog = ((READ_BIT(heth->
Instance->MACCR, ETH_MACCR_WD) >> 23) == 0U) ? ENABLE : DISABLE;
2221 macconf->
ChecksumOffload = ((READ_BIT(heth->
Instance->MACCR, ETH_MACCR_IPCO) >> 10U) > 0U) ? ENABLE : DISABLE;
2225 macconf->
ZeroQuantaPause = ((READ_BIT(heth->
Instance->MACFCR, ETH_MACFCR_ZQPD) >> 7) == 0U) ? ENABLE : DISABLE;
2245 if (dmaconf == NULL)
2253 dmaconf->
BurstMode = READ_BIT(heth->
Instance->DMABMR, ETH_DMABMR_FB | ETH_DMABMR_MB);
2260 ETH_DMAOMR_DTCEFD) >> 26) > 0U) ? DISABLE : ENABLE;
2262 dmaconf->
FlushRxPacket = ((READ_BIT(heth->
Instance->DMAOMR, ETH_DMAOMR_FTF) >> 20) > 0U) ? DISABLE : ENABLE;
2267 ETH_DMAOMR_FUGF) >> 6) > 0U) ? ENABLE : DISABLE;
2284 if (macconf == NULL)
2311 if (dmaconf == NULL)
2340 tmpreg = (heth->
Instance)->MACMIIAR;
2348 if (hclk < 35000000U)
2351 tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div16;
2353 else if (hclk < 60000000U)
2356 tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div26;
2358 else if (hclk < 100000000U)
2361 tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div42;
2363 else if (hclk < 150000000U)
2366 tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div62;
2371 tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div102;
2375 (heth->
Instance)->MACMIIAR = (uint32_t)tmpreg;
2388 uint32_t filterconfig;
2391 if (pFilterConfig == NULL)
2401 ((uint32_t)((pFilterConfig->
BroadcastFilter == DISABLE) ? 1U : 0U) << 5) |
2412 tmpreg1 = (heth->
Instance)->MACFFR;
2414 (heth->
Instance)->MACFFR = tmpreg1;
2429 if (pFilterConfig == NULL)
2435 pFilterConfig->
HashUnicast = ((READ_BIT(heth->
Instance->MACFFR, ETH_MACFFR_HU) >> 1) > 0U) ? ENABLE : DISABLE;
2436 pFilterConfig->
HashMulticast = ((READ_BIT(heth->
Instance->MACFFR, ETH_MACFFR_HM) >> 2) > 0U) ? ENABLE : DISABLE;
2438 ETH_MACFFR_DAIF) >> 3) > 0U) ? ENABLE : DISABLE;
2439 pFilterConfig->
PassAllMulticast = ((READ_BIT(heth->
Instance->MACFFR, ETH_MACFFR_PAM) >> 4) > 0U) ? ENABLE : DISABLE;
2440 pFilterConfig->
BroadcastFilter = ((READ_BIT(heth->
Instance->MACFFR, ETH_MACFFR_BFD) >> 5) == 0U) ? ENABLE : DISABLE;
2443 ETH_MACFFR_SAIF) >> 8) > 0U) ? ENABLE : DISABLE;
2444 pFilterConfig->
SrcAddrFiltering = ((READ_BIT(heth->
Instance->MACFFR, ETH_MACFFR_SAF) >> 9) > 0U) ? ENABLE : DISABLE;
2447 pFilterConfig->
ReceiveAllMode = ((READ_BIT(heth->
Instance->MACFFR, ETH_MACFFR_RA) >> 31) > 0U) ? ENABLE : DISABLE;
2465 const uint8_t *pMACAddr)
2470 if (pMACAddr == NULL)
2476 macaddrhr = ((uint32_t) &(heth->
Instance->MACA0HR) + AddrNbr);
2478 macaddrlr = ((uint32_t) &(heth->
Instance->MACA0LR) + AddrNbr);
2481 (*(__IO uint32_t *)macaddrhr) = (((uint32_t)(pMACAddr[5]) << 8) | (uint32_t)pMACAddr[4]);
2483 (*(__IO uint32_t *)macaddrlr) = (((uint32_t)(pMACAddr[3]) << 24) | ((uint32_t)(pMACAddr[2]) << 16) |
2484 ((uint32_t)(pMACAddr[1]) << 8) | (uint32_t)pMACAddr[0]);
2487 (*(__IO uint32_t *)macaddrhr) |= (ETH_MACA1HR_AE | ETH_MACA1HR_SA);
2503 if (pHashTable == NULL)
2508 heth->
Instance->MACHTHR = pHashTable[0];
2512 tmpreg1 = (heth->
Instance)->MACHTHR;
2514 (heth->
Instance)->MACHTHR = tmpreg1;
2516 heth->
Instance->MACHTLR = pHashTable[1];
2520 tmpreg1 = (heth->
Instance)->MACHTLR;
2522 (heth->
Instance)->MACHTLR = tmpreg1;
2539 MODIFY_REG(heth->
Instance->MACVLANTR, ETH_MACVLANTR_VLANTI, VLANIdentifier);
2542 CLEAR_BIT(heth->
Instance->MACVLANTR, ETH_MACVLANTR_VLANTC);
2546 SET_BIT(heth->
Instance->MACVLANTR, ETH_MACVLANTR_VLANTC);
2551 tmpreg1 = (heth->
Instance)->MACVLANTR;
2553 (heth->
Instance)->MACVLANTR = tmpreg1;
2566 uint32_t powerdownconfig;
2568 powerdownconfig = (((uint32_t)pPowerDownConfig->
MagicPacket << ETH_MACPMTCSR_MPE_Pos) |
2569 ((uint32_t)pPowerDownConfig->
WakeUpPacket << ETH_MACPMTCSR_WFE_Pos) |
2570 ((uint32_t)pPowerDownConfig->
GlobalUnicast << ETH_MACPMTCSR_GU_Pos) |
2587 CLEAR_BIT(heth->
Instance->MACPMTCSR, ETH_MACPMTCSR_WFE | ETH_MACPMTCSR_MPE | ETH_MACPMTCSR_GU);
2591 tmpreg1 = (heth->
Instance)->MACPMTCSR;
2593 (heth->
Instance)->MACPMTCSR = tmpreg1;
2595 if (READ_BIT(heth->
Instance->MACPMTCSR, ETH_MACPMTCSR_PD) != 0U)
2598 CLEAR_BIT(heth->
Instance->MACPMTCSR, ETH_MACPMTCSR_PD);
2602 tmpreg1 = (heth->
Instance)->MACPMTCSR;
2604 (heth->
Instance)->MACPMTCSR = tmpreg1;
2608 SET_BIT(heth->
Instance->MACIMR, ETH_MACIMR_PMTIM);
2623 if (pFilter == NULL)
2629 SET_BIT(heth->
Instance->MACPMTCSR, ETH_MACPMTCSR_WFFRPR);
2632 for (regindex = 0; regindex < Count; regindex++)
2635 WRITE_REG(heth->
Instance->MACRWUFFR, pFilter[regindex]);
2737 __IO uint32_t tmpreg = 0;
2740 (heth->
Instance)->DMAOMR |= ETH_DMAOMR_FTF;
2760 ((uint32_t)((macconf->
Watchdog == DISABLE) ? 1U : 0U) << 23U) |
2761 ((uint32_t)((macconf->
Jabber == DISABLE) ? 1U : 0U) << 22U) |
2765 ((uint32_t)((macconf->
ReceiveOwn == DISABLE) ? 1U : 0U) << 13U) |
2775 (heth->
Instance)->MACCR = (uint32_t)tmpreg1;
2786 tmpreg1 = (heth->
Instance)->MACFCR;
2790 tmpreg1 |= (uint32_t)((macconf->
PauseTime << 16U) |
2798 (heth->
Instance)->MACFCR = (uint32_t)tmpreg1;
2802 tmpreg1 = (heth->
Instance)->MACFCR;
2804 (heth->
Instance)->MACFCR = tmpreg1;
2813 tmpreg1 = (heth->
Instance)->DMAOMR;
2819 ((uint32_t)((dmaconf->
FlushRxPacket == DISABLE) ? 1U : 0U) << 20U) |
2828 (heth->
Instance)->DMAOMR = (uint32_t)tmpreg1;
2832 tmpreg1 = (heth->
Instance)->DMAOMR;
2834 (heth->
Instance)->DMAOMR = tmpreg1;
2849 tmpreg1 = (heth->
Instance)->DMABMR;
2851 (heth->
Instance)->DMABMR = tmpreg1;
2868 macDefaultConf.
Jabber = ENABLE;
2933 tmpreg1 = ((uint32_t)Addr[5U] << 8U) | (uint32_t)Addr[4U];
2937 tmpreg1 = ((uint32_t)Addr[3U] << 24U) | ((uint32_t)Addr[2U] << 16U) | ((uint32_t)Addr[1U] << 8U) | Addr[0U];
2960 WRITE_REG(dmatxdesc->
DESC0, 0x0U);
2961 WRITE_REG(dmatxdesc->
DESC1, 0x0U);
2962 WRITE_REG(dmatxdesc->
DESC2, 0x0U);
2963 WRITE_REG(dmatxdesc->
DESC3, 0x0U);
2972 WRITE_REG(dmatxdesc->DESC3, (uint32_t)(heth->
Init.
TxDesc + i + 1U));
2976 WRITE_REG(dmatxdesc->DESC3, (uint32_t)(heth->
Init.
TxDesc));
3005 WRITE_REG(dmarxdesc->
DESC0, 0x0U);
3006 WRITE_REG(dmarxdesc->
DESC1, 0x0U);
3007 WRITE_REG(dmarxdesc->
DESC2, 0x0U);
3008 WRITE_REG(dmarxdesc->
DESC3, 0x0U);
3019 dmarxdesc->
DESC1 &= ~ETH_DMARXDESC_DIC;
3025 WRITE_REG(dmarxdesc->DESC3, (uint32_t)(heth->
Init.
RxDesc + i + 1U));
3029 WRITE_REG(dmarxdesc->DESC3, (uint32_t)(heth->
Init.
RxDesc));
3056 uint32_t descidx = dmatxdesclist->
CurTxDesc;
3057 uint32_t firstdescidx = dmatxdesclist->
CurTxDesc;
3059 uint32_t descnbr = 0;
3063 uint32_t bd_count = 0;
3064 uint32_t primask_bit;
3077 WRITE_REG(dmatxdesc->
DESC2, (uint32_t)txbuffer->
buffer);
3103 while (txbuffer->
next != NULL)
3107 if (ItMode != ((uint32_t)RESET))
3126 descidx = firstdescidx;
3130 for (idx = 0; idx < descnbr; idx ++)
3152 txbuffer = txbuffer->
next;
3155 WRITE_REG(dmatxdesc->
DESC2, (uint32_t)txbuffer->
buffer);
3168 if (ItMode != ((uint32_t)RESET))
3194 primask_bit = __get_PRIMASK();
3200 __set_PRIMASK(primask_bit);
3206#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
3217#ifdef HAL_ETH_USE_PTP
#define ETH_BACKOFFLIMIT_10
#define ETH_BURSTLENGTH_FIXED
#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_4_1
#define ETH_DMAARBITRATION_RXPRIORTX
#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_1_1
#define ETH_DMARXDESC_OWN
Bit definition of RDES0 register: DMA Rx descriptor status register.
#define ETH_DMARXDESC_RCH
#define ETH_DMARXDESC_DIC
Bit definition of RDES1 register.
#define ETH_DMATXDESC_OWN
Bit definition of TDES0 register: DMA Tx descriptor status register.
#define ETH_DMATXDESC_TTSS
#define ETH_DMATXDESC_TTSE
#define ETH_DMATXDESC_TCH
#define ETH_DMATXDESC_TBS1
#define ETH_DMATXDESC_CIC
#define ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL
#define ETH_FULLDUPLEX_MODE
#define HAL_ETH_ERROR_PARAM
#define HAL_ETH_ERROR_DMA
#define HAL_ETH_ERROR_NONE
#define HAL_ETH_ERROR_TIMEOUT
#define HAL_ETH_ERROR_BUSY
void HAL_ETH_MspDeInit(ETH_HandleTypeDef *heth)
DeInitializes ETH MSP.
void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
Initializes the ETH MSP.
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.
void HAL_ETH_TxFreeCallback(uint32_t *buff)
Tx Free callback.
void HAL_ETH_RxAllocateCallback(uint8_t **buff)
Rx Allocate callback.
HAL_StatusTypeDef HAL_ETH_Transmit_IT(ETH_HandleTypeDef *heth, ETH_TxPacketConfigTypeDef *pTxConfig)
Sends an Ethernet Packet in interrupt mode.
HAL_StatusTypeDef HAL_ETH_Start(ETH_HandleTypeDef *heth)
Enables Ethernet MAC and DMA reception and transmission.
HAL_StatusTypeDef HAL_ETH_UnRegisterRxAllocateCallback(ETH_HandleTypeDef *heth)
Unregister the Rx alloc callback.
HAL_StatusTypeDef HAL_ETH_ReleaseTxPacket(ETH_HandleTypeDef *heth)
Release transmitted Tx packets.
HAL_StatusTypeDef HAL_ETH_Transmit(ETH_HandleTypeDef *heth, ETH_TxPacketConfigTypeDef *pTxConfig, uint32_t Timeout)
Sends an Ethernet Packet in polling mode.
HAL_StatusTypeDef HAL_ETH_Stop_IT(ETH_HandleTypeDef *heth)
Stop Ethernet MAC and DMA reception/transmission in Interrupt mode.
void HAL_ETH_TxPtpCallback(uint32_t *buff, ETH_TimeStampTypeDef *timestamp)
HAL_StatusTypeDef HAL_ETH_WritePHYRegister(const ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, uint32_t RegValue)
Writes to a PHY register.
HAL_StatusTypeDef HAL_ETH_RegisterRxLinkCallback(ETH_HandleTypeDef *heth, pETH_rxLinkCallbackTypeDef rxLinkCallback)
Set the Rx link data function.
HAL_StatusTypeDef HAL_ETH_RegisterTxFreeCallback(ETH_HandleTypeDef *heth, pETH_txFreeCallbackTypeDef txFreeCallback)
Set the Tx free function.
HAL_StatusTypeDef HAL_ETH_UnRegisterTxFreeCallback(ETH_HandleTypeDef *heth)
Unregister the Tx free callback.
HAL_StatusTypeDef HAL_ETH_RegisterRxAllocateCallback(ETH_HandleTypeDef *heth, pETH_rxAllocateCallbackTypeDef rxAllocateCallback)
Register the Rx alloc callback.
HAL_StatusTypeDef HAL_ETH_Start_IT(ETH_HandleTypeDef *heth)
Enables Ethernet MAC and DMA reception/transmission in Interrupt mode.
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_GetRxDataErrorCode(const ETH_HandleTypeDef *heth, uint32_t *pErrorCode)
Get the error state of the last received packet.
HAL_StatusTypeDef HAL_ETH_ReadData(ETH_HandleTypeDef *heth, void **pAppBuff)
Read a received packet.
void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
Rx Link callback.
void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth)
Rx Transfer completed callbacks.
void HAL_ETH_WakeUpCallback(ETH_HandleTypeDef *heth)
ETH WAKEUP interrupt callback.
void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *heth)
Tx Transfer completed callbacks.
void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *heth)
Ethernet transfer error callbacks.
void HAL_ETH_PMTCallback(ETH_HandleTypeDef *heth)
Ethernet Power Management module IT callback.
void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth)
This function handles ETH interrupt request.
HAL_StatusTypeDef HAL_ETH_UnRegisterRxLinkCallback(ETH_HandleTypeDef *heth)
Unregister the Rx link callback.
HAL_StatusTypeDef HAL_ETH_Stop(ETH_HandleTypeDef *heth)
Stop Ethernet MAC and DMA reception/transmission.
HAL_StatusTypeDef HAL_ETH_GetMACFilterConfig(const ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig)
Get the ETH MAC (L2) Filters configuration.
HAL_StatusTypeDef HAL_ETH_GetDMAConfig(const ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf)
Get the configuration of the DMA.
HAL_StatusTypeDef HAL_ETH_SetWakeUpFilter(ETH_HandleTypeDef *heth, uint32_t *pFilter, uint32_t Count)
Set the WakeUp filter.
HAL_StatusTypeDef HAL_ETH_GetMACConfig(const ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf)
Get the configuration of the MAC and MTL subsystems.
HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig(ETH_HandleTypeDef *heth, const ETH_MACFilterConfigTypeDef *pFilterConfig)
Set the ETH MAC (L2) Filters configuration.
HAL_StatusTypeDef HAL_ETH_SetDMAConfig(ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf)
Set the ETH DMA configuration.
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, const 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_SetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf)
Set the MAC configuration.
void HAL_ETH_SetMDIOClockRange(ETH_HandleTypeDef *heth)
Configures the Clock range of ETH MDIO interface.
HAL_StatusTypeDef HAL_ETH_SetSourceMACAddrMatch(const ETH_HandleTypeDef *heth, uint32_t AddrNbr, const 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.
HAL_ETH_StateTypeDef HAL_ETH_GetState(const ETH_HandleTypeDef *heth)
Returns the ETH state.
uint32_t HAL_ETH_GetMACWakeUpSource(const ETH_HandleTypeDef *heth)
Returns the ETH MAC WakeUp event source.
uint32_t HAL_ETH_GetError(const ETH_HandleTypeDef *heth)
Returns the ETH error code.
uint32_t HAL_ETH_GetDMAError(const ETH_HandleTypeDef *heth)
Returns the ETH DMA error code.
uint32_t HAL_ETH_GetMACError(const ETH_HandleTypeDef *heth)
Returns the ETH MAC error code.
#define ETH_WAKEUP_EXTI_LINE
#define __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG(__EXTI_LINE__)
Clear the ETH WAKEUP Exti flag.
#define __HAL_ETH_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disables the specified ETHERNET DMA interrupts.
#define __HAL_ETH_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enables the specified ETHERNET DMA interrupts.
#define __HAL_ETH_DMA_CLEAR_IT(__HANDLE__, __INTERRUPT__)
Clears the ETHERNET DMA IT pending bit.
void(* pETH_rxAllocateCallbackTypeDef)(uint8_t **buffer)
HAL ETH Rx Get Buffer Function definition.
void(* pETH_txFreeCallbackTypeDef)(uint32_t *buffer)
HAL ETH Tx Free Function definition.
void(* pETH_rxLinkCallbackTypeDef)(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
HAL ETH Rx Set App Data Function definition.
void(* pETH_txPtpCallbackTypeDef)(uint32_t *buffer, ETH_TimeStampTypeDef *timestamp)
HAL ETH Tx Free Function definition.
uint32_t HAL_ETH_StateTypeDef
HAL State structures definition.
#define ETH_INTERFRAMEGAP_96BIT
#define HAL_ETH_PTP_CONFIGURED
#define ETH_PAUSELOWTHRESHOLD_MINUS4
#define ETH_DMARXDESC_ERRORS_MASK
#define ETH_MACCR_CLEAR_MASK
#define ETH_MAC_ADDR_LBASE
#define ETH_MACFCR_CLEAR_MASK
#define ETH_MACPMTCSR_MASK
#define ETH_PTPTSLR_VALUE
#define ETH_MAC_ADDR_HBASE
#define ETH_SWRESET_TIMEOUT
#define ETH_REG_WRITE_DELAY
#define ETH_PTPTSHR_VALUE
#define ETH_DMAOMR_CLEAR_MASK
#define ETH_DMARXDESC_FRAMELENGTHSHIFT
#define ETH_MACMIIAR_CR_MASK
static void ETH_DMARxDescListInit(ETH_HandleTypeDef *heth)
Initializes the DMA Rx descriptors in chain mode. called by HAL_ETH_Init() API.
static void ETH_SetDMAConfig(ETH_HandleTypeDef *heth, const ETH_DMAConfigTypeDef *dmaconf)
static void ETH_DMATxDescListInit(ETH_HandleTypeDef *heth)
Initializes the DMA Tx descriptors. called by HAL_ETH_Init() API.
static void ETH_SetMACConfig(ETH_HandleTypeDef *heth, const ETH_MACConfigTypeDef *macconf)
static void ETH_UpdateDescriptor(ETH_HandleTypeDef *heth)
This function gives back Rx Desc of the last received Packet to the DMA, so ETH DMA will be able to u...
static uint32_t ETH_Prepare_Tx_Descriptors(ETH_HandleTypeDef *heth, const ETH_TxPacketConfigTypeDef *pTxConfig, uint32_t ItMode)
Prepare Tx DMA descriptor before transmission. called by HAL_ETH_Transmit_IT and HAL_ETH_Transmit_IT(...
static void ETH_MACDMAConfig(ETH_HandleTypeDef *heth)
Configures Ethernet MAC and DMA with default parameters. called by HAL_ETH_Init() API.
static void ETH_MACAddressConfig(ETH_HandleTypeDef *heth, uint32_t MacAddr, uint8_t *Addr)
Configures the selected MAC address.
static void ETH_FlushTransmitFIFO(ETH_HandleTypeDef *heth)
Clears the ETHERNET transmit FIFO.
#define INCR_RX_DESC_INDEX(inx, offset)
#define INCR_TX_DESC_INDEX(inx, offset)
#define ETH_RECEIVEDTHRESHOLDCONTROL_64BYTES
#define ETH_RXDMABURSTLENGTH_32BEAT
#define HAL_ETH_STATE_RESET
#define HAL_ETH_STATE_BUSY
#define HAL_ETH_STATE_READY
#define HAL_ETH_STATE_ERROR
#define HAL_ETH_STATE_STARTED
#define ETH_TRANSMITTHRESHOLDCONTROL_64BYTES
#define ETH_TXDMABURSTLENGTH_32BEAT
#define ETH_TX_PACKETS_FEATURES_VLANTAG
#define ETH_TX_PACKETS_FEATURES_CSUM
#define ETH_TX_PACKETS_FEATURES_CRCPAD
#define ETH_CRC_PAD_DISABLE
#define ETH_VLANTAGCOMPARISON_16BIT
void HAL_Delay(uint32_t Delay)
This function provides minimum delay (in milliseconds) based on variable incremented.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define __HAL_RCC_SYSCFG_CLK_ENABLE()
uint32_t HAL_RCC_GetHCLKFreq(void)
Returns the HCLK frequency.
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition
ETH DMA Configuration Structure definition.
FunctionalState ReceiveStoreForward
FunctionalState AddressAlignedBeats
uint32_t ReceiveThresholdControl
FunctionalState SecondFrameOperate
FunctionalState ForwardErrorFrames
uint32_t RxDMABurstLength
FunctionalState ForwardUndersizedGoodFrames
uint32_t TransmitThresholdControl
FunctionalState EnhancedDescriptorFormat
uint32_t DescriptorSkipLength
FunctionalState DropTCPIPChecksumErrorFrame
FunctionalState TransmitStoreForward
FunctionalState FlushRxPacket
uint32_t TxDMABurstLength
ETH DMA Descriptor structure definition.
ETH Handle Structure definition.
__IO HAL_ETH_StateTypeDef gState
__IO uint32_t MACErrorCode
__IO uint32_t IsPtpConfigured
__IO uint32_t DMAErrorCode
pETH_txFreeCallbackTypeDef txFreeCallback
pETH_rxLinkCallbackTypeDef rxLinkCallback
ETH_TxDescListTypeDef TxDescList
ETH_RxDescListTypeDef RxDescList
pETH_txPtpCallbackTypeDef txPtpCallback
pETH_rxAllocateCallbackTypeDef rxAllocateCallback
__IO uint32_t MACWakeUpEvent
ETH_DMADescTypeDef * TxDesc
ETH_MediaInterfaceTypeDef MediaInterface
ETH_DMADescTypeDef * RxDesc
ETH MAC Configuration Structure definition.
FunctionalState AutomaticPadCRCStrip
FunctionalState UnicastPausePacketDetect
uint32_t PauseLowThreshold
FunctionalState ReceiveOwn
FunctionalState RetryTransmission
FunctionalState LoopbackMode
uint32_t InterPacketGapVal
FunctionalState ChecksumOffload
FunctionalState DeferralCheck
FunctionalState ZeroQuantaPause
FunctionalState CRCStripTypePacket
FunctionalState ReceiveFlowControl
FunctionalState CarrierSenseDuringTransmit
FunctionalState TransmitFlowControl
ETH MAC filter structure definition.
FunctionalState SrcAddrFiltering
FunctionalState BroadcastFilter
uint32_t ControlPacketsFilter
FunctionalState SrcAddrInverseFiltering
FunctionalState PassAllMulticast
FunctionalState HachOrPerfectFilter
FunctionalState HashUnicast
FunctionalState ReceiveAllMode
FunctionalState DestAddrInverseFiltering
FunctionalState PromiscuousMode
FunctionalState HashMulticast
ETH Power Down structure definition.
FunctionalState WakeUpPacket
FunctionalState GlobalUnicast
FunctionalState MagicPacket
ETH_TimeStampTypeDef TimeStamp
uint32_t RxDesc[ETH_RX_DESC_CNT]
ETH Timestamp structure definition.
DMA Transmit Descriptors Wrapper structure definition.
uint32_t * PacketAddress[ETH_TX_DESC_CNT]
uint32_t TxDesc[ETH_TX_DESC_CNT]
uint32_t * CurrentPacketAddress
Transmit Packet Configuration structure definition.
ETH_BufferTypeDef * TxBuffer
ETH Buffers List structure definition.
struct __ETH_BufferTypeDef * next