NXP LPC LWIP port documentation  v1.10
LWIP port for LPC devices
lpc17 EMAC driver for LWIP

Defines

#define tskRECPKT_PRIORITY   (DEFAULT_THREAD_PRIO + 4)
 Driver thread priorities.
#define tskTXCLEAN_PRIORITY   (DEFAULT_THREAD_PRIO + 5)
#define tskRECCLEAN_PRIORITY   (DEFAULT_THREAD_PRIO + 6)
#define tskRECCLEAN_RATE   (3)
#define RXINTGROUP   0
#define TXINTGROUP   0

Functions

 ALIGNED (8)
 LPC EMAC driver work data.
err_t lpc_mii_write (u32_t PhyReg, u32_t Value)
 Write a value via the MII link (blocking)
u32_t lpc_mii_is_busy (void)
 Reads current MII link busy status.
u32_t lpc_mii_read_data (void)
 Starts a read operation via the MII link (non-blocking)
void lpc_mii_read_noblock (u32_t PhyReg)
 Read a value via the MII link (blocking)
err_t lpc_mii_read (u32_t PhyReg, u32_t *data)
 Starts a read operation via the MII link (non-blocking)
s32_t lpc_rx_queue (struct netif *netif)
 Attempt to allocate and requeue a new pbuf for RX.
void lpc_enetif_input (struct netif *netif)
 Attempt to read a packet from the EMAC interface.
void lpc_tx_reclaim (struct netif *netif)
 User call for freeingTX buffers that are complete.
s32_t lpc_tx_ready (struct netif *netif)
 Polls if an available TX descriptor is ready. Can be used to determine if the low level transmit function will block.
void ENET_IRQHandler (void)
 LPC EMAC interrupt handler.
void lpc_emac_set_duplex (int full_duplex)
void lpc_emac_set_speed (int mbs_100)
err_t lpc_enetif_init (struct netif *netif)

Detailed Description

This driver is currently for the LPC177x_8x devices only, although the LPC32x0 and LPC2000 series devices share the same ethernet controller.


Function Documentation

void ENET_IRQHandler ( void  )

LPC EMAC interrupt handler.

This function handles the transmit, receive, and error interrupt of the LPC177x_8x. This is meant to be used when NO_SYS=0.

void lpc_emac_set_duplex ( int  full_duplex)

This function provides a method for the PHY to setup the EMAC for the PHY negotiated duplex mode.

Parameters:
[in]full_duplex0 = half duplex, 1 = full duplex
void lpc_emac_set_speed ( int  mbs_100)

This function provides a method for the PHY to setup the EMAC for the PHY negotiated bit rate.

Parameters:
[in]mbs_1000 = 10mbs mode, 1 = 100mbs mode
err_t lpc_enetif_init ( struct netif *  netif)

Should be called at the beginning of the program to set up the network interface.

This function should be passed as a parameter to netif_add().

Parameters:
[in]netifthe lwip network interface structure for this lpc_enetif
Returns:
ERR_OK if the loopif is initialized ERR_MEM if private data couldn't be allocated any other err_t on error
void lpc_enetif_input ( struct netif *  netif)

Attempt to read a packet from the EMAC interface.

Parameters:
[in]netifthe lwip network interface structure for this lpc_enetif
u32_t lpc_mii_is_busy ( void  )

Reads current MII link busy status.

This function will return the current MII link busy status and is meant to be used with non-blocking functions for monitor PHY status such as connection state.

Returns:
!0 if the MII link is busy, otherwise 0
err_t lpc_mii_read ( u32_t  PhyReg,
u32_t *  data 
)

Starts a read operation via the MII link (non-blocking)

This function will start a read operation on the MII link interface from a PHY or a connected device. The function will not block and the status mist be polled until complete. Once complete, the data can be read.

Parameters:
[in]PhyRegPHY register to read from
u32_t lpc_mii_read_data ( void  )

Starts a read operation via the MII link (non-blocking)

This function returns the current value in the MII data register. It is meant to be used with the non-blocking oeprations. This value should only be read after a non-block read command has been issued and the MII status has been determined to be good.

Returns:
The current value in the MII value register
void lpc_mii_read_noblock ( u32_t  PhyReg)

Read a value via the MII link (blocking)

This function will read a value on the MII link interface from a PHY or a connected device. The function will block until complete.

Parameters:
[in]PhyRegPHY register to read from
[in]dataPointer to where to save data read via MII
Returns:
0 if the read was successful, otherwise !0
err_t lpc_mii_write ( u32_t  PhyReg,
u32_t  Value 
)

Write a value via the MII link (blocking)

This function will write a value on the MII link interface to a PHY or a connected device. The function will block until complete.

Parameters:
[in]PhyRegPHY register to write to
[in]ValueValue to write
Returns:
0 if the write was successful, otherwise !0
s32_t lpc_rx_queue ( struct netif *  netif)

Attempt to allocate and requeue a new pbuf for RX.

Parameters:
[in]netifPointer to the netif structure
Returns:
1 if a packet was allocated and requeued, otherwise 0
s32_t lpc_tx_ready ( struct netif *  netif)

Polls if an available TX descriptor is ready. Can be used to determine if the low level transmit function will block.

Parameters:
[in]netifthe lwip network interface structure for this lpc_enetif
Returns:
0 if no descriptors are read, or >0
void lpc_tx_reclaim ( struct netif *  netif)

User call for freeingTX buffers that are complete.

Parameters:
[in]netifthe lwip network interface structure for this lpc_enetif