You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
821 lines
34 KiB
821 lines
34 KiB
2 days ago
|
/*****************************************************************************
|
||
|
* Copyright (c) 2019, Nations Technologies Inc.
|
||
|
*
|
||
|
* All rights reserved.
|
||
|
* ****************************************************************************
|
||
|
*
|
||
|
* Redistribution and use in source and binary forms, with or without
|
||
|
* modification, are permitted provided that the following conditions are met:
|
||
|
*
|
||
|
* - Redistributions of source code must retain the above copyright notice,
|
||
|
* this list of conditions and the disclaimer below.
|
||
|
*
|
||
|
* Nations' name may not be used to endorse or promote products derived from
|
||
|
* this software without specific prior written permission.
|
||
|
*
|
||
|
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR
|
||
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
||
|
* DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||
|
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
* ****************************************************************************/
|
||
|
|
||
|
/**
|
||
|
* @file n32g45x_xfmc.h
|
||
|
* @author Nations
|
||
|
* @version v1.0.1
|
||
|
*
|
||
|
* @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved.
|
||
|
*/
|
||
|
#ifndef __N32G45X_XFMC_H__
|
||
|
#define __N32G45X_XFMC_H__
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include "n32g45x.h"
|
||
|
|
||
|
/** @addtogroup N32G45X_StdPeriph_Driver
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Exported_Types
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @brief Timing parameters For NOR/SRAM Banks
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
uint32_t AddrSetTime; /*!< Defines the number of HCLK cycles to configure
|
||
|
the duration of the address setup time.
|
||
|
This parameter can be a value between 0 and 0xF.
|
||
|
@note: It is not used with synchronous NOR Flash memories. */
|
||
|
|
||
|
uint32_t AddrHoldTime; /*!< Defines the number of HCLK cycles to configure
|
||
|
the duration of the address hold time.
|
||
|
This parameter can be a value between 0 and 0xF.
|
||
|
@note: It is not used with synchronous NOR Flash memories.*/
|
||
|
|
||
|
uint32_t DataSetTime; /*!< Defines the number of HCLK cycles to configure
|
||
|
the duration of the data setup time.
|
||
|
This parameter can be a value between 1 and 0xFF.
|
||
|
@note: It is used for SRAMs, ROMs and asynchronous multiplexed NOR Flash memories. */
|
||
|
|
||
|
uint32_t BusRecoveryCycle; /*!< Defines the number of HCLK cycles to configure
|
||
|
the duration of the bus turnaround.
|
||
|
This parameter can be a value between 0 and 0xF.
|
||
|
@note: It is only used for multiplexed NOR Flash memories. */
|
||
|
|
||
|
uint32_t ClkDiv; /*!< Defines the period of CLK clock output signal, expressed in number of HCLK cycles.
|
||
|
This parameter can be a value between 1 and 0xF.
|
||
|
@note: This parameter is not used for asynchronous NOR Flash, SRAM or ROM accesses. */
|
||
|
|
||
|
uint32_t DataLatency; /*!< Defines the number of memory clock cycles to issue
|
||
|
to the memory before getting the first data.
|
||
|
The value of this parameter depends on the memory type as shown below:
|
||
|
- It must be set to 0 in case of a CRAM
|
||
|
- It is don't care in asynchronous NOR, SRAM or ROM accesses
|
||
|
- It may assume a value between 0 and 0xF in NOR Flash memories
|
||
|
with synchronous burst mode enable */
|
||
|
|
||
|
uint32_t AccMode; /*!< Specifies the asynchronous access mode.
|
||
|
This parameter can be a value of @ref XFMC_Access_Mode */
|
||
|
} XFMC_NorSramTimingInitType;
|
||
|
|
||
|
/**
|
||
|
* @brief XFMC NOR/SRAM Init structure definition
|
||
|
*/
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
XFMC_Bank1_Block *Block; /*!< Specifies the NOR/SRAM memory bank block that will be used.
|
||
|
This parameter can be a XFMC_BANK1_BLOCK1 or XFMC_BANK1_BLOCK2 */
|
||
|
|
||
|
uint32_t DataAddrMux; /*!< Specifies whether the address and data values are
|
||
|
multiplexed on the databus or not.
|
||
|
This parameter can be a value of @ref XFMC_Data_Address_Bus_Multiplexing */
|
||
|
|
||
|
uint32_t MemType; /*!< Specifies the type of external memory attached to
|
||
|
the corresponding memory bank.
|
||
|
This parameter can be a value of @ref XFMC_Memory_Type */
|
||
|
|
||
|
uint32_t MemDataWidth; /*!< Specifies the external memory device width.
|
||
|
This parameter can be a value of @ref XFMC_Data_Width */
|
||
|
|
||
|
uint32_t BurstAccMode; /*!< Enables or disables the burst access mode for Flash memory,
|
||
|
valid only with synchronous burst Flash memories.
|
||
|
This parameter can be a value of @ref XFMC_Burst_Access_Mode */
|
||
|
|
||
|
uint32_t AsynchroWait; /*!< Enables or disables wait signal during asynchronous transfers,
|
||
|
valid only with asynchronous Flash memories.
|
||
|
This parameter can be a value of @ref AsynchroWait */
|
||
|
|
||
|
uint32_t WaitSigPolarity; /*!< Specifies the wait signal polarity, valid only when accessing
|
||
|
the Flash memory in burst mode.
|
||
|
This parameter can be a value of @ref XFMC_Wait_Signal_Polarity */
|
||
|
|
||
|
uint32_t WrapMode; /*!< Enables or disables the Wrapped burst access mode for Flash
|
||
|
memory, valid only when accessing Flash memories in burst mode.
|
||
|
This parameter can be a value of @ref XFMC_Wrap_Mode */
|
||
|
|
||
|
uint32_t WaitSigConfig; /*!< Specifies if the wait signal is asserted by the memory one
|
||
|
clock cycle before the wait state or during the wait state,
|
||
|
valid only when accessing memories in burst mode.
|
||
|
This parameter can be a value of @ref XFMC_Wait_Timing */
|
||
|
|
||
|
uint32_t WriteEnable; /*!< Enables or disables the write operation in the selected bank by the XFMC.
|
||
|
This parameter can be a value of @ref XFMC_Write_Operation */
|
||
|
|
||
|
uint32_t WaitSigEnable; /*!< Enables or disables the wait-state insertion via wait
|
||
|
signal, valid for Flash memory access in burst mode.
|
||
|
This parameter can be a value of @ref XFMC_Wait_Signal */
|
||
|
|
||
|
uint32_t ExtModeEnable; /*!< Enables or disables the extended mode.
|
||
|
This parameter can be a value of @ref XFMC_Extended_Mode */
|
||
|
|
||
|
uint32_t WriteBurstEnable; /*!< Enables or disables the write burst operation.
|
||
|
This parameter can be a value of @ref XFMC_Write_Burst */
|
||
|
|
||
|
XFMC_NorSramTimingInitType* RWTimingStruct; /*!< Timing Parameters for write and read access
|
||
|
if the ExtendedMode is not used*/
|
||
|
|
||
|
XFMC_NorSramTimingInitType* WTimingStruct; /*!< Timing Parameters for write access if the
|
||
|
ExtendedMode is used*/
|
||
|
} XFMC_NorSramInitTpye;
|
||
|
|
||
|
/**
|
||
|
* @brief Timing parameters For XFMC NAND and PCCARD Banks
|
||
|
*/
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
uint32_t SetTime; /*!< Defines the number of HCLK cycles to setup address before
|
||
|
the command assertion for NAND-Flash read or write access
|
||
|
to common/Attribute or I/O memory space (depending on
|
||
|
the memory space timing to be configured).
|
||
|
This parameter can be a value between 0 and 0xFF.*/
|
||
|
|
||
|
uint32_t WaitSetTime; /*!< Defines the minimum number of HCLK cycles to assert the
|
||
|
command for NAND-Flash read or write access to
|
||
|
common/Attribute or I/O memory space (depending on the
|
||
|
memory space timing to be configured).
|
||
|
This parameter can be a number between 0x00 and 0xFF */
|
||
|
|
||
|
uint32_t HoldSetTime; /*!< Defines the number of HCLK clock cycles to hold address
|
||
|
(and data for write access) after the command deassertion
|
||
|
for NAND-Flash read or write access to common/Attribute
|
||
|
or I/O memory space (depending on the memory space timing
|
||
|
to be configured).
|
||
|
This parameter can be a number between 0x00 and 0xFF */
|
||
|
|
||
|
uint32_t HiZSetTime; /*!< Defines the number of HCLK clock cycles during which the
|
||
|
databus is kept in HiZ after the start of a NAND-Flash
|
||
|
write access to common/Attribute or I/O memory space (depending
|
||
|
on the memory space timing to be configured).
|
||
|
This parameter can be a number between 0x00 and 0xFF */
|
||
|
} XFMC_NandTimingInitType;
|
||
|
|
||
|
/**
|
||
|
* @brief XFMC NAND Init structure definition
|
||
|
*/
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
XFMC_Bank23_Module *Bank; /*!< Specifies the NAND memory bank that will be used.
|
||
|
This parameter can be XFMC_BANK2 or XFMC_BANK3 */
|
||
|
|
||
|
uint32_t WaitFeatureEnable; /*!< Enables or disables the Wait feature for the NAND Memory Bank.
|
||
|
This parameter can be any value of @ref XFMC_Wait_feature */
|
||
|
|
||
|
uint32_t MemDataWidth; /*!< Specifies the external memory device width.
|
||
|
This parameter can be any value of @ref XFMC_Data_Width */
|
||
|
|
||
|
uint32_t EccEnable; /*!< Enables or disables the ECC computation.
|
||
|
This parameter can be any value of @ref XFMC_Ecc */
|
||
|
|
||
|
uint32_t EccPageSize; /*!< Defines the page size for the extended ECC.
|
||
|
This parameter can be any value of @ref XFMC_ECC_Page_Size */
|
||
|
|
||
|
uint32_t TCLRSetTime; /*!< Defines the number of HCLK cycles to configure the
|
||
|
delay between CLE low and RE low.
|
||
|
This parameter can be a value between 0 and 0xFF. */
|
||
|
|
||
|
uint32_t TARSetTime; /*!< Defines the number of HCLK cycles to configure the
|
||
|
delay between ALE low and RE low.
|
||
|
This parameter can be a number between 0x0 and 0xFF */
|
||
|
|
||
|
XFMC_NandTimingInitType* CommSpaceTimingStruct; /*!< XFMC Common Space Timing */
|
||
|
|
||
|
XFMC_NandTimingInitType* AttrSpaceTimingStruct; /*!< XFMC Attribute Space Timing */
|
||
|
} XFMC_NandInitType;
|
||
|
|
||
|
/**
|
||
|
* @brief XFMC PCCARD Init structure definition
|
||
|
*/
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
uint32_t WaitFeatureEnable; /*!< Enables or disables the Wait feature for the Memory Bank.
|
||
|
This parameter can be any value of @ref XFMC_Wait_feature */
|
||
|
|
||
|
uint32_t TCLRSetTime; /*!< Defines the number of HCLK cycles to configure the
|
||
|
delay between CLE low and RE low.
|
||
|
This parameter can be a value between 0 and 0xFF. */
|
||
|
|
||
|
uint32_t TARSetTime; /*!< Defines the number of HCLK cycles to configure the
|
||
|
delay between ALE low and RE low.
|
||
|
This parameter can be a number between 0x0 and 0xFF */
|
||
|
|
||
|
XFMC_NandTimingInitType* CommSpaceTimingStruct; /*!< XFMC Common Space Timing */
|
||
|
|
||
|
XFMC_NandTimingInitType* AttrSpaceTimingStruct; /*!< XFMC Attribute Space Timing */
|
||
|
|
||
|
XFMC_NandTimingInitType* XFMC_IOSpaceTimingStruct; /*!< XFMC IO Space Timing */
|
||
|
} XFMC_PCCARDInitType;
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Exported_Constants
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_NORSRAM_Bank1_Reg_ResetValue
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_CR1_RESET ((uint32_t)0x000030DB)
|
||
|
#define XFMC_NOR_SRAM_CR2_RESET ((uint32_t)0x000030D2)
|
||
|
#define XFMC_NOR_SRAM_TR_RESET ((uint32_t)0x0FFFFFFF)
|
||
|
#define XFMC_NOR_SRAM_WTR_RESET ((uint32_t)0x0FFFFFFF)
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_NAND_Bank23_Reg_ResetValue
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_CTRL_RESET ((uint32_t)0x00000018)
|
||
|
#define XFMC_NAND_STS_RESET ((uint32_t)0x00000040)
|
||
|
#define XFMC_NAND_CMEMTM_RESET ((uint32_t)0xFCFCFCFC)
|
||
|
#define XFMC_NAND_ATTMEMTM_RESET ((uint32_t)0xFCFCFCFC)
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
#define IS_XFMC_NOR_SRAM_BLOCK(BLOCK) (((BLOCK) == XFMC_BANK1_BLOCK1) || ((BLOCK) == XFMC_BANK1_BLOCK2))
|
||
|
#define IS_XFMC_NAND_BANK(BANK) (((BANK) == XFMC_BANK2) || ((BANK) == XFMC_BANK3))
|
||
|
|
||
|
|
||
|
/** @addtogroup NOR_SRAM_Controller
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Data_Address_Bus_Multiplexing
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_ENABLE (XFMC_BANK1_CR_MBEN)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Data_Address_Bus_Multiplexing
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_MUX_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_MUX_ENABLE (XFMC_BANK1_CR_MUXEN)
|
||
|
#define IS_XFMC_NOR_SRAM_MUX(MUX) (((MUX) == XFMC_NOR_SRAM_MUX_DISABLE) || ((MUX) == XFMC_NOR_SRAM_MUX_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Memory_Type
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_MEM_TYPE_SRAM ((uint32_t)0x00000000)
|
||
|
#define XFMC_MEM_TYPE_PSRAM (XFMC_BANK1_CR_MTYPE_0)
|
||
|
#define XFMC_MEM_TYPE_NOR (XFMC_BANK1_CR_MTYPE_1)
|
||
|
#define IS_XFMC_NOR_SRAM_MEMORY(MEMORY) \
|
||
|
(((MEMORY) == XFMC_MEM_TYPE_SRAM) || ((MEMORY) == XFMC_MEM_TYPE_PSRAM) || ((MEMORY) == XFMC_MEM_TYPE_NOR))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Data_Width
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_DATA_WIDTH_8B ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_DATA_WIDTH_16B (XFMC_BANK1_CR_MDBW_0)
|
||
|
#define IS_XFMC_NOR_SRAM_MEMORY_WIDTH(WIDTH) (((WIDTH) == XFMC_NOR_SRAM_DATA_WIDTH_8B) || ((WIDTH) == XFMC_NOR_SRAM_DATA_WIDTH_16B))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Flash_Access_Enable
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_ACC_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_ACC_ENABLE (XFMC_BANK1_CR_ACCEN)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Burst_Access_Mode
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_BURST_MODE_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_BURST_MODE_ENABLE (XFMC_BANK1_CR_BURSTEN)
|
||
|
#define IS_XFMC_NOR_SRAM_BURSTMODE(STATE) (((STATE) == XFMC_NOR_SRAM_BURST_MODE_DISABLE) || ((STATE) == XFMC_NOR_SRAM_BURST_MODE_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Wait_Signal_Polarity
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_WAIT_SIGNAL_LOW ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_WAIT_SIGNAL_HIGH (XFMC_BANK1_CR_WAITDIR)
|
||
|
#define IS_XFMC_NOR_SRAM_WAIT_POLARITY(POLARITY) \
|
||
|
(((POLARITY) == XFMC_NOR_SRAM_WAIT_SIGNAL_LOW) || ((POLARITY) == XFMC_NOR_SRAM_WAIT_SIGNAL_HIGH))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Wrap_Mode
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_WRAP_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_WRAP_ENABLE (XFMC_BANK1_CR_WRAPEN)
|
||
|
#define IS_XFMC_NOR_SRAM_WRAP_MODE(MODE) (((MODE) == XFMC_NOR_SRAM_WRAP_DISABLE) || ((MODE) == XFMC_NOR_SRAM_WRAP_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Wait_Timing
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_NWAIT_BEFORE_STATE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_NWAIT_DURING_STATE (XFMC_BANK1_CR_WCFG)
|
||
|
#define IS_XFMC_NOR_SRAM_WAIT_SIGNAL_ACTIVE(ACTIVE) \
|
||
|
(((ACTIVE) == XFMC_NOR_SRAM_NWAIT_BEFORE_STATE) || ((ACTIVE) == XFMC_NOR_SRAM_NWAIT_DURING_STATE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Write_Operation
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_WRITE_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_WRITE_ENABLE (XFMC_BANK1_CR_WREN)
|
||
|
#define IS_XFMC_NOR_SRAM_WRITE_OPERATION(OPERATION) (((OPERATION) == XFMC_NOR_SRAM_WRITE_DISABLE) || ((OPERATION) == XFMC_NOR_SRAM_WRITE_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Wait_Signal
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_NWAIT_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_NWAIT_ENABLE (XFMC_BANK1_CR_WAITEN)
|
||
|
#define IS_XFMC_NOR_SRAM_WAITE_SIGNAL(SIGNAL) (((SIGNAL) == XFMC_NOR_SRAM_NWAIT_DISABLE) || ((SIGNAL) == XFMC_NOR_SRAM_NWAIT_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Extended_Mode
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_EXTENDED_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_EXTENDED_ENABLE (XFMC_BANK1_CR_EXTEN)
|
||
|
#define IS_XFMC_NOR_SRAM_EXTENDED_MODE(MODE) (((MODE) == XFMC_NOR_SRAM_EXTENDED_DISABLE) || ((MODE) == XFMC_NOR_SRAM_EXTENDED_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup AsynchroWait
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_ASYNC_NWAIT_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_ASYNC_NWAIT_ENABLE (XFMC_BANK1_CR_WAITASYNC)
|
||
|
#define IS_XFMC_NOR_SRAM_ASYNWAIT(STATE) (((STATE) == XFMC_NOR_SRAM_ASYNC_NWAIT_DISABLE) || ((STATE) == XFMC_NOR_SRAM_ASYNC_NWAIT_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
|
||
|
/** @addtogroup XFMC_Write_Burst
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_BURST_WRITE_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_BURST_WRITE_ENABLE (XFMC_BANK1_CR_BURSTWREN)
|
||
|
#define IS_XFMC_NOR_SRAM_WRITE_BURST(BURST) (((BURST) == XFMC_NOR_SRAM_BURST_WRITE_DISABLE) || ((BURST) == XFMC_NOR_SRAM_BURST_WRITE_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @} End of NOR_SRAM_Controller
|
||
|
*/
|
||
|
|
||
|
|
||
|
/** @addtogroup NOR_SRAM_Time_Control
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Address_Setup_Time
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_1HCLK (0x0UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_2HCLK (0x1UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_3HCLK (0x2UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_4HCLK (0x3UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_5HCLK (0x4UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_6HCLK (0x5UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_7HCLK (0x6UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_8HCLK (0x7UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_9HCLK (0x8UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_10HCLK (0x9UL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_11HCLK (0xAUL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_12HCLK (0xBUL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_13HCLK (0xCUL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_14HCLK (0xDUL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_15HCLK (0xEUL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_SETUP_TIME_16HCLK (0xFUL << XFMC_BANK1_TR_ADDBLD_SHIFT)
|
||
|
#define IS_XFMC_NOR_SRAM_ADDR_SETUP_TIME(TIME) (0==((TIME) & (~XFMC_BANK1_TR_ADDBLD_MASK)))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Address_Hold_Time
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_1HCLK (0x0UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_2HCLK (0x1UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_3HCLK (0x2UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_4HCLK (0x3UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_5HCLK (0x4UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_6HCLK (0x5UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_7HCLK (0x6UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_8HCLK (0x7UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_9HCLK (0x8UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_10HCLK (0x9UL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_11HCLK (0xAUL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_12HCLK (0xBUL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_13HCLK (0xCUL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_14HCLK (0xDUL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_15HCLK (0xEUL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ADDR_HOLD_TIME_16HCLK (0xFUL << XFMC_BANK1_TR_ADDHLD_SHIFT)
|
||
|
#define IS_XFMC_NOR_SRAM_ADDR_HOLD_TIME(TIME) (0==((TIME) & (~XFMC_BANK1_TR_ADDHLD_MASK)))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Data_Setup_Time
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_DATA_SETUP_TIME_MIN (0x01UL << XFMC_BANK1_TR_DATABLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_SETUP_TIME_MAX (0xFFUL << XFMC_BANK1_TR_DATABLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_SETUP_TIME(x) ((x) << XFMC_BANK1_TR_DATABLD_SHIFT)
|
||
|
#define IS_XFMC_NOR_SRAM_DATASETUP_TIME(TIME) ( ((TIME) >= XFMC_NOR_SRAM_DATA_SETUP_TIME_MIN) \
|
||
|
&& ((TIME) <= XFMC_NOR_SRAM_DATA_SETUP_TIME_MAX) )
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Bus_Recovery_Time
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_1HCLK (0x0UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_2HCLK (0x1UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_3HCLK (0x2UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_4HCLK (0x3UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_5HCLK (0x4UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_6HCLK (0x5UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_7HCLK (0x6UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_8HCLK (0x7UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_9HCLK (0x8UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_10HCLK (0x9UL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_11HCLK (0xAUL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_12HCLK (0xBUL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_13HCLK (0xCUL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_14HCLK (0xDUL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_15HCLK (0xEUL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_BUSRECOVERY_TIME_16HCLK (0xFUL << XFMC_BANK1_TR_BUSRECOVERY_SHIFT)
|
||
|
#define IS_XFMC_NOR_SRAM_BUSRECOVERY_TIME(TIME) (0==((TIME) & (~XFMC_BANK1_TR_BUSRECOVERY_MASK)))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_CLK_Division
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_2 (0x1UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_3 (0x2UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_4 (0x3UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_5 (0x4UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_6 (0x5UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_7 (0x6UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_8 (0x7UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_9 (0x8UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_10 (0x9UL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_11 (0xAUL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_12 (0xBUL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_13 (0xCUL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_14 (0xDUL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_15 (0xEUL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_CLK_DIV_16 (0xFUL << XFMC_BANK1_TR_CLKDIV_SHIFT)
|
||
|
#define IS_XFMC_NOR_SRAM_CLK_DIV(DIV) ( ((DIV) >= XFMC_NOR_SRAM_CLK_DIV_2) \
|
||
|
&& ((DIV) <= XFMC_NOR_SRAM_CLK_DIV_16) )
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Data_Latency
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_2CLK (0x0UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_3CLK (0x1UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_4CLK (0x2UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_5CLK (0x3UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_6CLK (0x4UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_7CLK (0x5UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_8CLK (0x6UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_9CLK (0x7UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_10CLK (0x8UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_11CLK (0x9UL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_12CLK (0xAUL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_13CLK (0xBUL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_14CLK (0xCUL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_15CLK (0xDUL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_16CLK (0xEUL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_DATA_LATENCY_17CLK (0xFUL << XFMC_BANK1_TR_DATAHLD_SHIFT)
|
||
|
#define IS_XFMC_NOR_SRAM_DATA_LATENCY(TIME) (0==((TIME) & (~XFMC_BANK1_TR_DATAHLD_MASK)))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Access_Mode
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NOR_SRAM_ACC_MODE_A ((uint32_t)0x00000000)
|
||
|
#define XFMC_NOR_SRAM_ACC_MODE_B (0x1UL << XFMC_BANK1_TR_ACCMODE_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ACC_MODE_C (0x2UL << XFMC_BANK1_TR_ACCMODE_SHIFT)
|
||
|
#define XFMC_NOR_SRAM_ACC_MODE_D (0x3UL << XFMC_BANK1_TR_ACCMODE_SHIFT)
|
||
|
#define IS_XFMC_NOR_SRAM_ACCESS_MODE(MODE) ( ((MODE) == XFMC_NOR_SRAM_ACC_MODE_A) || ((MODE) == XFMC_NOR_SRAM_ACC_MODE_B) \
|
||
|
|| ((MODE) == XFMC_NOR_SRAM_ACC_MODE_C) || ((MODE) == XFMC_NOR_SRAM_ACC_MODE_D) )
|
||
|
/**
|
||
|
* @} End of NOR_SRAM_Time_Control
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup NAND_Controller
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Wait_feature
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_NWAIT_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NAND_NWAIT_ENABLE (XFMC_CTRL_WAITEN)
|
||
|
#define IS_XFMC_NAND_WAIT_FEATURE(FEATURE) \
|
||
|
(((FEATURE) == XFMC_NAND_NWAIT_DISABLE) || ((FEATURE) == XFMC_NAND_NWAIT_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Nand_Enable
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_BANK_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NAND_BANK_ENABLE (XFMC_CTRL_BANKEN)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Bank23_Memory_Type
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_BANK23_MEM_TYPE_NAND (XFMC_CTRL_MEMTYPE)
|
||
|
#define IS_XFMC_BANK23_MEM_TYPE(TYPE) ((TYPE) == XFMC_BANK23_MEM_TYPE_NAND)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Wait_feature
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_BUS_WIDTH_8B ((uint32_t)0x00000000)
|
||
|
#define XFMC_NAND_BUS_WIDTH_16B (XFMC_CTRL_BUSWID_0)
|
||
|
#define IS_XFMC_NAND_BUS_WIDTH(WIDTH) (((WIDTH) == XFMC_NAND_BUS_WIDTH_8B)||((WIDTH) == XFMC_NAND_BUS_WIDTH_16B))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Ecc
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_ECC_DISABLE ((uint32_t)0x00000000)
|
||
|
#define XFMC_NAND_ECC_ENABLE (XFMC_CTRL_ECCEN)
|
||
|
#define IS_XFMC_ECC_STATE(STATE) (((STATE) == XFMC_NAND_ECC_DISABLE) || ((STATE) == XFMC_NAND_ECC_ENABLE))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_CLE_RE_Delay
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_CLE_DELAY_1HCLK (0x0UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_2HCLK (0x1UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_3HCLK (0x2UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_4HCLK (0x3UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_5HCLK (0x4UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_6HCLK (0x5UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_7HCLK (0x6UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_8HCLK (0x7UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_9HCLK (0x8UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_10HCLK (0x9UL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_11HCLK (0xAUL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_12HCLK (0xBUL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_13HCLK (0xCUL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_14HCLK (0xDUL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_15HCLK (0xEUL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define XFMC_NAND_CLE_DELAY_16HCLK (0xFUL << XFMC_CTRL_CRDLY_SHIFT)
|
||
|
#define IS_XFMC_NAND_CLE_DELAY(DELAY) (0==((DELAY) & (~XFMC_CTRL_CRDLY_MASK)))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_ALE_RE_Delay
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_ALE_DELAY_1HCLK (0x0UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_2HCLK (0x1UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_3HCLK (0x2UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_4HCLK (0x3UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_5HCLK (0x4UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_6HCLK (0x5UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_7HCLK (0x6UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_8HCLK (0x7UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_9HCLK (0x8UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_10HCLK (0x9UL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_11HCLK (0xAUL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_12HCLK (0xBUL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_13HCLK (0xCUL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_14HCLK (0xDUL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_15HCLK (0xEUL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define XFMC_NAND_ALE_DELAY_16HCLK (0xFUL << XFMC_CTRL_ARDLY_SHIFT)
|
||
|
#define IS_XFMC_NAND_ALE_DELAY(DELAY) (0==((DELAY) & (~XFMC_CTRL_ARDLY_MASK)))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_ECC_Page_Size
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_ECC_PAGE_256BYTES (0x0UL << XFMC_CTRL_ECCPGS_SHIFT)
|
||
|
#define XFMC_NAND_ECC_PAGE_512BYTES (0x1UL << XFMC_CTRL_ECCPGS_SHIFT)
|
||
|
#define XFMC_NAND_ECC_PAGE_1024BYTES (0x2UL << XFMC_CTRL_ECCPGS_SHIFT)
|
||
|
#define XFMC_NAND_ECC_PAGE_2048BYTES (0x3UL << XFMC_CTRL_ECCPGS_SHIFT)
|
||
|
#define XFMC_NAND_ECC_PAGE_4096BYTES (0x4UL << XFMC_CTRL_ECCPGS_SHIFT)
|
||
|
#define XFMC_NAND_ECC_PAGE_8192BYTES (0x5UL << XFMC_CTRL_ECCPGS_SHIFT)
|
||
|
#define IS_XFMC_NAND_ECC_PAGE_SIZE(SIZE) (0==((SIZE) & (~XFMC_CTRL_ECCPGS_MASK)))
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @} End of NAND_Controller
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_StatusFlag
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_FLAG_FIFO_EMPTY (XFMC_STS_FIFOEMPT)
|
||
|
#define IS_XFMC_NAND_FLAG(FLAG) ((FLAG)==XFMC_NAND_FLAG_FIFO_EMPTY)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
|
||
|
/** @addtogroup XFMC_TimeController
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Setup_Time
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_SETUP_TIME_MIN (0x00000000)
|
||
|
#define XFMC_NAND_SETUP_TIME_MAX (0x000000FF)
|
||
|
#define XFMC_NAND_SETUP_TIME_DEFAULT (0x000000FC)
|
||
|
#define IS_XFMC_NAND_SETUP_TIME(TIME) ((TIME) <= XFMC_NAND_SETUP_TIME_MAX)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Wait_Time
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_WAIT_TIME_MIN (0x00000001)
|
||
|
#define XFMC_NAND_WAIT_TIME_MAX (0x000000FF)
|
||
|
#define XFMC_NAND_WAIT_TIME_DEFAULT (0x000000FC)
|
||
|
#define IS_XFMC_NAND_WAIT_TIME(TIME) ( ((TIME) >= XFMC_NAND_WAIT_TIME_MIN) \
|
||
|
&& ((TIME) <= XFMC_NAND_WAIT_TIME_MAX) )
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Hold_Time
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_HOLD_TIME_MIN (0x00000001)
|
||
|
#define XFMC_NAND_HOLD_TIME_MAX (0x000000FF)
|
||
|
#define XFMC_NAND_HOLD_TIME_DEFAULT (0x000000FC)
|
||
|
#define IS_XFMC_NAND_HOLD_TIME(TIME) ( ((TIME) >= XFMC_NAND_HOLD_TIME_MIN) \
|
||
|
&& ((TIME) <= XFMC_NAND_HOLD_TIME_MAX) )
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_HiZ_Time
|
||
|
* @{
|
||
|
*/
|
||
|
#define XFMC_NAND_HIZ_TIME_MIN (0x00000000)
|
||
|
#define XFMC_NAND_HIZ_TIME_MAX (0x000000FF)
|
||
|
#define XFMC_NAND_HIZ_TIME_DEFAULT (0x000000FC)
|
||
|
#define IS_XFMC_NAND_HIZ_TIME(TIME) ((TIME) <= XFMC_NAND_HIZ_TIME_MAX)
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @} End of XFMC_TimeController
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Exported_Macros
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/** @addtogroup XFMC_Exported_Functions
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
void XFMC_DeInitNorSram(XFMC_Bank1_Block *Block);
|
||
|
void XFMC_DeInitNand(XFMC_Bank23_Module *Bank);
|
||
|
void XFMC_InitNorSram(XFMC_NorSramInitTpye* XFMC_NORSRAMInitStruct);
|
||
|
void XFMC_InitNand(XFMC_NandInitType* XFMC_NANDInitStruct);
|
||
|
void XFMC_InitNorSramStruct(XFMC_NorSramInitTpye* XFMC_NORSRAMInitStruct);
|
||
|
void XFMC_InitNandStruct(XFMC_NandInitType* XFMC_NANDInitStruct);
|
||
|
void XFMC_EnableNorSram(XFMC_Bank1_Block *Block, FunctionalState Cmd);
|
||
|
void XFMC_EnableNand(XFMC_Bank23_Module *Bank, FunctionalState Cmd);
|
||
|
void XFMC_EnableNandEcc(XFMC_Bank23_Module *Bank, FunctionalState Cmd);
|
||
|
void XFMC_RestartNandEcc(XFMC_Bank23_Module *Bank);
|
||
|
uint32_t XFMC_GetEcc(XFMC_Bank23_Module *Bank);
|
||
|
FlagStatus XFMC_GetFlag(XFMC_Bank23_Module *Bank, uint32_t XFMC_FLAG);
|
||
|
void XFMC_ClrFlag(XFMC_Bank23_Module *Bank, uint32_t XFMC_FLAG);
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /*__N32G45X_XFMC_H__ */
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*/
|