/** ****************************************************************************** * @file s70kl1281.h * @author MCD Application Team * @brief This file contains all the description of the S70KL1281 Octal memory. ****************************************************************************** * @attention * *

© Copyright (c) 2020 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under BSD 3-Clause license, * the "License"; You may not use this file except in compliance with the * License. You may obtain a copy of the License at: * opensource.org/licenses/BSD-3-Clause * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef S70KL1281_H #define S70KL1281_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "s70kl1281_conf.h" /** @addtogroup BSP * @{ */ /** @addtogroup Components * @{ */ /** @addtogroup S70KL1281 * @{ */ /** @defgroup S70KL1281_Exported_Types * @{ */ /** * @} */ /** @defgroup S70KL1281_Exported_Constants * @{ */ /** * @brief S70KL1281 Configuration */ #define S70KL1281_RAM_SIZE 0x1000000 /* 128 MBits => 16 MBytes */ /** * @brief MX25LM51245G Error codes */ #define S70KL1281_OK (0) #define S70KL1281_ERROR (-1) /****************************************************************************** * @brief S70KL1281 Registers ****************************************************************************/ /* Device Identification Register 0 */ #define S70KL1281_DIR0_ADDRESS 0x00000000U #define S70KL1281_DIR0_MANUFACTURER 0x000FU /*!< Manufacturer */ #define S70KL1281_DIR0_CADC 0x00F0U /*!< Column Address Bit Count */ #define S70KL1281_DIR0_RABC 0x1F00U /*!< Row Address Bit Count */ #define S70KL1281_DIR0_DADDR 0xC000U /*!< Die Address */ #define S70KL1281_DIR0_DADDR_DIE_0 0x0000U /*!< Die 0 Address */ #define S70KL1281_DIR0_DADDR_DIE_1 0x4000U /*!< Die 1 Address */ #define S70KL1281_DIR0_DADDR_DIE_2 0x8000U /*!< Die 2 Address */ #define S70KL1281_DIR0_DADDR_DIE_3 0xC000U /*!< Die 3 Address */ /* Device Identification Register 1 */ #define S70KL1281_DIR1_ADDRESS 0x00000002U #define S70KL1281_DIR1_DTYPE 0x000FU /*!< Device Type */ #define S70KL1281_DIR1_DTYPE_HYPERRAM 0x0000U /*!< HyperRAM Device Type */ /* Configuration Register 0 */ #define S70KL1281_CR0_ADDRESS 0x00001000U #define S70KL1281_CR0_BLENGTH 0x0003U /*!< Burst length */ #define S70KL1281_CR0_BLENGTH_128 0x0000U /*!< 128 bytes burst length */ #define S70KL1281_CR0_BLENGTH_64 0x0001U /*!< 64 bytes burst length */ #define S70KL1281_CR0_BLENGTH_16 0x0002U /*!< 16 bytes burst length */ #define S70KL1281_CR0_BLENGTH_32 0x0003U /*!< 32 bytes burst length */ #define S70KL1281_CR0_HBE 0x0004U /*!< Hybrid burst enable */ #define S70KL1281_CR0_FLE 0x0008U /*!< Fixed latency enable */ #define S70KL1281_CR0_IL 0x00F0U /*!< Initial latency */ #define S70KL1281_CR0_IL_5_CLOCK 0x0000U /*!< 5 clock latency */ #define S70KL1281_CR0_IL_6_CLOCK 0x0010U /*!< 6 clock latency */ #define S70KL1281_CR0_IL_3_CLOCK 0x00E0U /*!< 3 clock latency */ #define S70KL1281_CR0_IL_4_CLOCK 0x00F0U /*!< 4 clock latency */ #define S70KL1281_CR0_DS 0x7000U /*!< Drive strength */ #define S70KL1281_CR0_DS_34 0x0000U /*!< 34 ohms drive strength */ #define S70KL1281_CR0_DS_115 0x1000U /*!< 115 ohms drive strength */ #define S70KL1281_CR0_DS_67 0x2000U /*!< 67 ohms drive strength */ #define S70KL1281_CR0_DS_46 0x3000U /*!< 46 ohms drive strength */ #define S70KL1281_CR0_DS_34_2 0x4000U /*!< 34 ohms drive strength */ #define S70KL1281_CR0_DS_27 0x5000U /*!< 27 ohms drive strength */ #define S70KL1281_CR0_DS_22 0x6000U /*!< 22 ohms drive strength */ #define S70KL1281_CR0_DS_19 0x7000U /*!< 19 ohms drive strength */ #define S70KL1281_CR0_DPDE 0x8000U /*!< Deep Power down enable */ /* Configuration Register 1 */ #define S70KL1281_CR1_ADDRESS 0x00001002U #define S70KL1281_CR1_DRI 0x0003U /*!< Distributed refresh interval */ #define S70KL1281_CR1_DRI_2_TIMES 0x0000U /*!< 2 times default distributed refresh interval */ #define S70KL1281_CR1_DRI_4_TIMES 0x0001U /*!< 4 times default distributed refresh interval */ #define S70KL1281_CR1_DRI_DEFAULT 0x0002U /*!< Default distributed refresh interval */ #define S70KL1281_CR1_DRI_1_5_TIMES 0x0003U /*!< 1.5 times default distributed refresh interval */ /** * @} */ /** @defgroup S70KL1281_Exported_Types S70KL1281Exported Types * @{ */ typedef enum { S70KL1281_BURST_16_BYTES = S70KL1281_CR0_BLENGTH_16, S70KL1281_BURST_32_BYTES = S70KL1281_CR0_BLENGTH_32, S70KL1281_BURST_64_BYTES = S70KL1281_CR0_BLENGTH_64, S70KL1281_BURST_128_BYTES = S70KL1281_CR0_BLENGTH_128 } S70KL1281_BurstLength_t; /** * @} */ /** @defgroup S70KL1281_Exported_Functions * @{ */ /* Read/Write Array Commands **************************************************/ int32_t S70KL1281_Read(OSPI_HandleTypeDef *Ctx, uint8_t *pData, uint32_t ReadAddr, uint32_t Size); int32_t S70KL1281_Read_DMA(OSPI_HandleTypeDef *Ctx, uint8_t *pData, uint32_t ReadAddr, uint32_t Size); int32_t S70KL1281_Write(OSPI_HandleTypeDef *Ctx, uint8_t *pData, uint32_t WriteAddr, uint32_t Size); int32_t S70KL1281_Write_DMA(OSPI_HandleTypeDef *Ctx, uint8_t *pData, uint32_t WriteAddr, uint32_t Size); int32_t S70KL1281_EnableMemoryMappedMode(OSPI_HandleTypeDef *Ctx); /* Register/Setting Commands **************************************************/ int32_t S70KL1281_ReadCfgReg0(OSPI_HandleTypeDef *Ctx, uint16_t *Value); int32_t S70KL1281_WriteCfgReg0(OSPI_HandleTypeDef *Ctx, uint16_t Value, uint32_t LatencyMode, uint32_t InitialLatency); int32_t S70KL1281_ReadCfgReg1(OSPI_HandleTypeDef *Ctx, uint16_t *Value); int32_t S70KL1281_WriteCfgReg1(OSPI_HandleTypeDef *Ctx, uint16_t Value, uint32_t LatencyMode, uint32_t InitialLatency); /* ID Commands ****************************************************************/ int32_t S70KL1281_ReadID(OSPI_HandleTypeDef *Ctx, uint16_t *ID); /* Power down Commands ********************************************************/ int32_t S70KL1281_EnterPowerDown(OSPI_HandleTypeDef *Ctx, uint32_t LatencyMode, uint32_t InitialLatency); int32_t S70KL1281_LeavePowerDown(OSPI_HandleTypeDef *Ctx); /** * @} */ #ifdef __cplusplus } #endif #endif /* S70KL1281_H */ /** * @} */ /** * @} */ /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/