NEORV32 - Software Framework Documentation
Loading...
Searching...
No Matches
Data Structures
neorv32_slink.h File Reference

Stream Link Interface HW driver header file. More...

Go to the source code of this file.

Data Structures

struct  neorv32_slink_t
 

Functions

Prototypes
int neorv32_slink_available (void)
 
void neorv32_slink_setup (uint32_t irq_config)
 
void neorv32_slink_rx_clear (void)
 
void neorv32_slink_tx_clear (void)
 
int neorv32_slink_get_rx_fifo_depth (void)
 
int neorv32_slink_get_tx_fifo_depth (void)
 
uint32_t neorv32_slink_get (void)
 
void neorv32_slink_put (uint32_t tx_data)
 
int neorv32_slink_rx_status (void)
 
int neorv32_slink_tx_status (void)
 

IO Device: Stream Link Interface (SLINK)

#define NEORV32_SLINK   ((neorv32_slink_t*) (NEORV32_SLINK_BASE))
 
enum  NEORV32_SLINK_CTRL_enum {
  SLINK_CTRL_EN = 0 , SLINK_CTRL_RX_CLR = 1 , SLINK_CTRL_TX_CLR = 2 , SLINK_CTRL_RX_EMPTY = 8 ,
  SLINK_CTRL_RX_HALF = 9 , SLINK_CTRL_RX_FULL = 10 , SLINK_CTRL_TX_EMPTY = 11 , SLINK_CTRL_TX_HALF = 12 ,
  SLINK_CTRL_TX_FULL = 13 , SLINK_CTRL_IRQ_RX_NEMPTY = 16 , SLINK_CTRL_IRQ_RX_HALF = 17 , SLINK_CTRL_IRQ_RX_FULL = 18 ,
  SLINK_CTRL_IRQ_TX_EMPTY = 19 , SLINK_CTRL_IRQ_TX_NHALF = 20 , SLINK_CTRL_IRQ_TX_NFULL = 21 , SLINK_CTRL_RX_FIFO_LSB = 24 ,
  SLINK_CTRL_RX_FIFO_MSB = 27 , SLINK_CTRL_TX_FIFO_LSB = 28 , SLINK_CTRL_TX_FIFO_MSB = 31
}
 
enum  NEORV32_SLINK_STATUS_enum { SLINK_FIFO_EMPTY = 0 , SLINK_FIFO_HALF = 1 , SLINK_FIFO_FULL = 2 }
 

Detailed Description

Stream Link Interface HW driver header file.

Macro Definition Documentation

◆ NEORV32_SLINK

#define NEORV32_SLINK   ((neorv32_slink_t*) (NEORV32_SLINK_BASE))

SLINK module hardware access (neorv32_slink_t)

Enumeration Type Documentation

◆ NEORV32_SLINK_CTRL_enum

SLINK control register bits

Enumerator
SLINK_CTRL_EN 

SLINK control register(0) (r/w): SLINK unit enable

SLINK_CTRL_RX_CLR 

SLINK control register(1) (-/w): Clear RX FIFO, auto-clears

SLINK_CTRL_TX_CLR 

SLINK control register(2) (-/w): Clear TX FIFO, auto-clears

SLINK_CTRL_RX_EMPTY 

SLINK control register(8) (r/-): RX FIFO empty

SLINK_CTRL_RX_HALF 

SLINK control register(9) (r/-): RX FIFO at least half full

SLINK_CTRL_RX_FULL 

SLINK control register(10) (r/-): RX FIFO full

SLINK_CTRL_TX_EMPTY 

SLINK control register(11) (r/-): TX FIFO empty

SLINK_CTRL_TX_HALF 

SLINK control register(12) (r/-): TX FIFO at least half full

SLINK_CTRL_TX_FULL 

SLINK control register(13) (r/-): TX FIFO full

SLINK_CTRL_IRQ_RX_NEMPTY 

SLINK control register(16) (r/w): IRQ if RX FIFO not empty

SLINK_CTRL_IRQ_RX_HALF 

SLINK control register(17) (r/w): IRQ if RX FIFO at least half full

SLINK_CTRL_IRQ_RX_FULL 

SLINK control register(18) (r/w): IRQ if RX FIFO full

SLINK_CTRL_IRQ_TX_EMPTY 

SLINK control register(19) (r/w): IRQ if TX FIFO empty

SLINK_CTRL_IRQ_TX_NHALF 

SLINK control register(20) (r/w): IRQ if TX FIFO not at least half full

SLINK_CTRL_IRQ_TX_NFULL 

SLINK control register(21) (r/w): IRQ if TX FIFO not full

SLINK_CTRL_RX_FIFO_LSB 

SLINK control register(24) (r/-): log2(RX FIFO size) LSB

SLINK_CTRL_RX_FIFO_MSB 

SLINK control register(27) (r/-): log2(RX FIFO size) MSB

SLINK_CTRL_TX_FIFO_LSB 

SLINK control register(28) (r/-): log2(TX FIFO size) LSB

SLINK_CTRL_TX_FIFO_MSB 

SLINK control register(31) (r/-): log2(TX FIFO size) MSB

◆ NEORV32_SLINK_STATUS_enum

SLINK module hardware access (neorv32_slink_t)

Enumerator
SLINK_FIFO_EMPTY 

FIFO is empty

SLINK_FIFO_HALF 

FIFO is at least half full

SLINK_FIFO_FULL 

FIFO is full

Function Documentation

◆ neorv32_slink_available()

int neorv32_slink_available ( void  )

Check if stream link interface was synthesized.

Returns
0 if SLINK was not synthesized, 1 if SLINK is available.

◆ neorv32_slink_get()

uint32_t neorv32_slink_get ( void  )
inline

Read data from RX link (non-blocking)

Returns
Data received from link.

◆ neorv32_slink_get_rx_fifo_depth()

int neorv32_slink_get_rx_fifo_depth ( void  )

Get FIFO depth of RX link.

Returns
FIFO depth of RX link (1..32768).

◆ neorv32_slink_get_tx_fifo_depth()

int neorv32_slink_get_tx_fifo_depth ( void  )

Get FIFO depth of TX link.

Returns
FIFO depth of TX link (1..32768).

◆ neorv32_slink_put()

void neorv32_slink_put ( uint32_t  tx_data)
inline

Write data to TX link (non-blocking)

Parameters
[in]tx_dataData to send to link.

◆ neorv32_slink_rx_clear()

void neorv32_slink_rx_clear ( void  )

Clear RX FIFO.

◆ neorv32_slink_rx_status()

int neorv32_slink_rx_status ( void  )

Get RX link FIFO status.

Returns
FIFO status NEORV32_SLINK_STATUS_enum.

◆ neorv32_slink_setup()

void neorv32_slink_setup ( uint32_t  irq_config)

Reset, enable and configure SLINK.

Parameters
[in]irq_configConfigure RX and TX interrupt conditions (NEORV32_SLINK_CTRL_enum).

◆ neorv32_slink_tx_clear()

void neorv32_slink_tx_clear ( void  )

Clear TX FIFO.

◆ neorv32_slink_tx_status()

int neorv32_slink_tx_status ( void  )

Get TX link FIFO status.

Returns
FIFO status NEORV32_SLINK_STATUS_enum.