123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- #ifndef _FSL_SDRAMC_H_
- #define _FSL_SDRAMC_H_
- #include "fsl_common.h"
- #define FSL_SDRAMC_DRIVER_VERSION (MAKE_VERSION(2, 1, 0))
- typedef enum _sdramc_refresh_time
- {
- kSDRAMC_RefreshThreeClocks = 0x0U,
- kSDRAMC_RefreshSixClocks,
- kSDRAMC_RefreshNineClocks
- } sdramc_refresh_time_t;
- typedef enum _sdramc_latency
- {
- kSDRAMC_LatencyZero = 0x0U,
- kSDRAMC_LatencyOne,
- kSDRAMC_LatencyTwo,
- kSDRAMC_LatencyThree,
- } sdramc_latency_t;
- typedef enum _sdramc_command_bit_location
- {
- kSDRAMC_Commandbit17 = 0x0U,
- kSDRAMC_Commandbit18,
- kSDRAMC_Commandbit19,
- kSDRAMC_Commandbit20,
- kSDRAMC_Commandbit21,
- kSDRAMC_Commandbit22,
- kSDRAMC_Commandbit23,
- kSDRAMC_Commandbit24
- } sdramc_command_bit_location_t;
- typedef enum _sdramc_command
- {
- kSDRAMC_ImrsCommand = 0x0U,
- kSDRAMC_PrechargeCommand,
- kSDRAMC_SelfrefreshEnterCommand,
- kSDRAMC_SelfrefreshExitCommand,
- kSDRAMC_AutoRefreshEnableCommand,
- kSDRAMC_AutoRefreshDisableCommand,
- } sdramc_command_t;
- typedef enum _sdramc_port_size
- {
- kSDRAMC_PortSize32Bit = 0x0U,
- kSDRAMC_PortSize8Bit,
- kSDRAMC_PortSize16Bit
- } sdramc_port_size_t;
- typedef enum _sdramc_block_selection
- {
- kSDRAMC_Block0 = 0x0U,
- kSDRAMC_Block1,
- } sdramc_block_selection_t;
- typedef struct _sdramc_blockctl_config
- {
- sdramc_block_selection_t block;
- sdramc_port_size_t portSize;
- sdramc_command_bit_location_t location;
- sdramc_latency_t latency;
- uint32_t address;
- uint32_t addressMask;
- } sdramc_blockctl_config_t;
- typedef struct _sdramc_refresh_config
- {
- sdramc_refresh_time_t refreshTime;
- uint32_t sdramRefreshRow;
- uint32_t busClock_Hz;
- } sdramc_refresh_config_t;
- typedef struct _sdramc_config_t
- {
- sdramc_refresh_config_t *refreshConfig;
- sdramc_blockctl_config_t *blockConfig;
- uint8_t numBlockConfig;
- } sdramc_config_t;
- #if defined(__cplusplus)
- extern "C" {
- #endif
- void SDRAMC_Init(SDRAM_Type *base, sdramc_config_t *configure);
- void SDRAMC_Deinit(SDRAM_Type *base);
- void SDRAMC_SendCommand(SDRAM_Type *base, sdramc_block_selection_t block, sdramc_command_t command);
- static inline void SDRAMC_EnableWriteProtect(SDRAM_Type *base, sdramc_block_selection_t block, bool enable)
- {
- if (enable)
- {
- base->BLOCK[block].CM |= SDRAM_CM_WP_MASK;
- }
- else
- {
- base->BLOCK[block].CM &= ~SDRAM_CM_WP_MASK;
- }
- }
- static inline void SDRAMC_EnableOperateValid(SDRAM_Type *base, sdramc_block_selection_t block, bool enable)
- {
- if (enable)
- {
- base->BLOCK[block].CM |= SDRAM_CM_V_MASK;
- }
- else
- {
- base->BLOCK[block].CM &= ~SDRAM_CM_V_MASK;
- }
- }
- #if defined(__cplusplus)
- }
- #endif
- #endif
|