NetBurner 3.5.6
PDF Version |
Configuration structure for SEMC (Smart External Memory Controller) interface. More...
#include <semc.h>
Public Attributes | ||
union { | ||
uint32_t CR0 | ||
}; | ||
Control Register 0 - Basic Interface Configuration. | ||
union { | ||
uint32_t CR1 | ||
}; | ||
Control Register 1 - Primary Timing Configuration. | ||
union { | ||
uint32_t CR2 | ||
}; | ||
Control Register 2 - Extended Timing Configuration. | ||
PinIO | clkPin | |
PinIO | csPin | |
Configuration structure for SEMC (Smart External Memory Controller) interface.
This structure configures the timing and control parameters for SEMC chip selects, supporting both synchronous and asynchronous memory devices. The SEMC interface allows connection to external SRAM, PSRAM, NOR Flash, and other parallel memory devices.
The configuration is divided into three control registers (CR0, CR1, CR2) that can be accessed either as structured bit fields or as complete 32-bit values for direct register programming.
Expand for Example Usage
union { ... } SEMC_cfg_t |
Control Register 0 - Basic Interface Configuration.
Contains fundamental interface parameters including bus width, clock mode, burst length, multiplexing mode, and column address width. Can be accessed as individual bit fields or as a complete 32-bit register value.
union { ... } SEMC_cfg_t |
Control Register 1 - Primary Timing Configuration.
Defines setup, hold, and enable timing for chip select, address, write enable, and read enable signals. Parameters apply differently depending on clock mode (async vs sync). Most values are "n+1" meaning actual cycles = configured + 1.
union { ... } SEMC_cfg_t |
Control Register 2 - Extended Timing Configuration.
Contains additional timing parameters for both synchronous and asynchronous modes. Includes write data timing, latency, read cycle length, turnaround, and minimum chip select interval. Parameters are mode-specific.
uint32_t SEMC_cfg_t::addr_hold |
Address hold time: Async=(n+1), Sync=(n) cycles
uint32_t SEMC_cfg_t::addr_setup |
Address setup time before control signal (n+1 cycles)
uint32_t SEMC_cfg_t::addr_wr_hold |
Address to write hold time (n+1 cycles, async only)
bool SEMC_cfg_t::advHoldLvl |
ADV signal hold level
bool SEMC_cfg_t::advPol |
Address valid (ADV) signal polarity
SEMC_Burst_t SEMC_cfg_t::burstLen |
Burst transfer length for synchronous mode
SEMC_BusWidth_t SEMC_cfg_t::busWidth |
Data bus width (8-bit or 16-bit)
SEMC_ClkMode_t SEMC_cfg_t::clkMode |
Clock mode (asynchronous or synchronous)
PinIO SEMC_cfg_t::clkPin |
Clock output pin assignment (synchronous mode only)
SEMC_ColAddrWidth_t SEMC_cfg_t::colAddrWidth |
Column address bit width (synchronous mode)
uint32_t SEMC_cfg_t::CR0 |
Direct access to complete Control Register 0
uint32_t SEMC_cfg_t::CR1 |
Direct access to complete Control Register 1
uint32_t SEMC_cfg_t::CR2 |
Direct access to complete Control Register 2
uint32_t SEMC_cfg_t::cs_hold_min |
Minimum chip select hold time after cycle end (n+1 cycles)
uint32_t SEMC_cfg_t::cs_min_intv |
Minimum interval between chip select assertions (n+1 cycles)
uint32_t SEMC_cfg_t::cs_setup |
Chip select setup time before address valid (n+1 cycles)
PinIO SEMC_cfg_t::csPin |
Chip select output pin assignment
uint32_t SEMC_cfg_t::latency |
Read data latency cycles (n cycles, sync/burst only)
SEMC_AddrMux_t SEMC_cfg_t::muxMode |
Address/data multiplexing mode
uint32_t SEMC_cfg_t::rd_cycle |
Total read cycle length (n+1 cycles, sync/burst only)
uint32_t SEMC_cfg_t::rd_en_hi |
Read enable high period (n+1 cycles, async only)
uint32_t SEMC_cfg_t::rd_en_lo |
Read enable low pulse width (n+1 cycles, async only)
uint32_t SEMC_cfg_t::rd_hold |
Read data hold time (n cycles, sync/burst only)
uint8_t SEMC_cfg_t::RESERVED0 |
Reserved bits, must be 0
uint8_t SEMC_cfg_t::RESERVED1 |
Reserved bit, must be 0
uint32_t SEMC_cfg_t::turnaround |
Bus turnaround time between transfers (n cycles, async only)
uint32_t SEMC_cfg_t::wr_dat_hold |
Write data hold time (n cycles, sync/burst only)
uint32_t SEMC_cfg_t::wr_dat_setup |
Write data setup time (n+1 cycles, sync/burst only)
uint32_t SEMC_cfg_t::wr_en_hi |
Write enable high period (n+1 cycles, async only)
uint32_t SEMC_cfg_t::wr_en_lo |
Write enable low pulse width (n+1 cycles, async only)