49 #include "stm32f429xx.h"
85 #define ETH_MAX_PACKET_SIZE 1524U
86 #define ETH_HEADER 14U
89 #define ETH_VLAN_TAG 4U
90 #define ETH_MIN_ETH_PAYLOAD 46U
91 #define ETH_MAX_ETH_PAYLOAD 1500U
92 #define ETH_JUMBO_FRAME_PAYLOAD 9000U
149 #define ETH_DMATXDESC_OWN 0x80000000U
150 #define ETH_DMATXDESC_IC 0x40000000U
151 #define ETH_DMATXDESC_LS 0x20000000U
152 #define ETH_DMATXDESC_FS 0x10000000U
153 #define ETH_DMATXDESC_DC 0x08000000U
154 #define ETH_DMATXDESC_DP 0x04000000U
155 #define ETH_DMATXDESC_TTSE 0x02000000U
156 #define ETH_DMATXDESC_CIC 0x00C00000U
157 #define ETH_DMATXDESC_CIC_BYPASS 0x00000000U
158 #define ETH_DMATXDESC_CIC_IPV4HEADER 0x00400000U
159 #define ETH_DMATXDESC_CIC_TCPUDPICMP_SEGMENT 0x00800000U
160 #define ETH_DMATXDESC_CIC_TCPUDPICMP_FULL 0x00C00000U
161 #define ETH_DMATXDESC_TER 0x00200000U
162 #define ETH_DMATXDESC_TCH 0x00100000U
163 #define ETH_DMATXDESC_TTSS 0x00020000U
164 #define ETH_DMATXDESC_IHE 0x00010000U
165 #define ETH_DMATXDESC_ES 0x00008000U
166 #define ETH_DMATXDESC_JT 0x00004000U
167 #define ETH_DMATXDESC_FF 0x00002000U
168 #define ETH_DMATXDESC_PCE 0x00001000U
169 #define ETH_DMATXDESC_LCA 0x00000800U
170 #define ETH_DMATXDESC_NC 0x00000400U
171 #define ETH_DMATXDESC_LCO 0x00000200U
172 #define ETH_DMATXDESC_EC 0x00000100U
173 #define ETH_DMATXDESC_VF 0x00000080U
174 #define ETH_DMATXDESC_CC 0x00000078U
175 #define ETH_DMATXDESC_ED 0x00000004U
176 #define ETH_DMATXDESC_UF 0x00000002U
177 #define ETH_DMATXDESC_DB 0x00000001U
182 #define ETH_DMATXDESC_TBS2 0x1FFF0000U
183 #define ETH_DMATXDESC_TBS1 0x00001FFFU
188 #define ETH_DMATXDESC_B1AP 0xFFFFFFFFU
193 #define ETH_DMATXDESC_B2AP 0xFFFFFFFFU
202 #define ETH_DMAPTPTXDESC_TTSL 0xFFFFFFFFU
205 #define ETH_DMAPTPTXDESC_TTSH 0xFFFFFFFFU
230 #define ETH_DMARXDESC_OWN 0x80000000U
231 #define ETH_DMARXDESC_AFM 0x40000000U
232 #define ETH_DMARXDESC_FL 0x3FFF0000U
233 #define ETH_DMARXDESC_ES 0x00008000U
234 #define ETH_DMARXDESC_DE 0x00004000U
235 #define ETH_DMARXDESC_SAF 0x00002000U
236 #define ETH_DMARXDESC_LE 0x00001000U
237 #define ETH_DMARXDESC_OE 0x00000800U
238 #define ETH_DMARXDESC_VLAN 0x00000400U
239 #define ETH_DMARXDESC_FS 0x00000200U
240 #define ETH_DMARXDESC_LS 0x00000100U
241 #define ETH_DMARXDESC_IPV4HCE 0x00000080U
242 #define ETH_DMARXDESC_LC 0x00000040U
243 #define ETH_DMARXDESC_FT 0x00000020U
244 #define ETH_DMARXDESC_RWT 0x00000010U
245 #define ETH_DMARXDESC_RE 0x00000008U
246 #define ETH_DMARXDESC_DBE 0x00000004U
247 #define ETH_DMARXDESC_CE 0x00000002U
248 #define ETH_DMARXDESC_MAMPCE 0x00000001U
253 #define ETH_DMARXDESC_DIC 0x80000000U
254 #define ETH_DMARXDESC_RBS2 0x1FFF0000U
255 #define ETH_DMARXDESC_RER 0x00008000U
256 #define ETH_DMARXDESC_RCH 0x00004000U
257 #define ETH_DMARXDESC_RBS1 0x00001FFFU
262 #define ETH_DMARXDESC_B1AP 0xFFFFFFFFU
267 #define ETH_DMARXDESC_B2AP 0xFFFFFFFFU
280 #define ETH_DMAPTPRXDESC_PTPV 0x00002000U
281 #define ETH_DMAPTPRXDESC_PTPFT 0x00001000U
282 #define ETH_DMAPTPRXDESC_PTPMT 0x00000F00U
283 #define ETH_DMAPTPRXDESC_PTPMT_SYNC 0x00000100U
284 #define ETH_DMAPTPRXDESC_PTPMT_FOLLOWUP 0x00000200U
285 #define ETH_DMAPTPRXDESC_PTPMT_DELAYREQ 0x00000300U
286 #define ETH_DMAPTPRXDESC_PTPMT_DELAYRESP 0x00000400U
287 #define ETH_DMAPTPRXDESC_PTPMT_PDELAYREQ_ANNOUNCE 0x00000500U
288 #define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESP_MANAG 0x00000600U
289 #define ETH_DMAPTPRXDESC_PTPMT_PDELAYRESPFOLLOWUP_SIGNAL 0x00000700U
290 #define ETH_DMAPTPRXDESC_IPV6PR 0x00000080U
291 #define ETH_DMAPTPRXDESC_IPV4PR 0x00000040U
292 #define ETH_DMAPTPRXDESC_IPCB 0x00000020U
293 #define ETH_DMAPTPRXDESC_IPPE 0x00000010U
294 #define ETH_DMAPTPRXDESC_IPHE 0x00000008U
295 #define ETH_DMAPTPRXDESC_IPPT 0x00000007U
296 #define ETH_DMAPTPRXDESC_IPPT_UDP 0x00000001U
297 #define ETH_DMAPTPRXDESC_IPPT_TCP 0x00000002U
298 #define ETH_DMAPTPRXDESC_IPPT_ICMP 0x00000003U
301 #define ETH_DMAPTPRXDESC_RTSL 0xFFFFFFFFU
304 #define ETH_DMAPTPRXDESC_RTSH 0xFFFFFFFFU
311 #define ETH_AUTONEGOTIATION_ENABLE 0x00000001U
312 #define ETH_AUTONEGOTIATION_DISABLE 0x00000000U
320 #define ETH_SPEED_10M 0x00000000U
321 #define ETH_SPEED_100M 0x00004000U
329 #define ETH_MODE_FULLDUPLEX 0x00000800U
330 #define ETH_MODE_HALFDUPLEX 0x00000000U
337 #define ETH_RXPOLLING_MODE 0x00000000U
338 #define ETH_RXINTERRUPT_MODE 0x00000001U
346 #define ETH_CHECKSUM_BY_HARDWARE 0x00000000U
347 #define ETH_CHECKSUM_BY_SOFTWARE 0x00000001U
355 #define ETH_MEDIA_INTERFACE_MII 0x00000000U
356 #define ETH_MEDIA_INTERFACE_RMII ((uint32_t)SYSCFG_PMC_MII_RMII_SEL)
364 #define ETH_WATCHDOG_ENABLE 0x00000000U
365 #define ETH_WATCHDOG_DISABLE 0x00800000U
373 #define ETH_JABBER_ENABLE 0x00000000U
374 #define ETH_JABBER_DISABLE 0x00400000U
382 #define ETH_INTERFRAMEGAP_96BIT 0x00000000U
383 #define ETH_INTERFRAMEGAP_88BIT 0x00020000U
384 #define ETH_INTERFRAMEGAP_80BIT 0x00040000U
385 #define ETH_INTERFRAMEGAP_72BIT 0x00060000U
386 #define ETH_INTERFRAMEGAP_64BIT 0x00080000U
387 #define ETH_INTERFRAMEGAP_56BIT 0x000A0000U
388 #define ETH_INTERFRAMEGAP_48BIT 0x000C0000U
389 #define ETH_INTERFRAMEGAP_40BIT 0x000E0000U
397 #define ETH_CARRIERSENCE_ENABLE 0x00000000U
398 #define ETH_CARRIERSENCE_DISABLE 0x00010000U
406 #define ETH_RECEIVEOWN_ENABLE 0x00000000U
407 #define ETH_RECEIVEOWN_DISABLE 0x00002000U
415 #define ETH_LOOPBACKMODE_ENABLE 0x00001000U
416 #define ETH_LOOPBACKMODE_DISABLE 0x00000000U
424 #define ETH_CHECKSUMOFFLAOD_ENABLE 0x00000400U
425 #define ETH_CHECKSUMOFFLAOD_DISABLE 0x00000000U
433 #define ETH_RETRYTRANSMISSION_ENABLE 0x00000000U
434 #define ETH_RETRYTRANSMISSION_DISABLE 0x00000200U
442 #define ETH_AUTOMATICPADCRCSTRIP_ENABLE 0x00000080U
443 #define ETH_AUTOMATICPADCRCSTRIP_DISABLE 0x00000000U
451 #define ETH_BACKOFFLIMIT_10 0x00000000U
452 #define ETH_BACKOFFLIMIT_8 0x00000020U
453 #define ETH_BACKOFFLIMIT_4 0x00000040U
454 #define ETH_BACKOFFLIMIT_1 0x00000060U
462 #define ETH_DEFFERRALCHECK_ENABLE 0x00000010U
463 #define ETH_DEFFERRALCHECK_DISABLE 0x00000000U
471 #define ETH_RECEIVEALL_ENABLE 0x80000000U
472 #define ETH_RECEIVEAll_DISABLE 0x00000000U
480 #define ETH_SOURCEADDRFILTER_NORMAL_ENABLE 0x00000200U
481 #define ETH_SOURCEADDRFILTER_INVERSE_ENABLE 0x00000300U
482 #define ETH_SOURCEADDRFILTER_DISABLE 0x00000000U
490 #define ETH_PASSCONTROLFRAMES_BLOCKALL 0x00000040U
491 #define ETH_PASSCONTROLFRAMES_FORWARDALL 0x00000080U
492 #define ETH_PASSCONTROLFRAMES_FORWARDPASSEDADDRFILTER 0x000000C0U
500 #define ETH_BROADCASTFRAMESRECEPTION_ENABLE 0x00000000U
501 #define ETH_BROADCASTFRAMESRECEPTION_DISABLE 0x00000020U
509 #define ETH_DESTINATIONADDRFILTER_NORMAL 0x00000000U
510 #define ETH_DESTINATIONADDRFILTER_INVERSE 0x00000008U
518 #define ETH_PROMISCUOUS_MODE_ENABLE 0x00000001U
519 #define ETH_PROMISCUOUS_MODE_DISABLE 0x00000000U
527 #define ETH_MULTICASTFRAMESFILTER_PERFECTHASHTABLE 0x00000404U
528 #define ETH_MULTICASTFRAMESFILTER_HASHTABLE 0x00000004U
529 #define ETH_MULTICASTFRAMESFILTER_PERFECT 0x00000000U
530 #define ETH_MULTICASTFRAMESFILTER_NONE 0x00000010U
538 #define ETH_UNICASTFRAMESFILTER_PERFECTHASHTABLE 0x00000402U
539 #define ETH_UNICASTFRAMESFILTER_HASHTABLE 0x00000002U
540 #define ETH_UNICASTFRAMESFILTER_PERFECT 0x00000000U
548 #define ETH_ZEROQUANTAPAUSE_ENABLE 0x00000000U
549 #define ETH_ZEROQUANTAPAUSE_DISABLE 0x00000080U
557 #define ETH_PAUSELOWTHRESHOLD_MINUS4 0x00000000U
558 #define ETH_PAUSELOWTHRESHOLD_MINUS28 0x00000010U
559 #define ETH_PAUSELOWTHRESHOLD_MINUS144 0x00000020U
560 #define ETH_PAUSELOWTHRESHOLD_MINUS256 0x00000030U
568 #define ETH_UNICASTPAUSEFRAMEDETECT_ENABLE 0x00000008U
569 #define ETH_UNICASTPAUSEFRAMEDETECT_DISABLE 0x00000000U
577 #define ETH_RECEIVEFLOWCONTROL_ENABLE 0x00000004U
578 #define ETH_RECEIVEFLOWCONTROL_DISABLE 0x00000000U
586 #define ETH_TRANSMITFLOWCONTROL_ENABLE 0x00000002U
587 #define ETH_TRANSMITFLOWCONTROL_DISABLE 0x00000000U
595 #define ETH_VLANTAGCOMPARISON_12BIT 0x00010000U
596 #define ETH_VLANTAGCOMPARISON_16BIT 0x00000000U
604 #define ETH_MAC_ADDRESS0 0x00000000U
605 #define ETH_MAC_ADDRESS1 0x00000008U
606 #define ETH_MAC_ADDRESS2 0x00000010U
607 #define ETH_MAC_ADDRESS3 0x00000018U
615 #define ETH_MAC_ADDRESSFILTER_SA 0x00000000U
616 #define ETH_MAC_ADDRESSFILTER_DA 0x00000008U
624 #define ETH_MAC_ADDRESSMASK_BYTE6 0x20000000U
625 #define ETH_MAC_ADDRESSMASK_BYTE5 0x10000000U
626 #define ETH_MAC_ADDRESSMASK_BYTE4 0x08000000U
627 #define ETH_MAC_ADDRESSMASK_BYTE3 0x04000000U
628 #define ETH_MAC_ADDRESSMASK_BYTE2 0x02000000U
629 #define ETH_MAC_ADDRESSMASK_BYTE1 0x01000000U
637 #define ETH_DROPTCPIPCHECKSUMERRORFRAME_ENABLE 0x00000000U
638 #define ETH_DROPTCPIPCHECKSUMERRORFRAME_DISABLE 0x04000000U
646 #define ETH_RECEIVESTOREFORWARD_ENABLE 0x02000000U
647 #define ETH_RECEIVESTOREFORWARD_DISABLE 0x00000000U
655 #define ETH_FLUSHRECEIVEDFRAME_ENABLE 0x00000000U
656 #define ETH_FLUSHRECEIVEDFRAME_DISABLE 0x01000000U
664 #define ETH_TRANSMITSTOREFORWARD_ENABLE 0x00200000U
665 #define ETH_TRANSMITSTOREFORWARD_DISABLE 0x00000000U
673 #define ETH_TRANSMITTHRESHOLDCONTROL_64BYTES 0x00000000U
674 #define ETH_TRANSMITTHRESHOLDCONTROL_128BYTES 0x00004000U
675 #define ETH_TRANSMITTHRESHOLDCONTROL_192BYTES 0x00008000U
676 #define ETH_TRANSMITTHRESHOLDCONTROL_256BYTES 0x0000C000U
677 #define ETH_TRANSMITTHRESHOLDCONTROL_40BYTES 0x00010000U
678 #define ETH_TRANSMITTHRESHOLDCONTROL_32BYTES 0x00014000U
679 #define ETH_TRANSMITTHRESHOLDCONTROL_24BYTES 0x00018000U
680 #define ETH_TRANSMITTHRESHOLDCONTROL_16BYTES 0x0001C000U
688 #define ETH_FORWARDERRORFRAMES_ENABLE 0x00000080U
689 #define ETH_FORWARDERRORFRAMES_DISABLE 0x00000000U
697 #define ETH_FORWARDUNDERSIZEDGOODFRAMES_ENABLE 0x00000040U
698 #define ETH_FORWARDUNDERSIZEDGOODFRAMES_DISABLE 0x00000000U
706 #define ETH_RECEIVEDTHRESHOLDCONTROL_64BYTES 0x00000000U
707 #define ETH_RECEIVEDTHRESHOLDCONTROL_32BYTES 0x00000008U
708 #define ETH_RECEIVEDTHRESHOLDCONTROL_96BYTES 0x00000010U
709 #define ETH_RECEIVEDTHRESHOLDCONTROL_128BYTES 0x00000018U
717 #define ETH_SECONDFRAMEOPERARTE_ENABLE 0x00000004U
718 #define ETH_SECONDFRAMEOPERARTE_DISABLE 0x00000000U
726 #define ETH_ADDRESSALIGNEDBEATS_ENABLE 0x02000000U
727 #define ETH_ADDRESSALIGNEDBEATS_DISABLE 0x00000000U
735 #define ETH_FIXEDBURST_ENABLE 0x00010000U
736 #define ETH_FIXEDBURST_DISABLE 0x00000000U
744 #define ETH_RXDMABURSTLENGTH_1BEAT 0x00020000U
745 #define ETH_RXDMABURSTLENGTH_2BEAT 0x00040000U
746 #define ETH_RXDMABURSTLENGTH_4BEAT 0x00080000U
747 #define ETH_RXDMABURSTLENGTH_8BEAT 0x00100000U
748 #define ETH_RXDMABURSTLENGTH_16BEAT 0x00200000U
749 #define ETH_RXDMABURSTLENGTH_32BEAT 0x00400000U
750 #define ETH_RXDMABURSTLENGTH_4XPBL_4BEAT 0x01020000U
751 #define ETH_RXDMABURSTLENGTH_4XPBL_8BEAT 0x01040000U
752 #define ETH_RXDMABURSTLENGTH_4XPBL_16BEAT 0x01080000U
753 #define ETH_RXDMABURSTLENGTH_4XPBL_32BEAT 0x01100000U
754 #define ETH_RXDMABURSTLENGTH_4XPBL_64BEAT 0x01200000U
755 #define ETH_RXDMABURSTLENGTH_4XPBL_128BEAT 0x01400000U
763 #define ETH_TXDMABURSTLENGTH_1BEAT 0x00000100U
764 #define ETH_TXDMABURSTLENGTH_2BEAT 0x00000200U
765 #define ETH_TXDMABURSTLENGTH_4BEAT 0x00000400U
766 #define ETH_TXDMABURSTLENGTH_8BEAT 0x00000800U
767 #define ETH_TXDMABURSTLENGTH_16BEAT 0x00001000U
768 #define ETH_TXDMABURSTLENGTH_32BEAT 0x00002000U
769 #define ETH_TXDMABURSTLENGTH_4XPBL_4BEAT 0x01000100U
770 #define ETH_TXDMABURSTLENGTH_4XPBL_8BEAT 0x01000200U
771 #define ETH_TXDMABURSTLENGTH_4XPBL_16BEAT 0x01000400U
772 #define ETH_TXDMABURSTLENGTH_4XPBL_32BEAT 0x01000800U
773 #define ETH_TXDMABURSTLENGTH_4XPBL_64BEAT 0x01001000U
774 #define ETH_TXDMABURSTLENGTH_4XPBL_128BEAT 0x01002000U
782 #define ETH_DMAENHANCEDDESCRIPTOR_ENABLE 0x00000080U
783 #define ETH_DMAENHANCEDDESCRIPTOR_DISABLE 0x00000000U
791 #define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_1_1 0x00000000U
792 #define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_2_1 0x00004000U
793 #define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_3_1 0x00008000U
794 #define ETH_DMAARBITRATION_ROUNDROBIN_RXTX_4_1 0x0000C000U
795 #define ETH_DMAARBITRATION_RXPRIORTX 0x00000002U
803 #define ETH_DMATXDESC_LASTSEGMENTS 0x40000000U
804 #define ETH_DMATXDESC_FIRSTSEGMENT 0x20000000U
812 #define ETH_DMATXDESC_CHECKSUMBYPASS 0x00000000U
813 #define ETH_DMATXDESC_CHECKSUMIPV4HEADER 0x00400000U
814 #define ETH_DMATXDESC_CHECKSUMTCPUDPICMPSEGMENT 0x00800000U
815 #define ETH_DMATXDESC_CHECKSUMTCPUDPICMPFULL 0x00C00000U
823 #define ETH_DMARXDESC_BUFFER1 0x00000000U
824 #define ETH_DMARXDESC_BUFFER2 0x00000001U
832 #define ETH_PMT_FLAG_WUFFRPR 0x80000000U
833 #define ETH_PMT_FLAG_WUFR 0x00000040U
834 #define ETH_PMT_FLAG_MPR 0x00000020U
842 #define ETH_MMC_IT_TGF 0x00200000U
843 #define ETH_MMC_IT_TGFMSC 0x00008000U
844 #define ETH_MMC_IT_TGFSC 0x00004000U
852 #define ETH_MMC_IT_RGUF 0x10020000U
853 #define ETH_MMC_IT_RFAE 0x10000040U
854 #define ETH_MMC_IT_RFCE 0x10000020U
862 #define ETH_MAC_FLAG_TST 0x00000200U
863 #define ETH_MAC_FLAG_MMCT 0x00000040U
864 #define ETH_MAC_FLAG_MMCR 0x00000020U
865 #define ETH_MAC_FLAG_MMC 0x00000010U
866 #define ETH_MAC_FLAG_PMT 0x00000008U
874 #define ETH_DMA_FLAG_TST 0x20000000U
875 #define ETH_DMA_FLAG_PMT 0x10000000U
876 #define ETH_DMA_FLAG_MMC 0x08000000U
877 #define ETH_DMA_FLAG_DATATRANSFERERROR 0x00800000U
878 #define ETH_DMA_FLAG_READWRITEERROR 0x01000000U
879 #define ETH_DMA_FLAG_ACCESSERROR 0x02000000U
880 #define ETH_DMA_FLAG_NIS 0x00010000U
881 #define ETH_DMA_FLAG_AIS 0x00008000U
882 #define ETH_DMA_FLAG_ER 0x00004000U
883 #define ETH_DMA_FLAG_FBE 0x00002000U
884 #define ETH_DMA_FLAG_ET 0x00000400U
885 #define ETH_DMA_FLAG_RWT 0x00000200U
886 #define ETH_DMA_FLAG_RPS 0x00000100U
887 #define ETH_DMA_FLAG_RBU 0x00000080U
888 #define ETH_DMA_FLAG_R 0x00000040U
889 #define ETH_DMA_FLAG_TU 0x00000020U
890 #define ETH_DMA_FLAG_RO 0x00000010U
891 #define ETH_DMA_FLAG_TJT 0x00000008U
892 #define ETH_DMA_FLAG_TBU 0x00000004U
893 #define ETH_DMA_FLAG_TPS 0x00000002U
894 #define ETH_DMA_FLAG_T 0x00000001U
902 #define ETH_MAC_IT_TST 0x00000200U
903 #define ETH_MAC_IT_MMCT 0x00000040U
904 #define ETH_MAC_IT_MMCR 0x00000020U
905 #define ETH_MAC_IT_MMC 0x00000010U
906 #define ETH_MAC_IT_PMT 0x00000008U
914 #define ETH_DMA_IT_TST 0x20000000U
915 #define ETH_DMA_IT_PMT 0x10000000U
916 #define ETH_DMA_IT_MMC 0x08000000U
917 #define ETH_DMA_IT_NIS 0x00010000U
918 #define ETH_DMA_IT_AIS 0x00008000U
919 #define ETH_DMA_IT_ER 0x00004000U
920 #define ETH_DMA_IT_FBE 0x00002000U
921 #define ETH_DMA_IT_ET 0x00000400U
922 #define ETH_DMA_IT_RWT 0x00000200U
923 #define ETH_DMA_IT_RPS 0x00000100U
924 #define ETH_DMA_IT_RBU 0x00000080U
925 #define ETH_DMA_IT_R 0x00000040U
926 #define ETH_DMA_IT_TU 0x00000020U
927 #define ETH_DMA_IT_RO 0x00000010U
928 #define ETH_DMA_IT_TJT 0x00000008U
929 #define ETH_DMA_IT_TBU 0x00000004U
930 #define ETH_DMA_IT_TPS 0x00000002U
931 #define ETH_DMA_IT_T 0x00000001U
939 #define ETH_DMA_TRANSMITPROCESS_STOPPED 0x00000000U
940 #define ETH_DMA_TRANSMITPROCESS_FETCHING 0x00100000U
941 #define ETH_DMA_TRANSMITPROCESS_WAITING 0x00200000U
942 #define ETH_DMA_TRANSMITPROCESS_READING 0x00300000U
943 #define ETH_DMA_TRANSMITPROCESS_SUSPENDED 0x00600000U
944 #define ETH_DMA_TRANSMITPROCESS_CLOSING 0x00700000U
954 #define ETH_DMA_RECEIVEPROCESS_STOPPED 0x00000000U
955 #define ETH_DMA_RECEIVEPROCESS_FETCHING 0x00020000U
956 #define ETH_DMA_RECEIVEPROCESS_WAITING 0x00060000U
957 #define ETH_DMA_RECEIVEPROCESS_SUSPENDED 0x00080000U
958 #define ETH_DMA_RECEIVEPROCESS_CLOSING 0x000A0000U
959 #define ETH_DMA_RECEIVEPROCESS_QUEUING 0x000E0000U
968 #define ETH_DMA_OVERFLOW_RXFIFOCOUNTER 0x10000000U
969 #define ETH_DMA_OVERFLOW_MISSEDFRAMECOUNTER 0x00010000U
977 #define ETH_EXTI_LINE_WAKEUP 0x00080000U
991 #define ETH_REG_WRITE_DELAY 0x00000001U
994 #define ETH_SUCCESS 0U
998 #define ETH_DMATXDESC_COLLISION_COUNTSHIFT 3U
1001 #define ETH_DMATXDESC_BUFFER2_SIZESHIFT 16U
1004 #define ETH_DMARXDESC_FRAME_LENGTHSHIFT 16U
1007 #define ETH_DMARXDESC_BUFFER2_SIZESHIFT 16U
1010 #define ETH_DMARXDESC_FRAMELENGTHSHIFT 16U
1013 #define ETH_MAC_ADDR_HBASE (uint32_t)(ETH_MAC_BASE + 0x40U)
1014 #define ETH_MAC_ADDR_LBASE (uint32_t)(ETH_MAC_BASE + 0x44U)
1017 #define ETH_MACMIIAR_CR_MASK 0xFFFFFFE3U
1020 #define ETH_MACCR_CLEAR_MASK 0xFF20810FU
1023 #define ETH_MACFCR_CLEAR_MASK 0x0000FF41U
1026 #define ETH_DMAOMR_CLEAR_MASK 0xF8DE3F23U
1029 #define ETH_WAKEUP_REGISTER_LENGTH 8U
1032 #define ETH_DMA_RX_OVERFLOW_MISSEDFRAMES_COUNTERSHIFT 17U
1039 #define MAC_ADDR0 2U
1040 #define MAC_ADDR1 0U
1041 #define MAC_ADDR2 0U
1042 #define MAC_ADDR3 0U
1043 #define MAC_ADDR4 0U
1044 #define MAC_ADDR5 0U
1047 #define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE
1048 #define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE
1049 #define ETH_RXBUFNB ((uint32_t)4U)
1050 #define ETH_TXBUFNB ((uint32_t)4U)
1055 #define LAN8742A_PHY_ADDRESS 1U
1057 #define PHY_RESET_DELAY ((uint32_t)0x000000FFU)
1059 #define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU)
1061 #define PHY_READ_TO ((uint32_t)0x0000FFFFU)
1062 #define PHY_WRITE_TO ((uint32_t)0x0000FFFFU)
1066 #define PHY_BCR ((uint16_t)0x00U)
1067 #define PHY_BSR ((uint16_t)0x01U)
1069 #define PHY_RESET ((uint16_t)0x8000U)
1070 #define PHY_LOOPBACK ((uint16_t)0x4000U)
1071 #define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U)
1072 #define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U)
1073 #define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U)
1074 #define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U)
1075 #define PHY_AUTONEGOTIATION ((uint16_t)0x1000U)
1076 #define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U)
1077 #define PHY_POWERDOWN ((uint16_t)0x0800U)
1078 #define PHY_ISOLATE ((uint16_t)0x0400U)
1080 #define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U)
1081 #define PHY_LINKED_STATUS ((uint16_t)0x0004U)
1082 #define PHY_JABBER_DETECTION ((uint16_t)0x0002U)
1085 #define PHY_SR ((uint16_t)0x1FU)
1087 #define PHY_SPEED_STATUS ((uint16_t)0x0004U)
1088 #define PHY_DUPLEX_STATUS ((uint16_t)0x0010U)
1090 #define PHY_ISFR ((uint16_t)0x001DU)
1091 #define PHY_ISFR_INT4 ((uint16_t)0x001BU)
1100 #define USE_SPI_CRC 0U
1396 #if defined ( __GNUC__ ) && !defined (__CC_ARM)
1398 #define __ALIGN_END __attribute__ ((aligned (4)))
1400 #ifndef __ALIGN_BEGIN
1401 #define __ALIGN_BEGIN
1407 #ifndef __ALIGN_BEGIN
1408 #if defined (__CC_ARM)
1409 #define __ALIGN_BEGIN __align(4)
1410 #elif defined (__ICCARM__)
1411 #define __ALIGN_BEGIN
1422 #define UNUSED(X) (void)X
1424 #define __HAL_ETH_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DMAIER |= (__INTERRUPT__))
Communication link base class header file.
int BOOL
Boolean datatype definition.
Definition: Defines.h:124
void VOID
Datatypesess datatype definition.
Definition: Defines.h:105
unsigned long U32
Binary 32-Bit unsigned integer datatype defenition.
Definition: Defines.h:203
ETH_HandleTypeDef heth
Definition: Protocol_IP_Over_ETHERNET.cpp:82
Communication data link class.
Definition: Communication_Link.h:55
STM32F429 on-chip ETHERNET hardware abstraction layer class.
Definition: ETHERNET_STM32F429.h:1468
static err_t low_level_output(struct netif *netif, struct pbuf *p)
uint32_t Buffer2NextDescAddr
Definition: ETHERNET_STM32F429.h:1161
BOOL ETH_ConfigDMA(ETH_HandleTypeDef *heth, ETH_MACInitTypeDef *macconf)
uint32_t CarrierSense
Definition: ETHERNET_STM32F429.h:1225
uint32_t LinkStatus
Definition: ETHERNET_STM32F429.h:1375
uint32_t HashTableHigh
Definition: ETHERNET_STM32F429.h:1276
ETH_InitTypeDef Init
Definition: ETHERNET_STM32F429.h:1373
BOOL ETH_WritePHYRegister(ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t RegValue)
Definition: ETHERNET_STM32F429.cpp:601
uint32_t ForwardUndersizedGoodFrames
Definition: ETHERNET_STM32F429.h:1336
uint32_t RetryTransmission
Definition: ETHERNET_STM32F429.h:1239
uint32_t buffer
Definition: ETHERNET_STM32F429.h:1186
uint32_t DescriptorSkipLength
Definition: ETHERNET_STM32F429.h:1362
VOID Stop_TX_Operation()
Stop TX operation.
uint32_t ReceiveStoreForward
Definition: ETHERNET_STM32F429.h:1321
uint32_t ForwardErrorFrames
Definition: ETHERNET_STM32F429.h:1333
uint32_t RxDMABurstLength
Definition: ETHERNET_STM32F429.h:1353
uint32_t FixedBurst
Definition: ETHERNET_STM32F429.h:1350
uint32_t VLANTagComparison
Definition: ETHERNET_STM32F429.h:1304
uint32_t PauseLowThreshold
Definition: ETHERNET_STM32F429.h:1288
uint32_t DeferralCheck
Definition: ETHERNET_STM32F429.h:1249
uint32_t VLANTagIdentifier
Definition: ETHERNET_STM32F429.h:1308
uint32_t Jabber
Definition: ETHERNET_STM32F429.h:1217
static void ETH_DMAReceptionEnable(ETH_HandleTypeDef *heth)
static struct pbuf * low_level_input(struct netif *netif)
uint32_t ChecksumMode
Definition: ETHERNET_STM32F429.h:1145
BOOL ETH_DMARxDescListInit(ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount)
initialises the DMA Rx descriptors in chain mode.
Definition: ETHERNET_STM32F429.cpp:1043
uint32_t TransmitFlowControl
Definition: ETHERNET_STM32F429.h:1300
BOOL ETH_GetReceivedFrame(ETH_HandleTypeDef *heth)
**
Definition: ETHERNET_STM32F429.cpp:1826
VOID Interrupt_Enable(U32 u32_Priority)
Enable interrupt method.
Definition: ETHERNET_STM32F429.cpp:134
static void ETH_MACReceptionDisable(ETH_HandleTypeDef *heth)
BOOL ETH_Stop(ETH_HandleTypeDef *heth)
Stop Ethernet MAC and DMA reception/transmission.
Definition: ETHERNET_STM32F429.cpp:1500
uint32_t DuplexMode
Definition: ETHERNET_STM32F429.h:1134
VOID Init()
Object initialisation method.
Definition: ETHERNET_STM32F429.cpp:104
static void ETH_DMATransmissionDisable(ETH_HandleTypeDef *heth)
VOID Start_TX_Operation()
Start RX operation.
uint32_t length
Definition: ETHERNET_STM32F429.h:1184
uint32_t RxMode
Definition: ETHERNET_STM32F429.h:1142
LockTypeDef
Definition: ETHERNET_STM32F429.h:1119
void ethernetif_input(struct netif *netif)
Definition: Protocol_IP_Over_ETHERNET.cpp:322
BOOL ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint16_t PHYReg, uint32_t *RegValue)
Definition: ETHERNET_STM32F429.cpp:513
uint32_t MulticastFramesFilter
Definition: ETHERNET_STM32F429.h:1270
uint32_t PauseTime
Definition: ETHERNET_STM32F429.h:1282
static VOID ETH_MACDMAConfig(ETH_HandleTypeDef *heth, uint32_t err)
VOID Done()
Object finalisation method.
Definition: ETHERNET_STM32F429.cpp:119
static void ETH_MACReceptionEnable(ETH_HandleTypeDef *heth)
uint32_t ExtendedStatus
Definition: ETHERNET_STM32F429.h:1164
LockTypeDef Lock
Definition: ETHERNET_STM32F429.h:1385
ETH_StateTypeDef
State structures definition.
Definition: ETHERNET_STM32F429.h:1193
uint32_t DMAArbitration
Definition: ETHERNET_STM32F429.h:1365
err_t ethernetif_init(struct netif *netif)
Definition: Protocol_IP_Over_ETHERNET.cpp:179
uint32_t UnicastFramesFilter
Definition: ETHERNET_STM32F429.h:1273
uint32_t InterFrameGap
Definition: ETHERNET_STM32F429.h:1222
uint32_t EnhancedDescriptorFormat
Definition: ETHERNET_STM32F429.h:1359
FlagStatus
Definition: ETHERNET_STM32F429.h:1390
uint32_t ReceiveOwn
Definition: ETHERNET_STM32F429.h:1228
uint32_t BroadcastFramesReception
Definition: ETHERNET_STM32F429.h:1261
static void ETH_MACTransmissionDisable(ETH_HandleTypeDef *heth)
uint32_t MediaInterface
Definition: ETHERNET_STM32F429.h:1148
uint32_t FlushReceivedFrame
Definition: ETHERNET_STM32F429.h:1324
static void ETH_DMATransmissionEnable(ETH_HandleTypeDef *heth)
ETH_DMADescTypeDef * TxDesc
Definition: ETHERNET_STM32F429.h:1379
ETH_DMARxFrameInfos RxFrameInfos
Definition: ETHERNET_STM32F429.h:1381
uint32_t BackOffLimit
Definition: ETHERNET_STM32F429.h:1246
uint32_t DestinationAddrFilter
Definition: ETHERNET_STM32F429.h:1264
uint32_t Speed
Definition: ETHERNET_STM32F429.h:1131
uint32_t SegCount
Definition: ETHERNET_STM32F429.h:1182
uint32_t SourceAddrFilter
Definition: ETHERNET_STM32F429.h:1255
VOID Interrupt()
Interrupt service method.
Definition: ETHERNET_STM32F429.cpp:167
uint32_t ReceiveAll
Definition: ETHERNET_STM32F429.h:1252
uint32_t TimeStampLow
Definition: ETHERNET_STM32F429.h:1168
ETH_DMADescTypeDef * FSRxDesc
Definition: ETHERNET_STM32F429.h:1178
uint32_t TransmitStoreForward
Definition: ETHERNET_STM32F429.h:1327
BOOL ETH_ConfigMAC(ETH_HandleTypeDef *heth, ETH_MACInitTypeDef *macconf)
Set ETH MAC Configuration.
Definition: ETHERNET_STM32F429.cpp:1140
uint32_t ReceiveThresholdControl
Definition: ETHERNET_STM32F429.h:1340
BOOL PHY_ETH_Init(ETH_HandleTypeDef *heth)
Definition: ETHERNET_STM32F429.cpp:178
static void ETH_MACTransmissionEnable(ETH_HandleTypeDef *heth)
uint32_t PassControlFrames
Definition: ETHERNET_STM32F429.h:1258
uint32_t Watchdog
Definition: ETHERNET_STM32F429.h:1212
uint32_t Buffer1Addr
Definition: ETHERNET_STM32F429.h:1159
uint32_t SecondFrameOperate
Definition: ETHERNET_STM32F429.h:1343
ETH_TypeDef * Instance
Definition: ETHERNET_STM32F429.h:1371
uint32_t AddressAlignedBeats
Definition: ETHERNET_STM32F429.h:1347
uint32_t ReceiveFlowControl
Definition: ETHERNET_STM32F429.h:1296
uint32_t AutoNegotiation
Definition: ETHERNET_STM32F429.h:1126
__IO ETH_StateTypeDef State
Definition: ETHERNET_STM32F429.h:1383
uint8_t * MACAddr
Definition: ETHERNET_STM32F429.h:1140
BOOL ETH_Start(ETH_HandleTypeDef *heth)
Enables Ethernet MAC and DMA reception/transmission.
Definition: ETHERNET_STM32F429.cpp:1457
uint32_t AutomaticPadCRCStrip
Definition: ETHERNET_STM32F429.h:1243
uint32_t ChecksumOffload
Definition: ETHERNET_STM32F429.h:1236
static void ETH_MACAddressConfig(ETH_HandleTypeDef *heth, uint32_t MacAddr, uint8_t *Addr)
uint32_t Reserved1
Definition: ETHERNET_STM32F429.h:1166
uint32_t DropTCPIPChecksumErrorFrame
Definition: ETHERNET_STM32F429.h:1318
BOOL ETH_DMATxDescListInit(ETH_HandleTypeDef *heth, ETH_DMADescTypeDef *DMATxDescTab, uint8_t *TxBuff, uint32_t TxBuffCount)
initialises the DMA Tx descriptors in chain mode.
Definition: ETHERNET_STM32F429.cpp:1740
uint32_t PromiscuousMode
Definition: ETHERNET_STM32F429.h:1267
uint32_t ZeroQuantaPause
Definition: ETHERNET_STM32F429.h:1285
uint32_t TxDMABurstLength
Definition: ETHERNET_STM32F429.h:1356
static VOID low_level_init(struct netif *netif)
uint32_t UnicastPauseFrameDetect
Definition: ETHERNET_STM32F429.h:1292
uint32_t HashTableLow
Definition: ETHERNET_STM32F429.h:1279
uint16_t PhyAddress
Definition: ETHERNET_STM32F429.h:1137
static void ETH_DMAReceptionDisable(ETH_HandleTypeDef *heth)
ETH_DMADescTypeDef * RxDesc
Definition: ETHERNET_STM32F429.h:1377
__IO uint32_t Status
Definition: ETHERNET_STM32F429.h:1155
ETH_DMADescTypeDef * LSRxDesc
Definition: ETHERNET_STM32F429.h:1180
uint32_t TransmitThresholdControl
Definition: ETHERNET_STM32F429.h:1330
static void ETH_FlushTransmitFIFO(ETH_HandleTypeDef *heth)
uint32_t TimeStampHigh
Definition: ETHERNET_STM32F429.h:1170
BOOL ETH_TransmitFrame(ETH_HandleTypeDef *heth, uint32_t FrameLength)
Definition: ETHERNET_STM32F429.cpp:1316
uint32_t ControlBufferSize
Definition: ETHERNET_STM32F429.h:1157
VOID Interrupt_Disable()
Disable interrupt method.
Definition: ETHERNET_STM32F429.cpp:152
uint32_t LoopbackMode
Definition: ETHERNET_STM32F429.h:1233
@ UNLOCKED
Definition: ETHERNET_STM32F429.h:1120
@ LOCKED
Definition: ETHERNET_STM32F429.h:1121
@ ETH_STATE_BUSY_RD
Definition: ETHERNET_STM32F429.h:1201
@ ETH_STATE_BUSY_TX_RX
Definition: ETHERNET_STM32F429.h:1199
@ ETH_STATE_BUSY
Definition: ETHERNET_STM32F429.h:1196
@ ETH_STATE_READY
Definition: ETHERNET_STM32F429.h:1195
@ ETH_STATE_BUSY_WR
Definition: ETHERNET_STM32F429.h:1200
@ ETH_STATE_BUSY_RX
Definition: ETHERNET_STM32F429.h:1198
@ ETH_STATE_ERROR
Definition: ETHERNET_STM32F429.h:1203
@ ETH_STATE_BUSY_TX
Definition: ETHERNET_STM32F429.h:1197
@ ETH_STATE_RESET
Definition: ETHERNET_STM32F429.h:1194
@ ETH_STATE_TIMEOUT
Definition: ETHERNET_STM32F429.h:1202
@ RESET
Definition: ETHERNET_STM32F429.h:1391
@ SET
Definition: ETHERNET_STM32F429.h:1392
s8_t err_t
Definition: err.h:96
Definition: ETHERNET_STM32F429.h:1154
ETH DMA Configuration Structure definition.
Definition: ETHERNET_STM32F429.h:1317
Received Frame Informations structure definition.
Definition: ETHERNET_STM32F429.h:1177
Definition: ETHERNET_STM32F429.h:1370
Definition: ETHERNET_STM32F429.h:1125
ETH MAC Configuration Structure definition.
Definition: ETHERNET_STM32F429.h:1211