UM0248
User manual
STR91xFA MAC/DMA controller (ENET) firmware library
Introduction
This user manual describes the driver functions developed for the STR91xFA MAC/DMA
controller (ENET).
The document also provides an example of using the driver with the uIP free TCP/IP stack
showing a webserver application.
Notes:
■
■
For details on the STR91xFA MAC/DMA controller hardware, please refer to the
STR91xFA reference manual (RM0006).
Details about the uIP stack are available at: www.sics.se/~adam/uip/
February 2008
Rev 2
1/26
www.st.com
Contents
UM0248
Contents
1
ENET overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1
1.2
ENET block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
ENET registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2
ENET firmware library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1
Package description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1
2.1.2
2.1.3
ENET FWlib folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
FWlib folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
DEMOS folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2
ENET driver functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6
2.2.7
2.2.8
2.2.9
2.2.10
2.2.11
2.2.12
2.2.13
2.2.14
2.2.15
2.2.16
2.2.17
2.2.18
2.2.19
2.2.20
2.2.21
2.2.22
ENET_Init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
ENET_SetOperatingMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
ENET_MIIWriteReg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
ENET_MIIReadReg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
ENET_RxDscrInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
ENET_TxDscrInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ENET_Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ENET_GetRxStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
ENET_GetTxStatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
ENET_UpdateRxDscr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
ENET_HandleRxPkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
ENET_UpdateTxDescr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
ENET_HandleTxPkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
ENET_ITConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
ENET_GetItSrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ENET_ClearIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ENET_PHYITConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ENET_PHYGetITSrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ENET_PHYIsolate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ENET_PHYPowerdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ENET_PHYLoopBack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ENET_PHYReset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3
Webserver demo with uIP TCP/IP stack . . . . . . . . . . . . . . . . . . . . . . . . 22
2/26
UM0248
ENET overview
1.2
ENET registers
The ENET registers are divided into two main parts: registers for MAC configuration and
registers for DMA operation and configuration.
The following tables summarize these registers:
Table 1.
ENET MAC registers
Description
MAC Control register
MAC Address High register
MAC address
ENET_MAL
ENET_MCHA
ENET_MCLA
ENET_MIIA
ENET_MIID
ENET_MCF
ENET_VL1
ENET_VL2
ENET_MTS
ENET_MRS
MAC Address Low register
Multicast Address High register
Multicast Address Low register
MII Address register
MII Data register
MII Control Frame register
VLAN1 register (TAG1 & ID1)
VLAN2 register (TAG2 & ID2)
MAC Transmission Status register
MAC Receive Status register
MAC Multicast address
or
Hash table value
PHY control:
Read/Write PHY registers
Control Frame
(Pause Command)
VLAN
TAG & ID
MAC
Rx & Tx Status Flags
Register main function
MAC Control
Register name
ENET_MCR
ENET_MAH
Table 2.
ENET DMA registers
Description
DMA Control & status register
DMA Interrupt Enable register
DMA Interrupt Status register
DMA Rx Start register
DMA Rx Control register
DMA Rx Start Address register
DMA Rx Next Address register
DMA Rx Current Address register
DMA Rx Current Transfer Count
register
DMA Rx Timeout register
DMA Rx Status register
DMA Rx
Control & Status
DMA general
Control & Status
Register main function
Register name
ENET_SCR
ENET_IER
ENET_ISR
ENET_RXSTR
ENET_RXCR
ENET_RXSAR
ENET_RXNDAR
ENET_RXCAR
ENET_RXCTCR
ENET_RXTOR
ENET_RXSR
5/26