STM32F4xx HAL Driver master
STM32CubeF4 HAL / LL Drivers API Reference
Loading...
Searching...
No Matches
stm32f4xx_hal_eth.h
Go to the documentation of this file.
1
18
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32F4xx_HAL_ETH_H
21#define STM32F4xx_HAL_ETH_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32f4xx_hal_def.h"
29
30#if defined(ETH)
31
35
39
40/* Exported types ------------------------------------------------------------*/
41#ifndef ETH_TX_DESC_CNT
42#define ETH_TX_DESC_CNT 4U
43#endif /* ETH_TX_DESC_CNT */
44
45#ifndef ETH_RX_DESC_CNT
46#define ETH_RX_DESC_CNT 4U
47#endif /* ETH_RX_DESC_CNT */
48
49
50/*********************** Descriptors struct def section ************************/
54
58typedef struct
59{
60 __IO uint32_t DESC0;
61 __IO uint32_t DESC1;
62 __IO uint32_t DESC2;
63 __IO uint32_t DESC3;
64 __IO uint32_t DESC4;
65 __IO uint32_t DESC5;
66 __IO uint32_t DESC6;
67 __IO uint32_t DESC7;
68 uint32_t BackupAddr0; /* used to store rx buffer 1 address */
69 uint32_t BackupAddr1; /* used to store rx buffer 2 address */
70} ETH_DMADescTypeDef;
74
78typedef struct __ETH_BufferTypeDef
79{
80 uint8_t *buffer; /*<! buffer address */
81
82 uint32_t len; /*<! buffer length */
83
84 struct __ETH_BufferTypeDef *next; /*<! Pointer to the next buffer in the list */
85} ETH_BufferTypeDef;
89
93typedef struct
94{
95 uint32_t TxDesc[ETH_TX_DESC_CNT]; /*<! Tx DMA descriptors addresses */
96
97 uint32_t CurTxDesc; /*<! Current Tx descriptor index for packet transmission */
98
99 uint32_t *PacketAddress[ETH_TX_DESC_CNT]; /*<! Ethernet packet addresses array */
100
101 uint32_t *CurrentPacketAddress; /*<! Current transmit packet addresses */
102
103 uint32_t BuffersInUse; /*<! Buffers in Use */
104
105 uint32_t releaseIndex; /*<! Release index */
106} ETH_TxDescListTypeDef;
110
114typedef struct
115{
116 uint32_t Attributes;
118
119 uint32_t Length;
120
121 ETH_BufferTypeDef *TxBuffer;
122
123 uint32_t SrcAddrCtrl;
125
126 uint32_t CRCPadCtrl;
128
129 uint32_t ChecksumCtrl;
131
132 uint32_t MaxSegmentSize;
134
135 uint32_t PayloadLen;
137
138 uint32_t TCPHeaderLen;
140
141 uint32_t VlanTag;
143
144 uint32_t VlanCtrl;
146
147 uint32_t InnerVlanTag;
149
150 uint32_t InnerVlanCtrl;
152
153 void *pData;
154
155} ETH_TxPacketConfigTypeDef;
159
163typedef struct
164{
165 uint32_t TimeStampLow;
166 uint32_t TimeStampHigh;
167
168} ETH_TimeStampTypeDef;
172
173#ifdef HAL_ETH_USE_PTP
177typedef struct
178{
179 uint32_t Seconds;
180 uint32_t NanoSeconds;
181} ETH_TimeTypeDef;
185#endif /* HAL_ETH_USE_PTP */
186
190typedef struct
191{
192 uint32_t RxDesc[ETH_RX_DESC_CNT]; /*<! Rx DMA descriptors addresses. */
193
194 uint32_t ItMode; /*<! If 1, DMA will generate the Rx complete interrupt.
195 If 0, DMA will not generate the Rx complete interrupt. */
196
197 uint32_t RxDescIdx; /*<! Current Rx descriptor. */
198
199 uint32_t RxDescCnt; /*<! Number of descriptors . */
200
201 uint32_t RxDataLength; /*<! Received Data Length. */
202
203 uint32_t RxBuildDescIdx; /*<! Current Rx Descriptor for building descriptors. */
204
205 uint32_t RxBuildDescCnt; /*<! Number of Rx Descriptors awaiting building. */
206
207 uint32_t pRxLastRxDesc; /*<! Last received descriptor. */
208
209 ETH_TimeStampTypeDef TimeStamp; /*<! Time Stamp Low value for receive. */
210
211 void *pRxStart; /*<! Pointer to the first buff. */
212
213 void *pRxEnd; /*<! Pointer to the last buff. */
214
215} ETH_RxDescListTypeDef;
219
223typedef struct
224{
225 uint32_t
226 SourceAddrControl;
228
229 FunctionalState
230 ChecksumOffload;
231
232 uint32_t InterPacketGapVal;
234
235 FunctionalState GiantPacketSizeLimitControl;
236
237 FunctionalState Support2KPacket;
238
239 FunctionalState CRCStripTypePacket;
240
241 FunctionalState AutomaticPadCRCStrip;
242
243 FunctionalState Watchdog;
244
245 FunctionalState Jabber;
246
247 FunctionalState JumboPacket;
250
251 uint32_t Speed;
253
254 uint32_t DuplexMode;
256
257 FunctionalState LoopbackMode;
258
259 FunctionalState
260 CarrierSenseBeforeTransmit;
261
262 FunctionalState ReceiveOwn;
263
264 FunctionalState
265 CarrierSenseDuringTransmit;
266
267 FunctionalState
268 RetryTransmission;
269
270 uint32_t BackOffLimit;
272
273 FunctionalState
274 DeferralCheck;
275
276 uint32_t
277 PreambleLength;
279
280 FunctionalState SlowProtocolDetect;
281
282 FunctionalState CRCCheckingRxPackets;
283
284 uint32_t
285 GiantPacketSizeLimit;
289
290 FunctionalState ExtendedInterPacketGap;
291
292 uint32_t ExtendedInterPacketGapVal;
294
295 FunctionalState ProgrammableWatchdog;
296
297 uint32_t WatchdogTimeout;
299
300 uint32_t
301 PauseTime;
304
305 FunctionalState
306 ZeroQuantaPause;
307
308 uint32_t
309 PauseLowThreshold;
311
312 FunctionalState
313 TransmitFlowControl;
315
316 FunctionalState
317 UnicastPausePacketDetect;
318
319 FunctionalState ReceiveFlowControl;
321
322 uint32_t TransmitQueueMode;
324
325 uint32_t ReceiveQueueMode;
327
328 FunctionalState DropTCPIPChecksumErrorPacket;
329
330 FunctionalState ForwardRxErrorPacket;
331
332 FunctionalState ForwardRxUndersizedGoodPacket;
333} ETH_MACConfigTypeDef;
337
341typedef struct
342{
343 uint32_t DMAArbitration;
345
346 FunctionalState AddressAlignedBeats;
348
349 uint32_t BurstMode;
351 FunctionalState DropTCPIPChecksumErrorFrame;
352
353 FunctionalState ReceiveStoreForward;
354
355 FunctionalState TransmitStoreForward;
356
357
358 uint32_t
359 TxDMABurstLength;
361
362 uint32_t TransmitThresholdControl;
365
366 uint32_t
367 RxDMABurstLength;
369
370 FunctionalState ForwardErrorFrames;
371 FunctionalState FlushRxPacket;
372
373 FunctionalState
374 ForwardUndersizedGoodFrames;
377
378 uint32_t ReceiveThresholdControl;
381
382 FunctionalState
383 SecondFrameOperate;
386
387 FunctionalState EnhancedDescriptorFormat;
388
389 uint32_t
390 DescriptorSkipLength;
393} ETH_DMAConfigTypeDef;
397
401typedef enum
402{
403 HAL_ETH_MII_MODE = 0x00U,
404 HAL_ETH_RMII_MODE = SYSCFG_PMC_MII_RMII_SEL
405} ETH_MediaInterfaceTypeDef;
409
410#ifdef HAL_ETH_USE_PTP
414typedef enum
415{
416 HAL_ETH_PTP_POSITIVE_UPDATE = 0x00000000U,
417 HAL_ETH_PTP_NEGATIVE_UPDATE = 0x00000001U
418} ETH_PtpUpdateTypeDef;
422#endif /* HAL_ETH_USE_PTP */
423
427typedef struct
428{
429 uint8_t
430 *MACAddr;
431
432 ETH_MediaInterfaceTypeDef MediaInterface;
433
434 ETH_DMADescTypeDef
435 *TxDesc;
436
437 ETH_DMADescTypeDef
438 *RxDesc;
439
440 uint32_t RxBuffLen;
441
442} ETH_InitTypeDef;
446
447#ifdef HAL_ETH_USE_PTP
451typedef struct
452{
453 uint32_t Timestamp;
454 uint32_t TimestampUpdateMode;
455 uint32_t TimestampInitialize;
456 uint32_t TimestampUpdate;
457 uint32_t TimestampAddendUpdate;
458 uint32_t TimestampAll;
459 uint32_t TimestampRolloverMode;
460 uint32_t TimestampV2;
461 uint32_t TimestampEthernet;
462 uint32_t TimestampIPv6;
463 uint32_t TimestampIPv4;
464 uint32_t TimestampEvent;
465 uint32_t TimestampMaster;
466 uint32_t TimestampFilter;
467 uint32_t TimestampClockType;
468 uint32_t TimestampAddend;
469 uint32_t TimestampSubsecondInc;
470
471} ETH_PTP_ConfigTypeDef;
475#endif /* HAL_ETH_USE_PTP */
476
480typedef uint32_t HAL_ETH_StateTypeDef;
484
488typedef void (*pETH_rxAllocateCallbackTypeDef)(uint8_t **buffer);
492
496typedef void (*pETH_rxLinkCallbackTypeDef)(void **pStart, void **pEnd, uint8_t *buff,
497 uint16_t Length);
501
505typedef void (*pETH_txFreeCallbackTypeDef)(uint32_t *buffer);
509
513typedef void (*pETH_txPtpCallbackTypeDef)(uint32_t *buffer,
514 ETH_TimeStampTypeDef *timestamp);
518
522#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
523typedef struct __ETH_HandleTypeDef
524#else
525typedef struct
526#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
527{
528 ETH_TypeDef *Instance;
529
530 ETH_InitTypeDef Init;
531
532 ETH_TxDescListTypeDef TxDescList;
534
535 ETH_RxDescListTypeDef RxDescList;
537
538#ifdef HAL_ETH_USE_PTP
539 ETH_TimeStampTypeDef TxTimestamp;
540#endif /* HAL_ETH_USE_PTP */
541
542 __IO HAL_ETH_StateTypeDef gState;
545
546 __IO uint32_t ErrorCode;
548
549 __IO uint32_t
550 DMAErrorCode;
553
554 __IO uint32_t
555 MACErrorCode;
558
559 __IO uint32_t MACWakeUpEvent;
562
563 __IO uint32_t MACLPIEvent;
565
566 __IO uint32_t IsPtpConfigured;
569
570#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
571
572 void (* TxCpltCallback)(struct __ETH_HandleTypeDef *heth);
573 void (* RxCpltCallback)(struct __ETH_HandleTypeDef *heth);
574 void (* ErrorCallback)(struct __ETH_HandleTypeDef *heth);
575 void (* PMTCallback)(struct __ETH_HandleTypeDef *heth);
576 void (* WakeUpCallback)(struct __ETH_HandleTypeDef *heth);
577
578 void (* MspInitCallback)(struct __ETH_HandleTypeDef *heth);
579 void (* MspDeInitCallback)(struct __ETH_HandleTypeDef *heth);
580
581#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
582
583 pETH_rxAllocateCallbackTypeDef rxAllocateCallback;
584 pETH_rxLinkCallbackTypeDef rxLinkCallback;
585 pETH_txFreeCallbackTypeDef txFreeCallback;
586 pETH_txPtpCallbackTypeDef txPtpCallback;
587
588} ETH_HandleTypeDef;
592
593#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
597typedef enum
598{
599 HAL_ETH_MSPINIT_CB_ID = 0x00U,
600 HAL_ETH_MSPDEINIT_CB_ID = 0x01U,
601 HAL_ETH_TX_COMPLETE_CB_ID = 0x02U,
602 HAL_ETH_RX_COMPLETE_CB_ID = 0x03U,
603 HAL_ETH_ERROR_CB_ID = 0x04U,
604 HAL_ETH_PMT_CB_ID = 0x06U,
605 HAL_ETH_WAKEUP_CB_ID = 0x08U
606
607} HAL_ETH_CallbackIDTypeDef;
608
612typedef void (*pETH_CallbackTypeDef)(ETH_HandleTypeDef *heth);
613
614#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
615
619typedef struct
620{
621 FunctionalState PromiscuousMode;
622
623 FunctionalState ReceiveAllMode;
624
625 FunctionalState HachOrPerfectFilter;
626
627 FunctionalState HashUnicast;
628
629 FunctionalState HashMulticast;
630
631 FunctionalState PassAllMulticast;
632
633 FunctionalState SrcAddrFiltering;
634
635 FunctionalState SrcAddrInverseFiltering;
636
637 FunctionalState DestAddrInverseFiltering;
638
639 FunctionalState BroadcastFilter;
640
641 uint32_t ControlPacketsFilter;
643} ETH_MACFilterConfigTypeDef;
647
651typedef struct
652{
653 FunctionalState WakeUpPacket;
654
655 FunctionalState MagicPacket;
656
657 FunctionalState GlobalUnicast;
658
659 FunctionalState WakeUpForward;
660
661} ETH_PowerDownConfigTypeDef;
665
669
670/* Exported constants --------------------------------------------------------*/
674
678
679/*
680 DMA Tx Normal Descriptor Read Format
681 -----------------------------------------------------------------------------------------------
682 TDES0 | OWN(31) | CTRL[30:26] | Reserved[25:24] | CTRL[23:20] | Reserved[19:17] | Status[16:0] |
683 -----------------------------------------------------------------------------------------------
684 TDES1 | Reserved[31:29] | Buffer2 ByteCount[28:16] | Reserved[15:13] | Buffer1 ByteCount[12:0] |
685 -----------------------------------------------------------------------------------------------
686 TDES2 | Buffer1 Address [31:0] |
687 -----------------------------------------------------------------------------------------------
688 TDES3 | Buffer2 Address [31:0] / Next Descriptor Address [31:0] |
689 -----------------------------------------------------------------------------------------------
690*/
691
695#define ETH_DMATXDESC_OWN 0x80000000U
696#define ETH_DMATXDESC_IC 0x40000000U
697#define ETH_DMATXDESC_LS 0x20000000U
698#define ETH_DMATXDESC_FS 0x10000000U
699#define ETH_DMATXDESC_DC 0x08000000U
700#define ETH_DMATXDESC_DP 0x04000000U
701#define ETH_DMATXDESC_TTSE 0x02000000U
702#define ETH_DMATXDESC_CIC 0x00C00000U
703#define ETH_DMATXDESC_CIC_BYPASS 0x00000000U
704#define ETH_DMATXDESC_CIC_IPV4HEADER 0x00400000U
705#define ETH_DMATXDESC_CIC_TCPUDPICMP_SEGMENT 0x00800000U
706#define ETH_DMATXDESC_CIC_TCPUDPICMP_FULL 0x00C00000U
707#define ETH_DMATXDESC_TER 0x00200000U
708#define ETH_DMATXDESC_TCH 0x00100000U
709#define ETH_DMATXDESC_TTSS 0x00020000U
710#define ETH_DMATXDESC_IHE 0x00010000U
711#define ETH_DMATXDESC_ES 0x00008000U
712#define ETH_DMATXDESC_JT 0x00004000U
713#define ETH_DMATXDESC_FF 0x00002000U
714#define ETH_DMATXDESC_PCE 0x00001000U
715#define ETH_DMATXDESC_LCA 0x00000800U
716#define ETH_DMATXDESC_NC 0x00000400U
717#define ETH_DMATXDESC_LCO 0x00000200U
718#define ETH_DMATXDESC_EC 0x00000100U
719#define ETH_DMATXDESC_VF 0x00000080U
720#define ETH_DMATXDESC_CC 0x00000078U
721#define ETH_DMATXDESC_ED 0x00000004U
722#define ETH_DMATXDESC_UF 0x00000002U
723#define ETH_DMATXDESC_DB 0x00000001U
724
728#define ETH_DMATXDESC_TBS2 0x1FFF0000U
729#define ETH_DMATXDESC_TBS1 0x00001FFFU
730
734#define ETH_DMATXDESC_B1AP 0xFFFFFFFFU
735
739#define ETH_DMATXDESC_B2AP 0xFFFFFFFFU
740
741/*---------------------------------------------------------------------------------------------
742TDES6 | Transmit Time Stamp Low [31:0] |
743-----------------------------------------------------------------------------------------------
744TDES7 | Transmit Time Stamp High [31:0] |
745----------------------------------------------------------------------------------------------*/
746
747/* Bit definition of TDES6 register */
748#define ETH_DMAPTPTXDESC_TTSL 0xFFFFFFFFU /* Transmit Time Stamp Low */
749
750/* Bit definition of TDES7 register */
751#define ETH_DMAPTPTXDESC_TTSH 0xFFFFFFFFU /* Transmit Time Stamp High */
752
756
760
761/*
762 DMA Rx Normal Descriptor read format
763 --------------------------------------------------------------------------------------------------------------------
764 RDES0 | OWN(31) | Status [30:0] |
765 ---------------------------------------------------------------------------------------------------------------------
766 RDES1 | CTRL(31) | Reserved[30:29] | Buffer2 ByteCount[28:16] | CTRL[15:14] | Reserved(13) | Buffer1 ByteCount[12:0] |
767 ---------------------------------------------------------------------------------------------------------------------
768 RDES2 | Buffer1 Address [31:0] |
769 ---------------------------------------------------------------------------------------------------------------------
770 RDES3 | Buffer2 Address [31:0] / Next Descriptor Address [31:0] |
771 ---------------------------------------------------------------------------------------------------------------------
772*/
773
777#define ETH_DMARXDESC_OWN 0x80000000U
778#define ETH_DMARXDESC_AFM 0x40000000U
779#define ETH_DMARXDESC_FL 0x3FFF0000U
780#define ETH_DMARXDESC_ES 0x00008000U
781#define ETH_DMARXDESC_DE 0x00004000U
782#define ETH_DMARXDESC_SAF 0x00002000U
783#define ETH_DMARXDESC_LE 0x00001000U
784#define ETH_DMARXDESC_OE 0x00000800U
785#define ETH_DMARXDESC_VLAN 0x00000400U
786#define ETH_DMARXDESC_FS 0x00000200U
787#define ETH_DMARXDESC_LS 0x00000100U
788#define ETH_DMARXDESC_IPV4HCE 0x00000080U
789#define ETH_DMARXDESC_LC 0x00000040U
790#define ETH_DMARXDESC_FT 0x00000020U
791#define ETH_DMARXDESC_RWT 0x00000010U
792#define ETH_DMARXDESC_RE 0x00000008U
793#define ETH_DMARXDESC_DBE 0x00000004U
794#define ETH_DMARXDESC_CE 0x00000002U
795#define ETH_DMARXDESC_MAMPCE 0x00000001U
796
800#define ETH_DMARXDESC_DIC 0x80000000U
801#define ETH_DMARXDESC_RBS2 0x1FFF0000U
802#define ETH_DMARXDESC_RER 0x00008000U
803#define ETH_DMARXDESC_RCH 0x00004000U
804#define ETH_DMARXDESC_RBS1 0x00001FFFU
805
809#define ETH_DMARXDESC_B1AP 0xFFFFFFFFU
810
814#define ETH_DMARXDESC_B2AP 0xFFFFFFFFU
815
816/*---------------------------------------------------------------------------------------------------------------------
817 RDES4 | Reserved[31:15] | Extended Status [14:0] |
818 ---------------------------------------------------------------------------------------------------------------------
819 RDES5 | Reserved[31:0] |
820 ---------------------------------------------------------------------------------------------------------------------
821 RDES6 | Receive Time Stamp Low [31:0] |
822 ---------------------------------------------------------------------------------------------------------------------
823 RDES7 | Receive Time Stamp High [31:0] |
824 --------------------------------------------------------------------------------------------------------------------*/
825
826/* Bit definition of RDES4 register */
827#define ETH_DMAPTPRXDESC_PTPV 0x00002000U /* PTP Version */
828#define ETH_DMAPTPRXDESC_PTPFT 0x00001000U /* PTP Frame Type */
829#define ETH_DMAPTPRXDESC_PTPMT 0x00000F00U /* PTP Message Type */
830#define ETH_DMAPTPRXDESC_PTPMT_SYNC 0x00000100U /* SYNC message
831 (all clock types) */
832#define ETH_DMAPTPRXDESC_PTPMT_FOLLOWUP 0x00000200U /* FollowUp message
833 (all clock types) */
834#define ETH_DMAPTPRXDESC_PTPMT_DELAYREQ 0x00000300U /* DelayReq message
835 (all clock types) */
836#define ETH_DMAPTPRXDESC_PTPMT_DELAYRESP 0x00000400U /* DelayResp message
837 (all clock types) */
838#define ETH_DMAPTPRXDESC_PTPMT_PDELAYREQ_ANNOUNCE 0x00000500U /* PdelayReq message
839 (peer-to-peer transparent clock)
840 or Announce message (Ordinary
841 or Boundary clock) */
842#define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESP_MANAG 0x00000600U /* PdelayResp message
843 (peer-to-peer transparent clock)
844 or Management message (Ordinary
845 or Boundary clock) */
846#define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESPFOLLOWUP_SIGNAL 0x00000700U /* PdelayRespFollowUp message
847 (peer-to-peer transparent clock)
848 or Signaling message (Ordinary
849 or Boundary clock) */
850#define ETH_DMAPTPRXDESC_IPV6PR 0x00000080U /* IPv6 Packet Received */
851#define ETH_DMAPTPRXDESC_IPV4PR 0x00000040U /* IPv4 Packet Received */
852#define ETH_DMAPTPRXDESC_IPCB 0x00000020U /* IP Checksum Bypassed */
853#define ETH_DMAPTPRXDESC_IPPE 0x00000010U /* IP Payload Error */
854#define ETH_DMAPTPRXDESC_IPHE 0x00000008U /* IP Header Error */
855#define ETH_DMAPTPRXDESC_IPPT 0x00000007U /* IP Payload Type */
856#define ETH_DMAPTPRXDESC_IPPT_UDP 0x00000001U /* UDP payload encapsulated in
857 the IP datagram */
858#define ETH_DMAPTPRXDESC_IPPT_TCP 0x00000002U /* TCP payload encapsulated in
859 the IP datagram */
860#define ETH_DMAPTPRXDESC_IPPT_ICMP 0x00000003U /* ICMP payload encapsulated in
861 the IP datagram */
862
863/* Bit definition of RDES6 register */
864#define ETH_DMAPTPRXDESC_RTSL 0xFFFFFFFFU /* Receive Time Stamp Low */
865
866/* Bit definition of RDES7 register */
867#define ETH_DMAPTPRXDESC_RTSH 0xFFFFFFFFU /* Receive Time Stamp High */
868
872
876#define ETH_MAX_PACKET_SIZE 1528U
877#define ETH_HEADER 14U
878#define ETH_CRC 4U
879#define ETH_VLAN_TAG 4U
880#define ETH_MIN_PAYLOAD 46U
881#define ETH_MAX_PAYLOAD 1500U
882#define ETH_JUMBO_FRAME_PAYLOAD 9000U
886
890#define HAL_ETH_ERROR_NONE 0x00000000U
891#define HAL_ETH_ERROR_PARAM 0x00000001U
892#define HAL_ETH_ERROR_BUSY 0x00000002U
893#define HAL_ETH_ERROR_TIMEOUT 0x00000004U
894#define HAL_ETH_ERROR_DMA 0x00000008U
895#define HAL_ETH_ERROR_MAC 0x00000010U
896#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
897#define HAL_ETH_ERROR_INVALID_CALLBACK 0x00000020U
898#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
902
906#define ETH_TX_PACKETS_FEATURES_CSUM 0x00000001U
907#define ETH_TX_PACKETS_FEATURES_SAIC 0x00000002U
908#define ETH_TX_PACKETS_FEATURES_VLANTAG 0x00000004U
909#define ETH_TX_PACKETS_FEATURES_INNERVLANTAG 0x00000008U
910#define ETH_TX_PACKETS_FEATURES_TSO 0x00000010U
911#define ETH_TX_PACKETS_FEATURES_CRCPAD 0x00000020U
915
916
920#define ETH_CRC_PAD_DISABLE (uint32_t)(ETH_DMATXDESC_DP | ETH_DMATXDESC_DC)
921#define ETH_CRC_PAD_INSERT 0x00000000U
922#define ETH_CRC_INSERT ETH_DMATXDESC_DP
926
930#define ETH_CHECKSUM_DISABLE ETH_DMATXDESC_CIC_BYPASS
931#define ETH_CHECKSUM_IPHDR_INSERT ETH_DMATXDESC_CIC_IPV4HEADER
932#define ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT ETH_DMATXDESC_CIC_TCPUDPICMP_SEGMENT
933#define ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC ETH_DMATXDESC_CIC_TCPUDPICMP_FULL
937
938
942#define ETH_VLAN_FILTER_PASS ETH_DMARXDESC_VLAN
943#define ETH_DEST_ADDRESS_FAIL ETH_DMARXDESC_AFM
944#define ETH_SOURCE_ADDRESS_FAIL ETH_DMARXDESC_SAF
948
952#define ETH_DRIBBLE_BIT_ERROR ETH_DMARXDESC_DBE
953#define ETH_RECEIVE_ERROR ETH_DMARXDESC_RE
954#define ETH_RECEIVE_OVERFLOW ETH_DMARXDESC_OE
955#define ETH_WATCHDOG_TIMEOUT ETH_DMARXDESC_RWT
956#define ETH_GIANT_PACKET ETH_DMARXDESC_IPV4HC
957#define ETH_CRC_ERROR ETH_DMARXDESC_CE
961
965#define ETH_DMAARBITRATION_RX ETH_DMABMR_DA
966#define ETH_DMAARBITRATION_RX1_TX1 0x00000000U
967#define ETH_DMAARBITRATION_RX2_TX1 ETH_DMABMR_RTPR_2_1
968#define ETH_DMAARBITRATION_RX3_TX1 ETH_DMABMR_RTPR_3_1
969#define ETH_DMAARBITRATION_RX4_TX1 ETH_DMABMR_RTPR_4_1
970#define ETH_DMAARBITRATION_TX (ETH_DMAMR_TXPR | ETH_DMAMR_DA)
971#define ETH_DMAARBITRATION_TX1_RX1 0x00000000U
972#define ETH_DMAARBITRATION_TX2_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_2_1)
973#define ETH_DMAARBITRATION_TX3_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_3_1)
974#define ETH_DMAARBITRATION_TX4_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_4_1)
975#define ETH_DMAARBITRATION_TX5_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_5_1)
976#define ETH_DMAARBITRATION_TX6_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_6_1)
977#define ETH_DMAARBITRATION_TX7_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_7_1)
978#define ETH_DMAARBITRATION_TX8_RX1 (ETH_DMAMR_TXPR | ETH_DMAMR_PR_8_1)
982
986#define ETH_BURSTLENGTH_FIXED ETH_DMABMR_FB
987#define ETH_BURSTLENGTH_MIXED ETH_DMABMR_MB
988#define ETH_BURSTLENGTH_UNSPECIFIED 0x00000000U
992
996#define ETH_TXDMABURSTLENGTH_1BEAT 0x00000100U
997#define ETH_TXDMABURSTLENGTH_2BEAT 0x00000200U
998#define ETH_TXDMABURSTLENGTH_4BEAT 0x00000400U
999#define ETH_TXDMABURSTLENGTH_8BEAT 0x00000800U
1000#define ETH_TXDMABURSTLENGTH_16BEAT 0x00001000U
1001#define ETH_TXDMABURSTLENGTH_32BEAT 0x00002000U
1002#define ETH_TXDMABURSTLENGTH_4XPBL_4BEAT 0x01000100U
1003#define ETH_TXDMABURSTLENGTH_4XPBL_8BEAT 0x01000200U
1004#define ETH_TXDMABURSTLENGTH_4XPBL_16BEAT 0x01000400U
1005#define ETH_TXDMABURSTLENGTH_4XPBL_32BEAT 0x01000800U
1006#define ETH_TXDMABURSTLENGTH_4XPBL_64BEAT 0x01001000U
1007#define ETH_TXDMABURSTLENGTH_4XPBL_128BEAT 0x01002000U
1011
1015#define ETH_RXDMABURSTLENGTH_1BEAT 0x00020000U
1016#define ETH_RXDMABURSTLENGTH_2BEAT 0x00040000U
1017#define ETH_RXDMABURSTLENGTH_4BEAT 0x00080000U
1018#define ETH_RXDMABURSTLENGTH_8BEAT 0x00100000U
1019#define ETH_RXDMABURSTLENGTH_16BEAT 0x00200000U
1020#define ETH_RXDMABURSTLENGTH_32BEAT 0x00400000U
1021#define ETH_RXDMABURSTLENGTH_4XPBL_4BEAT 0x01020000U
1022#define ETH_RXDMABURSTLENGTH_4XPBL_8BEAT 0x01040000U
1023#define ETH_RXDMABURSTLENGTH_4XPBL_16BEAT 0x01080000U
1024#define ETH_RXDMABURSTLENGTH_4XPBL_32BEAT 0x01100000U
1025#define ETH_RXDMABURSTLENGTH_4XPBL_64BEAT 0x01200000U
1026#define ETH_RXDMABURSTLENGTH_4XPBL_128BEAT 0x01400000U
1030
1034#define ETH_DMA_NORMAL_IT ETH_DMAIER_NISE
1035#define ETH_DMA_ABNORMAL_IT ETH_DMAIER_AISE
1036#define ETH_DMA_FATAL_BUS_ERROR_IT ETH_DMAIER_FBEIE
1037#define ETH_DMA_EARLY_RX_IT ETH_DMAIER_ERIE
1038#define ETH_DMA_EARLY_TX_IT ETH_DMAIER_ETIE
1039#define ETH_DMA_RX_WATCHDOG_TIMEOUT_IT ETH_DMAIER_RWTIE
1040#define ETH_DMA_RX_PROCESS_STOPPED_IT ETH_DMAIER_RPSIE
1041#define ETH_DMA_RX_BUFFER_UNAVAILABLE_IT ETH_DMAIER_RBUIE
1042#define ETH_DMA_RX_IT ETH_DMAIER_RIE
1043#define ETH_DMA_TX_BUFFER_UNAVAILABLE_IT ETH_DMAIER_TBUIE
1044#define ETH_DMA_TX_PROCESS_STOPPED_IT ETH_DMAIER_TPSIE
1045#define ETH_DMA_TX_IT ETH_DMAIER_TIE
1049
1053#define ETH_DMA_NO_ERROR_FLAG 0x00000000U
1054#define ETH_DMA_TX_DATA_TRANS_ERROR_FLAG ETH_DMASR_EBS_DataTransfTx
1055#define ETH_DMA_RX_DATA_TRANS_ERROR_FLAG 0x00000000U
1056#define ETH_DMA_READ_TRANS_ERROR_FLAG ETH_DMASR_EBS_ReadTransf
1057#define ETH_DMA_WRITE_TRANS_ERROR_FLAG 0x00000000U
1058#define ETH_DMA_DESC_ACCESS_ERROR_FLAG ETH_DMASR_EBS_DescAccess
1059#define ETH_DMA_DATA_BUFF_ACCESS_ERROR_FLAG 0x00000000U
1060#define ETH_DMA_FATAL_BUS_ERROR_FLAG ETH_DMASR_FBES
1061#define ETH_DMA_EARLY_TX_IT_FLAG ETH_DMASR_ETS
1062#define ETH_DMA_RX_WATCHDOG_TIMEOUT_FLAG ETH_DMASR_RWTS
1063#define ETH_DMA_RX_PROCESS_STOPPED_FLAG ETH_DMASR_RPSS
1064#define ETH_DMA_RX_BUFFER_UNAVAILABLE_FLAG ETH_DMASR_RBUS
1065#define ETH_DMA_TX_PROCESS_STOPPED_FLAG ETH_DMASR_TPS
1069
1073#define ETH_TRANSMITSTOREFORWARD ETH_DMAOMR_TSF
1074#define ETH_TRANSMITTHRESHOLD_16 ETH_DMAOMR_TTC_16Bytes
1075#define ETH_TRANSMITTHRESHOLD_24 ETH_DMAOMR_TTC_24Bytes
1076#define ETH_TRANSMITTHRESHOLD_32 ETH_DMAOMR_TTC_32Bytes
1077#define ETH_TRANSMITTHRESHOLD_40 ETH_DMAOMR_TTC_40Bytes
1078#define ETH_TRANSMITTHRESHOLD_64 ETH_DMAOMR_TTC_64Bytes
1079#define ETH_TRANSMITTHRESHOLD_128 ETH_DMAOMR_TTC_128Bytes
1080#define ETH_TRANSMITTHRESHOLD_192 ETH_DMAOMR_TTC_192Bytes
1081#define ETH_TRANSMITTHRESHOLD_256 ETH_DMAOMR_TTC_256Bytes
1085
1089#define ETH_RECEIVESTOREFORWARD ETH_DMAOMR_RSF
1090#define ETH_RECEIVETHRESHOLD8_64 ETH_DMAOMR_RTC_64Bytes
1091#define ETH_RECEIVETHRESHOLD8_32 ETH_DMAOMR_RTC_32Bytes
1092#define ETH_RECEIVETHRESHOLD8_96 ETH_DMAOMR_RTC_96Bytes
1093#define ETH_RECEIVETHRESHOLD8_128 ETH_DMAOMR_RTC_128Bytes
1097
1101#define ETH_PAUSELOWTHRESHOLD_MINUS_4 ETH_MACFCR_PLT_Minus4
1102#define ETH_PAUSELOWTHRESHOLD_MINUS_28 ETH_MACFCR_PLT_Minus28
1103#define ETH_PAUSELOWTHRESHOLD_MINUS_144 ETH_MACFCR_PLT_Minus144
1104#define ETH_PAUSELOWTHRESHOLD_MINUS_256 ETH_MACFCR_PLT_Minus256
1108
1109
1113#define ETH_SPEED_10M 0x00000000U
1114#define ETH_SPEED_100M 0x00004000U
1118
1122#define ETH_FULLDUPLEX_MODE ETH_MACCR_DM
1123#define ETH_HALFDUPLEX_MODE 0x00000000U
1127
1131#define ETH_BACKOFFLIMIT_10 0x00000000U
1132#define ETH_BACKOFFLIMIT_8 0x00000020U
1133#define ETH_BACKOFFLIMIT_4 0x00000040U
1134#define ETH_BACKOFFLIMIT_1 0x00000060U
1138
1139
1143#define ETH_SOURCEADDRESS_DISABLE 0x00000000U
1144#define ETH_SOURCEADDRESS_INSERT_ADDR0 ETH_MACCR_SARC_INSADDR0
1145#define ETH_SOURCEADDRESS_INSERT_ADDR1 ETH_MACCR_SARC_INSADDR1
1146#define ETH_SOURCEADDRESS_REPLACE_ADDR0 ETH_MACCR_SARC_REPADDR0
1147#define ETH_SOURCEADDRESS_REPLACE_ADDR1 ETH_MACCR_SARC_REPADDR1
1151
1152
1156#define ETH_VLANTAGCOMPARISON_12BIT 0x00010000U
1157#define ETH_VLANTAGCOMPARISON_16BIT 0x00000000U
1161
1165#define ETH_MAC_ADDRESS0 0x00000000U
1166#define ETH_MAC_ADDRESS1 0x00000008U
1167#define ETH_MAC_ADDRESS2 0x00000010U
1168#define ETH_MAC_ADDRESS3 0x00000018U
1172
1176#define ETH_MAC_PMT_IT ETH_MACSR_PMTS
1180
1184#define ETH_WAKEUP_FRAME_RECIEVED ETH_MACPMTCSR_WFR
1185#define ETH_MAGIC_PACKET_RECIEVED ETH_MACPMTCSR_MPR
1189
1190
1194#define HAL_ETH_STATE_RESET 0x00000000U
1195#define HAL_ETH_STATE_READY 0x00000010U
1196#define HAL_ETH_STATE_BUSY 0x00000020U
1197#define HAL_ETH_STATE_STARTED 0x00000040U
1198#define HAL_ETH_STATE_ERROR 0x000000E0U
1202
1206#define ETH_AUTONEGOTIATION_ENABLE 0x00000001U
1207#define ETH_AUTONEGOTIATION_DISABLE 0x00000000U
1208
1215#define ETH_RXPOLLING_MODE 0x00000000U
1216#define ETH_RXINTERRUPT_MODE 0x00000001U
1220
1224#define ETH_CHECKSUM_BY_HARDWARE 0x00000000U
1225#define ETH_CHECKSUM_BY_SOFTWARE 0x00000001U
1229
1233#define ETH_MEDIA_INTERFACE_MII 0x00000000U
1234#define ETH_MEDIA_INTERFACE_RMII (SYSCFG_PMC_MII_RMII_SEL)
1238
1242#define ETH_WATCHDOG_ENABLE 0x00000000U
1243#define ETH_WATCHDOG_DISABLE 0x00800000U
1247
1251#define ETH_JABBER_ENABLE 0x00000000U
1252#define ETH_JABBER_DISABLE 0x00400000U
1256
1260#define ETH_INTERFRAMEGAP_96BIT 0x00000000U
1261#define ETH_INTERFRAMEGAP_88BIT 0x00020000U
1262#define ETH_INTERFRAMEGAP_80BIT 0x00040000U
1263#define ETH_INTERFRAMEGAP_72BIT 0x00060000U
1264#define ETH_INTERFRAMEGAP_64BIT 0x00080000U
1265#define ETH_INTERFRAMEGAP_56BIT 0x000A0000U
1266#define ETH_INTERFRAMEGAP_48BIT 0x000C0000U
1267#define ETH_INTERFRAMEGAP_40BIT 0x000E0000U
1271
1275#define ETH_CARRIERSENCE_ENABLE 0x00000000U
1276#define ETH_CARRIERSENCE_DISABLE 0x00010000U
1280
1284#define ETH_RECEIVEOWN_ENABLE 0x00000000U
1285#define ETH_RECEIVEOWN_DISABLE 0x00002000U
1289
1293#define ETH_LOOPBACKMODE_ENABLE 0x00001000U
1294#define ETH_LOOPBACKMODE_DISABLE 0x00000000U
1298
1302#define ETH_CHECKSUMOFFLAOD_ENABLE 0x00000400U
1303#define ETH_CHECKSUMOFFLAOD_DISABLE 0x00000000U
1307
1311#define ETH_RETRYTRANSMISSION_ENABLE 0x00000000U
1312#define ETH_RETRYTRANSMISSION_DISABLE 0x00000200U
1316
1320#define ETH_AUTOMATICPADCRCSTRIP_ENABLE 0x00000080U
1321#define ETH_AUTOMATICPADCRCSTRIP_DISABLE 0x00000000U
1325
1329#define ETH_DEFFERRALCHECK_ENABLE 0x00000010U
1330#define ETH_DEFFERRALCHECK_DISABLE 0x00000000U
1334
1338#define ETH_RECEIVEALL_ENABLE 0x80000000U
1339#define ETH_RECEIVEALL_DISABLE 0x00000000U
1343
1347#define ETH_SOURCEADDRFILTER_NORMAL_ENABLE 0x00000200U
1348#define ETH_SOURCEADDRFILTER_INVERSE_ENABLE 0x00000300U
1349#define ETH_SOURCEADDRFILTER_DISABLE 0x00000000U
1353
1357#define ETH_PASSCONTROLFRAMES_BLOCKALL 0x00000040U
1358#define ETH_PASSCONTROLFRAMES_FORWARDALL 0x00000080U
1359#define ETH_PASSCONTROLFRAMES_FORWARDPASSEDADDRFILTER 0x000000C0U
1363
1367#define ETH_BROADCASTFRAMESRECEPTION_ENABLE 0x00000000U
1368#define ETH_BROADCASTFRAMESRECEPTION_DISABLE 0x00000020U
1372
1376#define ETH_DESTINATIONADDRFILTER_NORMAL 0x00000000U
1377#define ETH_DESTINATIONADDRFILTER_INVERSE 0x00000008U
1381
1385#define ETH_PROMISCUOUS_MODE_ENABLE 0x00000001U
1386#define ETH_PROMISCUOUS_MODE_DISABLE 0x00000000U
1390
1394#define ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE 0x00000404U
1395#define ETH_MULTICASTFRAMESFILTER_HASHTABLE 0x00000004U
1396#define ETH_MULTICASTFRAMESFILTER_PERFECT 0x00000000U
1397#define ETH_MULTICASTFRAMESFILTER_NONE 0x00000010U
1401
1405#define ETH_UNICASTFRAMESFILTER_PERFECTHASHTABLE 0x00000402U
1406#define ETH_UNICASTFRAMESFILTER_HASHTABLE 0x00000002U
1407#define ETH_UNICASTFRAMESFILTER_PERFECT 0x00000000U
1411
1415#define ETH_ZEROQUANTAPAUSE_ENABLE 0x00000000U
1416#define ETH_ZEROQUANTAPAUSE_DISABLE 0x00000080U
1420
1424#define ETH_PAUSELOWTHRESHOLD_MINUS4 0x00000000U
1425#define ETH_PAUSELOWTHRESHOLD_MINUS28 0x00000010U
1426#define ETH_PAUSELOWTHRESHOLD_MINUS144 0x00000020U
1427#define ETH_PAUSELOWTHRESHOLD_MINUS256 0x00000030U
1431
1435#define ETH_UNICASTPAUSEFRAMEDETECT_ENABLE 0x00000008U
1436#define ETH_UNICASTPAUSEFRAMEDETECT_DISABLE 0x00000000U
1440
1444#define ETH_RECEIVEFLOWCONTROL_ENABLE 0x00000004U
1445#define ETH_RECEIVEFLOWCONTROL_DISABLE 0x00000000U
1449
1453#define ETH_TRANSMITFLOWCONTROL_ENABLE 0x00000002U
1454#define ETH_TRANSMITFLOWCONTROL_DISABLE 0x00000000U
1458
1462#define ETH_MAC_ADDRESSFILTER_SA 0x00000000U
1463#define ETH_MAC_ADDRESSFILTER_DA 0x00000008U
1467
1471#define ETH_MAC_ADDRESSMASK_BYTE6 0x20000000U
1472#define ETH_MAC_ADDRESSMASK_BYTE5 0x10000000U
1473#define ETH_MAC_ADDRESSMASK_BYTE4 0x08000000U
1474#define ETH_MAC_ADDRESSMASK_BYTE3 0x04000000U
1475#define ETH_MAC_ADDRESSMASK_BYTE2 0x02000000U
1476#define ETH_MAC_ADDRESSMASK_BYTE1 0x01000000U
1480
1484#define ETH_TRANSMITTHRESHOLDCONTROL_64BYTES 0x00000000U
1485#define ETH_TRANSMITTHRESHOLDCONTROL_128BYTES 0x00004000U
1486#define ETH_TRANSMITTHRESHOLDCONTROL_192BYTES 0x00008000U
1487#define ETH_TRANSMITTHRESHOLDCONTROL_256BYTES 0x0000C000U
1488#define ETH_TRANSMITTHRESHOLDCONTROL_40BYTES 0x00010000U
1489#define ETH_TRANSMITTHRESHOLDCONTROL_32BYTES 0x00014000U
1490#define ETH_TRANSMITTHRESHOLDCONTROL_24BYTES 0x00018000U
1491#define ETH_TRANSMITTHRESHOLDCONTROL_16BYTES 0x0001C000U
1495
1499#define ETH_RECEIVEDTHRESHOLDCONTROL_64BYTES 0x00000000U
1500#define ETH_RECEIVEDTHRESHOLDCONTROL_32BYTES 0x00000008U
1501#define ETH_RECEIVEDTHRESHOLDCONTROL_96BYTES 0x00000010U
1502#define ETH_RECEIVEDTHRESHOLDCONTROL_128BYTES 0x00000018U
1506
1510#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_1_1 0x00000000U
1511#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_2_1 0x00004000U
1512#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_3_1 0x00008000U
1513#define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_4_1 0x0000C000U
1514#define ETH_DMAARBITRATION_RXPRIORTX 0x00000002U
1518
1522#define ETH_DMATXDESC_LASTSEGMENTS 0x40000000U
1523#define ETH_DMATXDESC_FIRSTSEGMENT 0x20000000U
1527
1531#define ETH_DMATXDESC_CHECKSUMBYPASS 0x00000000U
1532#define ETH_DMATXDESC_CHECKSUMIPV4HEADER 0x00400000U
1533#define ETH_DMATXDESC_CHECKSUMTCPUDPICMPSEGMENT 0x00800000U
1534#define ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL 0x00C00000U
1538
1542#define ETH_DMARXDESC_BUFFER1 0x00000000U
1543#define ETH_DMARXDESC_BUFFER2 0x00000001U
1547
1551#define ETH_PMT_FLAG_WUFFRPR 0x80000000U
1552#define ETH_PMT_FLAG_WUFR 0x00000040U
1553#define ETH_PMT_FLAG_MPR 0x00000020U
1557
1561#define ETH_MMC_IT_TGF 0x00200000U
1562#define ETH_MMC_IT_TGFMSC 0x00008000U
1563#define ETH_MMC_IT_TGFSC 0x00004000U
1567
1571#define ETH_MMC_IT_RGUF 0x10020000U
1572#define ETH_MMC_IT_RFAE 0x10000040U
1573#define ETH_MMC_IT_RFCE 0x10000020U
1577
1581#define ETH_MAC_FLAG_TST 0x00000200U
1582#define ETH_MAC_FLAG_MMCT 0x00000040U
1583#define ETH_MAC_FLAG_MMCR 0x00000020U
1584#define ETH_MAC_FLAG_MMC 0x00000010U
1585#define ETH_MAC_FLAG_PMT 0x00000008U
1589
1593#define ETH_DMA_FLAG_TST 0x20000000U
1594#define ETH_DMA_FLAG_PMT 0x10000000U
1595#define ETH_DMA_FLAG_MMC 0x08000000U
1596#define ETH_DMA_FLAG_DATATRANSFERERROR 0x00800000U
1597#define ETH_DMA_FLAG_READWRITEERROR 0x01000000U
1598#define ETH_DMA_FLAG_ACCESSERROR 0x02000000U
1599#define ETH_DMA_FLAG_NIS 0x00010000U
1600#define ETH_DMA_FLAG_AIS 0x00008000U
1601#define ETH_DMA_FLAG_ER 0x00004000U
1602#define ETH_DMA_FLAG_FBE 0x00002000U
1603#define ETH_DMA_FLAG_ET 0x00000400U
1604#define ETH_DMA_FLAG_RWT 0x00000200U
1605#define ETH_DMA_FLAG_RPS 0x00000100U
1606#define ETH_DMA_FLAG_RBU 0x00000080U
1607#define ETH_DMA_FLAG_R 0x00000040U
1608#define ETH_DMA_FLAG_TU 0x00000020U
1609#define ETH_DMA_FLAG_RO 0x00000010U
1610#define ETH_DMA_FLAG_TJT 0x00000008U
1611#define ETH_DMA_FLAG_TBU 0x00000004U
1612#define ETH_DMA_FLAG_TPS 0x00000002U
1613#define ETH_DMA_FLAG_T 0x00000001U
1617
1621#define ETH_MAC_IT_TST 0x00000200U
1622#define ETH_MAC_IT_MMCT 0x00000040U
1623#define ETH_MAC_IT_MMCR 0x00000020U
1624#define ETH_MAC_IT_MMC 0x00000010U
1625#define ETH_MAC_IT_PMT 0x00000008U
1629
1633#define ETH_DMA_IT_TST 0x20000000U
1634#define ETH_DMA_IT_PMT 0x10000000U
1635#define ETH_DMA_IT_MMC 0x08000000U
1636#define ETH_DMA_IT_NIS 0x00010000U
1637#define ETH_DMA_IT_AIS 0x00008000U
1638#define ETH_DMA_IT_ER 0x00004000U
1639#define ETH_DMA_IT_FBE 0x00002000U
1640#define ETH_DMA_IT_ET 0x00000400U
1641#define ETH_DMA_IT_RWT 0x00000200U
1642#define ETH_DMA_IT_RPS 0x00000100U
1643#define ETH_DMA_IT_RBU 0x00000080U
1644#define ETH_DMA_IT_R 0x00000040U
1645#define ETH_DMA_IT_TU 0x00000020U
1646#define ETH_DMA_IT_RO 0x00000010U
1647#define ETH_DMA_IT_TJT 0x00000008U
1648#define ETH_DMA_IT_TBU 0x00000004U
1649#define ETH_DMA_IT_TPS 0x00000002U
1650#define ETH_DMA_IT_T 0x00000001U
1654
1658#define ETH_DMA_TRANSMITPROCESS_STOPPED 0x00000000U
1659#define ETH_DMA_TRANSMITPROCESS_FETCHING 0x00100000U
1660#define ETH_DMA_TRANSMITPROCESS_WAITING 0x00200000U
1661#define ETH_DMA_TRANSMITPROCESS_READING 0x00300000U
1662#define ETH_DMA_TRANSMITPROCESS_SUSPENDED 0x00600000U
1663#define ETH_DMA_TRANSMITPROCESS_CLOSING 0x00700000U
1664
1668
1669
1673#define ETH_DMA_RECEIVEPROCESS_STOPPED 0x00000000U
1674#define ETH_DMA_RECEIVEPROCESS_FETCHING 0x00020000U
1675#define ETH_DMA_RECEIVEPROCESS_WAITING 0x00060000U
1676#define ETH_DMA_RECEIVEPROCESS_SUSPENDED 0x00080000U
1677#define ETH_DMA_RECEIVEPROCESS_CLOSING 0x000A0000U
1678#define ETH_DMA_RECEIVEPROCESS_QUEUING 0x000E0000U
1679
1683
1687#define ETH_DMA_OVERFLOW_RXFIFOCOUNTER 0x10000000U
1688#define ETH_DMA_OVERFLOW_MISSEDFRAMECOUNTER 0x00010000U
1695#define HAL_ETH_PTP_NOT_CONFIGURED 0x00000000U
1696#define HAL_ETH_PTP_CONFIGURED 0x00000001U
1700
1704
1705/* Exported macro ------------------------------------------------------------*/
1709
1714#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1715#define __HAL_ETH_RESET_HANDLE_STATE(__HANDLE__) do{ \
1716 (__HANDLE__)->gState = HAL_ETH_STATE_RESET; \
1717 (__HANDLE__)->MspInitCallback = NULL; \
1718 (__HANDLE__)->MspDeInitCallback = NULL; \
1719 } while(0)
1720#else
1721#define __HAL_ETH_RESET_HANDLE_STATE(__HANDLE__) do{ \
1722 (__HANDLE__)->gState = HAL_ETH_STATE_RESET; \
1723 } while(0)
1724#endif /*USE_HAL_ETH_REGISTER_CALLBACKS */
1725
1733#define __HAL_ETH_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DMAIER \
1734 |= (__INTERRUPT__))
1735
1743#define __HAL_ETH_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DMAIER \
1744 &= ~(__INTERRUPT__))
1745
1752#define __HAL_ETH_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->DMAIER &\
1753 (__INTERRUPT__)) == (__INTERRUPT__))
1754
1761#define __HAL_ETH_DMA_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->DMASR &\
1762 (__INTERRUPT__)) == (__INTERRUPT__))
1763
1770#define __HAL_ETH_DMA_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DMASR = (__INTERRUPT__))
1771
1778#define __HAL_ETH_DMA_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->DMASR &\
1779 ( __FLAG__)) == ( __FLAG__))
1780
1787#define __HAL_ETH_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->DMASR = ( __FLAG__))
1788
1789
1796#define __HAL_ETH_MAC_GET_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->MACSR &\
1797 ( __INTERRUPT__)) == ( __INTERRUPT__))
1798
1800#define ETH_WAKEUP_EXTI_LINE 0x00080000U
1801
1808#define __HAL_ETH_WAKEUP_EXTI_ENABLE_IT(__EXTI_LINE__) (EXTI->IMR |= (__EXTI_LINE__))
1809
1816#define __HAL_ETH_WAKEUP_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))
1817
1824#define __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))
1825
1832#define __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE(__EXTI_LINE__) (EXTI->FTSR &= ~(__EXTI_LINE__)); \
1833 (EXTI->RTSR |= (__EXTI_LINE__))
1834
1841#define __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR &= ~(__EXTI_LINE__));\
1842 (EXTI->FTSR |= (__EXTI_LINE__))
1843
1850#define __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE(__EXTI_LINE__) (EXTI->RTSR |= (__EXTI_LINE__));\
1851 (EXTI->FTSR |= (__EXTI_LINE__))
1852
1859#define __HAL_ETH_WAKEUP_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__))
1860
1861#define __HAL_ETH_GET_PTP_CONTROL(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->PTPTSCR) & \
1862 (__FLAG__)) == (__FLAG__)) ? SET : RESET)
1863
1864#define __HAL_ETH_SET_PTP_CONTROL(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->PTPTSCR |= (__FLAG__))
1865
1869
1870
1871/* Exported functions --------------------------------------------------------*/
1872
1876
1880/* Initialization and de initialization functions **********************************/
1881HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef *heth);
1882HAL_StatusTypeDef HAL_ETH_DeInit(ETH_HandleTypeDef *heth);
1883void HAL_ETH_MspInit(ETH_HandleTypeDef *heth);
1884void HAL_ETH_MspDeInit(ETH_HandleTypeDef *heth);
1885
1886/* Callbacks Register/UnRegister functions ***********************************/
1887#if (USE_HAL_ETH_REGISTER_CALLBACKS == 1)
1888HAL_StatusTypeDef HAL_ETH_RegisterCallback(ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID,
1889 pETH_CallbackTypeDef pCallback);
1890HAL_StatusTypeDef HAL_ETH_UnRegisterCallback(ETH_HandleTypeDef *heth, HAL_ETH_CallbackIDTypeDef CallbackID);
1891#endif /* USE_HAL_ETH_REGISTER_CALLBACKS */
1892
1896
1900/* IO operation functions *******************************************************/
1901HAL_StatusTypeDef HAL_ETH_Start(ETH_HandleTypeDef *heth);
1902HAL_StatusTypeDef HAL_ETH_Start_IT(ETH_HandleTypeDef *heth);
1903HAL_StatusTypeDef HAL_ETH_Stop(ETH_HandleTypeDef *heth);
1904HAL_StatusTypeDef HAL_ETH_Stop_IT(ETH_HandleTypeDef *heth);
1905
1906HAL_StatusTypeDef HAL_ETH_ReadData(ETH_HandleTypeDef *heth, void **pAppBuff);
1907HAL_StatusTypeDef HAL_ETH_RegisterRxAllocateCallback(ETH_HandleTypeDef *heth,
1908 pETH_rxAllocateCallbackTypeDef rxAllocateCallback);
1909HAL_StatusTypeDef HAL_ETH_UnRegisterRxAllocateCallback(ETH_HandleTypeDef *heth);
1910HAL_StatusTypeDef HAL_ETH_RegisterRxLinkCallback(ETH_HandleTypeDef *heth, pETH_rxLinkCallbackTypeDef rxLinkCallback);
1911HAL_StatusTypeDef HAL_ETH_UnRegisterRxLinkCallback(ETH_HandleTypeDef *heth);
1912HAL_StatusTypeDef HAL_ETH_GetRxDataErrorCode(const ETH_HandleTypeDef *heth, uint32_t *pErrorCode);
1913HAL_StatusTypeDef HAL_ETH_RegisterTxFreeCallback(ETH_HandleTypeDef *heth, pETH_txFreeCallbackTypeDef txFreeCallback);
1914HAL_StatusTypeDef HAL_ETH_UnRegisterTxFreeCallback(ETH_HandleTypeDef *heth);
1915HAL_StatusTypeDef HAL_ETH_ReleaseTxPacket(ETH_HandleTypeDef *heth);
1916
1917#ifdef HAL_ETH_USE_PTP
1918HAL_StatusTypeDef HAL_ETH_PTP_SetConfig(ETH_HandleTypeDef *heth, ETH_PTP_ConfigTypeDef *ptpconfig);
1919HAL_StatusTypeDef HAL_ETH_PTP_GetConfig(ETH_HandleTypeDef *heth, ETH_PTP_ConfigTypeDef *ptpconfig);
1920HAL_StatusTypeDef HAL_ETH_PTP_SetTime(ETH_HandleTypeDef *heth, ETH_TimeTypeDef *time);
1921HAL_StatusTypeDef HAL_ETH_PTP_GetTime(ETH_HandleTypeDef *heth, ETH_TimeTypeDef *time);
1922HAL_StatusTypeDef HAL_ETH_PTP_AddTimeOffset(ETH_HandleTypeDef *heth, ETH_PtpUpdateTypeDef ptpoffsettype,
1923 ETH_TimeTypeDef *timeoffset);
1924HAL_StatusTypeDef HAL_ETH_PTP_InsertTxTimestamp(ETH_HandleTypeDef *heth);
1925HAL_StatusTypeDef HAL_ETH_PTP_GetTxTimestamp(ETH_HandleTypeDef *heth, ETH_TimeStampTypeDef *timestamp);
1926HAL_StatusTypeDef HAL_ETH_PTP_GetRxTimestamp(ETH_HandleTypeDef *heth, ETH_TimeStampTypeDef *timestamp);
1927HAL_StatusTypeDef HAL_ETH_RegisterTxPtpCallback(ETH_HandleTypeDef *heth, pETH_txPtpCallbackTypeDef txPtpCallback);
1928HAL_StatusTypeDef HAL_ETH_UnRegisterTxPtpCallback(ETH_HandleTypeDef *heth);
1929#endif /* HAL_ETH_USE_PTP */
1930
1931HAL_StatusTypeDef HAL_ETH_Transmit(ETH_HandleTypeDef *heth, ETH_TxPacketConfigTypeDef *pTxConfig, uint32_t Timeout);
1932HAL_StatusTypeDef HAL_ETH_Transmit_IT(ETH_HandleTypeDef *heth, ETH_TxPacketConfigTypeDef *pTxConfig);
1933
1934HAL_StatusTypeDef HAL_ETH_WritePHYRegister(const ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
1935 uint32_t RegValue);
1936HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
1937 uint32_t *pRegValue);
1938
1939void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth);
1940void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *heth);
1941void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth);
1942void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *heth);
1943void HAL_ETH_PMTCallback(ETH_HandleTypeDef *heth);
1944void HAL_ETH_WakeUpCallback(ETH_HandleTypeDef *heth);
1945void HAL_ETH_RxAllocateCallback(uint8_t **buff);
1946void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length);
1947void HAL_ETH_TxFreeCallback(uint32_t *buff);
1948void HAL_ETH_TxPtpCallback(uint32_t *buff, ETH_TimeStampTypeDef *timestamp);
1952
1956/* Peripheral Control functions **********************************************/
1957/* MAC & DMA Configuration APIs **********************************************/
1958HAL_StatusTypeDef HAL_ETH_GetMACConfig(const ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf);
1959HAL_StatusTypeDef HAL_ETH_GetDMAConfig(const ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf);
1960HAL_StatusTypeDef HAL_ETH_SetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf);
1961HAL_StatusTypeDef HAL_ETH_SetDMAConfig(ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf);
1962void HAL_ETH_SetMDIOClockRange(ETH_HandleTypeDef *heth);
1963
1964/* MAC VLAN Processing APIs ************************************************/
1965void HAL_ETH_SetRxVLANIdentifier(ETH_HandleTypeDef *heth, uint32_t ComparisonBits,
1966 uint32_t VLANIdentifier);
1967
1968/* MAC L2 Packet Filtering APIs **********************************************/
1969HAL_StatusTypeDef HAL_ETH_GetMACFilterConfig(const ETH_HandleTypeDef *heth, ETH_MACFilterConfigTypeDef *pFilterConfig);
1970HAL_StatusTypeDef HAL_ETH_SetMACFilterConfig(ETH_HandleTypeDef *heth, const ETH_MACFilterConfigTypeDef *pFilterConfig);
1971HAL_StatusTypeDef HAL_ETH_SetHashTable(ETH_HandleTypeDef *heth, uint32_t *pHashTable);
1972HAL_StatusTypeDef HAL_ETH_SetSourceMACAddrMatch(const ETH_HandleTypeDef *heth, uint32_t AddrNbr,
1973 const uint8_t *pMACAddr);
1974
1975/* MAC Power Down APIs *****************************************************/
1976void HAL_ETH_EnterPowerDownMode(ETH_HandleTypeDef *heth,
1977 const ETH_PowerDownConfigTypeDef *pPowerDownConfig);
1978void HAL_ETH_ExitPowerDownMode(ETH_HandleTypeDef *heth);
1979HAL_StatusTypeDef HAL_ETH_SetWakeUpFilter(ETH_HandleTypeDef *heth, uint32_t *pFilter, uint32_t Count);
1980
1984
1988/* Peripheral State functions **************************************************/
1989HAL_ETH_StateTypeDef HAL_ETH_GetState(const ETH_HandleTypeDef *heth);
1990uint32_t HAL_ETH_GetError(const ETH_HandleTypeDef *heth);
1991uint32_t HAL_ETH_GetDMAError(const ETH_HandleTypeDef *heth);
1992uint32_t HAL_ETH_GetMACError(const ETH_HandleTypeDef *heth);
1993uint32_t HAL_ETH_GetMACWakeUpSource(const ETH_HandleTypeDef *heth);
1994uint32_t HAL_ETH_GetTxBuffersNumber(const ETH_HandleTypeDef *heth);
1998
2002
2006
2010
2011#endif /* ETH */
2012
2013#ifdef __cplusplus
2014}
2015#endif
2016
2017#endif /* STM32F4xx_HAL_ETH_H */
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.