API Reference
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_smc.c File Reference

Serial memory controller (SMC) HW driver source file. More...

#include <neorv32.h>

Functions

int neorv32_smc_available (void)
 
void neorv32_smc_setup (int dual, int msize, int cdiv, int rwait, uint8_t rcmd, uint8_t wcmd, uint32_t icmd)
 
int neorv32_smc_busy (void)
 
void neorv32_smc_pins_enable (void)
 
void neorv32_smc_pins_disable (void)
 
uint32_t neorv32_smc_get_clockspeed (void)
 
uint32_t neorv32_smc_get_baseaddr (void)
 

Detailed Description

Serial memory controller (SMC) HW driver source file.

Function Documentation

◆ neorv32_smc_available()

int neorv32_smc_available ( void )

Check if SMC was synthesized.

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

◆ neorv32_smc_busy()

int neorv32_smc_busy ( void )

Check if a SMC memory operation is in progress.

Returns
Zero if SMC is idle, non-zero if memory operation in progress.

◆ neorv32_smc_get_baseaddr()

uint32_t neorv32_smc_get_baseaddr ( void )

Get configured SMC memory base address.

Returns
Configured base address for transparent memory access.

◆ neorv32_smc_get_clockspeed()

uint32_t neorv32_smc_get_clockspeed ( void )

Get configured SMC SPI clock speed in Hz.

Returns
Configured SMC interface clock speed in Hz.

◆ neorv32_smc_pins_disable()

void neorv32_smc_pins_disable ( void )

Disable SMC control of SMC IO pins.

◆ neorv32_smc_pins_enable()

void neorv32_smc_pins_enable ( void )

Enable SMC control of SMC IO pins.

◆ neorv32_smc_setup()

void neorv32_smc_setup ( int dual,
int msize,
int cdiv,
int rwait,
uint8_t rcmd,
uint8_t wcmd,
uint32_t icmd )

Reset, configure and enable SMC.

Parameters
[in]dualEnable dual-chip mode (0,1).
[in]msizeMemory chip size select (NEORV32_SMC_MSIZE_enum).
[in]cdivClock divider (3-bit); f_SPI = f_cpu/(2*(cdiv+1)).
[in]rwaitNumber of read access dummy/wait cycles (0..15).
[in]rcmdMemory chip read command (8-bit).
[in]wcmdMemory chip write command (8-bit).
[in]icmdInitialization commands (3x8-bit, LSB-aligned).