NetBurner 3.5.6
PDF Version
semc.h
1/*NB_REVISION*/
2
3/*NB_COPYRIGHT*/
4
10#ifndef __SEMC_H
11#define __SEMC_H
12
13#include <predef.h>
14#include <stdint.h>
15#include <cpu_pins.h>
16
17
491enum class SEMC_BusWidth_t : uint8_t {
492 Width_8 = 0,
493 Width_16 = 1
494};
495
511enum class SEMC_AddrMux_t: uint8_t {
512 Mux = 0,
513 AdvMux = 1,
514 Bus = 2
515};
516
543enum class SEMC_ColAddrWidth_t : uint8_t {
544 Width_12 = 0,
545 Width_11 = 1,
546 Width_10 = 2,
547 Width_9 = 3,
548 Width_8 = 4,
549 Width_7 = 5,
550 Width_6 = 6,
551 Width_5 = 7,
552 Width_4 = 8,
553 Width_3 = 9,
554 Width_2 = 10,
555 Width_0 = 12
556};
557
604enum class SEMC_ClkMode_t : uint8_t {
605 Async = 0,
606 Sync = 1
607};
608
657enum class SEMC_Burst_t : uint8_t {
658 Burst_1 = 0,
659 Burst_2 = 1,
660 Burst_4 = 2,
661 Burst_8 = 3,
662 Burst_16 = 4,
663 Burst_32 = 5,
664 Burst_64 = 6
665};
666
667
804 union {
805 struct {
808 uint8_t RESERVED0 : 2;
810 uint8_t RESERVED1 : 1;
812 bool advPol : 1;
813 bool advHoldLvl : 1;
815 };
816 uint32_t CR0;
817 };
818
826 union {
827 struct {
828 uint32_t cs_setup : 4;
829 uint32_t cs_hold_min : 4;
830 uint32_t addr_setup : 4;
831 uint32_t addr_hold : 4;
832 uint32_t wr_en_lo : 4;
833 uint32_t wr_en_hi : 4;
834 uint32_t rd_en_lo : 4;
835 uint32_t rd_en_hi : 4;
836 };
837 uint32_t CR1;
838 };
839
847 union {
848 struct {
849 uint32_t wr_dat_setup : 4;
850 uint32_t wr_dat_hold : 4;
851 uint32_t addr_wr_hold : 4;
852 uint32_t turnaround : 4;
853 uint32_t latency : 4;
854 uint32_t rd_cycle : 4;
855 uint32_t cs_min_intv : 4;
856 uint32_t rd_hold : 4;
857 };
858 uint32_t CR2;
859 };
860
863};
864
865
866// Symbol for the Base Address of the SEMC memory region
867extern uint8_t SEMC_Base[];
868extern uint8_t _s_data_bus[];
869extern uint8_t _e_data_bus[];
870
871
1033void ConfigureSEMC(uint32_t baseAddr, uint32_t siz, SEMC_cfg_t &&cfg);
1034
1035
1036
1037
1038
1195void ConfigureSEMC(uint32_t baseAddr, uint32_t siz, SEMC_cfg_t &cfg);
1196
1197
1198 // groupSEMC
1199
1200
1201#endif /* ----- #ifndef __SEMC_H ----- */
1202
GPIO Pin Class.
Definition coldfire/cpu/MCF5441X/include/cpu_pins.h:15
SEMC_ClkMode_t
Clock mode configuration for SEMC interface.
Definition semc.h:604
SEMC_AddrMux_t
Address multiplexing mode configuration.
Definition semc.h:511
SEMC_BusWidth_t
Data bus width configuration for SEMC interface.
Definition semc.h:491
SEMC_Burst_t
Burst transfer length configuration.
Definition semc.h:657
SEMC_ColAddrWidth_t
Column address width configuration for memory devices.
Definition semc.h:543
void ConfigureSEMC(uint32_t baseAddr, uint32_t siz, SEMC_cfg_t &&cfg)
Configure a Chip Select for the external data bus with rvalue reference configuration.
@ Async
Asynchronous mode. Timing based on fixed delays. No clock synchronization required....
@ Sync
Synchronous mode. All signals synchronized to SEMC clock. Supports burst transfers....
@ AdvMux
Advanced multiplexed mode. Enhanced multiplexing with additional control signals for complex timing.
@ Bus
Non-multiplexed bus mode (write only). Separate address and data buses. Reads are performed as AD-Mux...
@ Mux
Multiplexed address/data mode. Address and data share the same pins. Requires ADV signal to latch add...
@ Width_8
8-bit data bus (D[7:0]). Suitable for 8-bit memory devices or low pin-count designs.
@ Width_16
16-bit data bus (D[15:0]). Suitable for 16-bit memory devices. Provides 2x throughput compared to 8-b...
@ Burst_8
8-beat burst transfer. Address once, transfer 8 consecutive data words. Optimal for cache line fills ...
@ Burst_32
32-beat burst transfer. Address once, transfer 32 consecutive data words. Maximum sequential performa...
@ Burst_4
4-beat burst transfer. Address once, transfer 4 consecutive data words. Common burst length for many ...
@ Burst_16
16-beat burst transfer. Address once, transfer 16 consecutive data words. High-performance sequential...
@ Burst_1
Single-beat transfer. No burst mode. Each access requires full address cycle. Use for random access o...
@ Burst_2
2-beat burst transfer. Address once, transfer 2 consecutive data words. Minimal burst mode.
@ Burst_64
64-beat burst transfer. Address once, transfer 64 consecutive data words. Extreme burst length for sp...
@ Width_10
10-bit column address (A[9:0]). Common for standard SDRAM configurations.
@ Width_0
No column addressing. Do not configure address pins for column mode. Use for simple SRAM/NOR Flash wi...
@ Width_5
5-bit column address (A[4:0]). Very limited column addressing.
@ Width_9
9-bit column address (A[8:0]). Used in some SDRAM and synchronous memory devices.
@ Width_7
7-bit column address (A[6:0]). Used in specialized or smaller memory configurations.
@ Width_3
3-bit column address (A[2:0]). Extremely limited addressing, rarely used.
@ Width_4
4-bit column address (A[3:0]). Minimal configuration for small burst regions.
@ Width_6
6-bit column address (A[5:0]). Minimal column addressing for compact devices.
@ Width_11
11-bit column address (A[10:0]). Common for medium-density SDRAM.
@ Width_2
2-bit column address (A[1:0]). Minimal burst addressing capability.
@ Width_12
12-bit column address (A[11:0]). Maximum column address width, suitable for large SDRAM devices.
Configuration structure for SEMC (Smart External Memory Controller) interface.
Definition semc.h:796
uint32_t wr_en_lo
Definition semc.h:832
uint8_t RESERVED0
Definition semc.h:808
uint32_t addr_wr_hold
Definition semc.h:851
uint32_t CR2
Definition semc.h:858
uint32_t CR1
Definition semc.h:837
uint32_t CR0
Definition semc.h:816
uint32_t latency
Definition semc.h:853
uint32_t cs_min_intv
Definition semc.h:855
uint32_t wr_dat_hold
Definition semc.h:850
SEMC_ColAddrWidth_t colAddrWidth
Definition semc.h:814
uint32_t rd_en_hi
Definition semc.h:835
uint32_t rd_hold
Definition semc.h:856
PinIO clkPin
Definition semc.h:861
SEMC_ClkMode_t clkMode
Definition semc.h:807
uint8_t RESERVED1
Definition semc.h:810
uint32_t cs_setup
Definition semc.h:828
SEMC_AddrMux_t muxMode
Definition semc.h:811
uint32_t rd_en_lo
Definition semc.h:834
uint32_t wr_en_hi
Definition semc.h:833
uint32_t wr_dat_setup
Definition semc.h:849
uint32_t rd_cycle
Definition semc.h:854
bool advPol
Definition semc.h:812
uint32_t turnaround
Definition semc.h:852
bool advHoldLvl
Definition semc.h:813
uint32_t cs_hold_min
Definition semc.h:829
PinIO csPin
Definition semc.h:862
uint32_t addr_hold
Definition semc.h:831
SEMC_Burst_t burstLen
Definition semc.h:809
SEMC_BusWidth_t busWidth
Definition semc.h:806
uint32_t addr_setup
Definition semc.h:830