NEORV32 Software Framework Documentation
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_sdi.h File Reference

Serial data interface controller (SPPI) HW driver header file. More...

#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  neorv32_sdi_t
 

Functions

Prototypes
int neorv32_sdi_available (void)
 
void neorv32_sdi_setup (uint32_t irq_mask)
 
void neorv32_sdi_disable (void)
 
void neorv32_sdi_enable (void)
 
int neorv32_sdi_get_fifo_depth (void)
 
void neorv32_sdi_put (uint8_t data)
 
uint8_t neorv32_sdi_get (void)
 
void neorv32_sdi_put_nonblocking (uint8_t data)
 
uint8_t neorv32_sdi_get_nonblocking (void)
 
int neorv32_sdi_rx_empty (void)
 
int neorv32_sdi_rx_full (void)
 
int neorv32_sdi_tx_empty (void)
 
int neorv32_sdi_tx_full (void)
 
void neorv32_sdi_rx_clear (void)
 
void neorv32_sdi_tx_clear (void)
 
int neorv32_sdi_check_cs (void)
 

IO Device: Serial Data Interface (SDI)

#define NEORV32_SDI   ((neorv32_sdi_t*) (NEORV32_SDI_BASE))
 
enum  NEORV32_SDI_CTRL_enum {
  SDI_CTRL_EN = 0 , SDI_CTRL_CLR_RX = 1 , SDI_CTRL_CLR_TX = 2 , SDI_CTRL_FIFO_LSB = 4 ,
  SDI_CTRL_FIFO_MSB = 7 , SDI_CTRL_IRQ_RX_NEMPTY = 16 , SDI_CTRL_IRQ_RX_FULL = 17 , SDI_CTRL_IRQ_TX_EMPTY = 18 ,
  SDI_CTRL_RX_EMPTY = 24 , SDI_CTRL_RX_FULL = 25 , SDI_CTRL_TX_EMPTY = 26 , SDI_CTRL_TX_FULL = 27 ,
  SDI_CTRL_CS_ACTIVE = 31
}
 

Detailed Description

Serial data interface controller (SPPI) HW driver header file.

Macro Definition Documentation

◆ NEORV32_SDI

#define NEORV32_SDI   ((neorv32_sdi_t*) (NEORV32_SDI_BASE))

SDI module hardware handle (neorv32_sdi_t)

Enumeration Type Documentation

◆ NEORV32_SDI_CTRL_enum

SDI control register bits

Enumerator
SDI_CTRL_EN 

SDI control register(0) (r/w): SID module enable

SDI_CTRL_CLR_RX 

SDI control register(1) (r/w): Clear RX FIFO, flag auto-clears

SDI_CTRL_CLR_TX 

SDI control register(2) (r/w): Clear TX FIFO, flag auto-clears

SDI_CTRL_FIFO_LSB 

SDI control register(4) (r/-): log2 of SDI FIFO size, LSB

SDI_CTRL_FIFO_MSB 

SDI control register(7) (r/-): log2 of SDI FIFO size, MSB

SDI_CTRL_IRQ_RX_NEMPTY 

SDI control register(16) (r/w): IRQ when RX FIFO not empty

SDI_CTRL_IRQ_RX_FULL 

SDI control register(17) (r/w): IRQ when RX FIFO full

SDI_CTRL_IRQ_TX_EMPTY 

SDI control register(18) (r/w): IRQ when TX FIFO empty

SDI_CTRL_RX_EMPTY 

SDI control register(24) (r/-): RX FIFO empty

SDI_CTRL_RX_FULL 

SDI control register(25) (r/-): RX FIFO full

SDI_CTRL_TX_EMPTY 

SDI control register(26) (r/-): TX FIFO empty

SDI_CTRL_TX_FULL 

SDI control register(27) (r/-): TX FIFO full

SDI_CTRL_CS_ACTIVE 

SDI control register(31) (r/-): Chip-select is active when set

Function Documentation

◆ neorv32_sdi_available()

int neorv32_sdi_available ( void )

Check if SDI unit was synthesized.

Returns
0 if SDI was not synthesized, non-zero if SPI is available.

◆ neorv32_sdi_check_cs()

int neorv32_sdi_check_cs ( void )

Get status of chip-select line.

Returns
Non-zero if chip-select line is enabled/active (driven low), zero otherwise.

◆ neorv32_sdi_disable()

void neorv32_sdi_disable ( void )

Disable SDI controller.

◆ neorv32_sdi_enable()

void neorv32_sdi_enable ( void )

Enable SDI controller.

◆ neorv32_sdi_get()

uint8_t neorv32_sdi_get ( void )

Get data from SDI input FIFO (blocking).

Returns
Data byte read from RX FIFO.

◆ neorv32_sdi_get_fifo_depth()

int neorv32_sdi_get_fifo_depth ( void )

Get SDI FIFO depth.

Returns
FIFO depth (number of entries).

◆ neorv32_sdi_get_nonblocking()

uint8_t neorv32_sdi_get_nonblocking ( void )

Get data from SDI input FIFO (non-blocking).

Returns
Data byte read from RX FIFO.

◆ neorv32_sdi_put()

void neorv32_sdi_put ( uint8_t data)

Push data to SDI output FIFO (blocking).

Parameters
[in]dataByte to push into TX FIFO.

◆ neorv32_sdi_put_nonblocking()

void neorv32_sdi_put_nonblocking ( uint8_t data)

Push data to SDI output FIFO (non-blocking).

Parameters
[in]dataByte to push into TX FIFO.

◆ neorv32_sdi_rx_clear()

void neorv32_sdi_rx_clear ( void )

Clear RX FIFO.

◆ neorv32_sdi_rx_empty()

int neorv32_sdi_rx_empty ( void )

Check if RX FIFO is empty.

Returns
Zero if RX FIFO is not empty, non-zero if RX FIFO is empty.

◆ neorv32_sdi_rx_full()

int neorv32_sdi_rx_full ( void )

Check if RX FIFO is full.

Returns
Zero if RX FIFO is not full, non-zero if RX FIFO is full.

◆ neorv32_sdi_setup()

void neorv32_sdi_setup ( uint32_t irq_mask)

Reset, enable and configure SDI controller. The SDI control register bits are listed in NEORV32_SDI_CTRL_enum.

Parameters
[in]irq_maskInterrupt configuration bit mask (CTRL's irq_* bits).

◆ neorv32_sdi_tx_clear()

void neorv32_sdi_tx_clear ( void )

Clear TX FIFO.

◆ neorv32_sdi_tx_empty()

int neorv32_sdi_tx_empty ( void )

Check if TX FIFO is empty.

Returns
Zero if RX FIFO is not empty, non-zero if RX FIFO is empty.

◆ neorv32_sdi_tx_full()

int neorv32_sdi_tx_full ( void )

Check if TX FIFO is full.

Returns
Zero if TX FIFO is not full, non-zero if TX FIFO is full.