123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- #ifndef MX25LM51245G_H
- #define MX25LM51245G_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "mx25lm51245g_conf.h"
- #define MX25LM51245G_SECTOR_64K (uint32_t)(64 * 1024)
- #define MX25LM51245G_SUBSECTOR_4K (uint32_t)(4 * 1024)
- #define MX25LM51245G_FLASH_SIZE (uint32_t)(512*1024*1024/8)
- #define MX25LM51245G_PAGE_SIZE (uint32_t)256
- #define MX25LM51245G_BULK_ERASE_MAX_TIME 460000U
- #define MX25LM51245G_SECTOR_ERASE_MAX_TIME 1000U
- #define MX25LM51245G_SUBSECTOR_4K_ERASE_MAX_TIME 400U
- #define MX25LM51245G_WRITE_REG_MAX_TIME 40U
- #define MX25LM51245G_RESET_MAX_TIME 100U
- #define MX25LM51245G_AUTOPOLLING_INTERVAL_TIME 0x10U
- #define MX25LM51245G_OK (0)
- #define MX25LM51245G_ERROR (-1)
- #define MX25LM51245G_EnableMemoryMappedModeDTR MX25LM51245G_EnableDTRMemoryMappedMode
- #define MX25LM51245G_EnableMemoryMappedModeSTR MX25LM51245G_EnableSTRMemoryMappedMode
- #define MX25LM51245G_READ_CMD 0x03U
- #define MX25LM51245G_FAST_READ_CMD 0x0BU
- #define MX25LM51245G_PAGE_PROG_CMD 0x02U
- #define MX25LM51245G_SUBSECTOR_ERASE_4K_CMD 0x20U
- #define MX25LM51245G_SECTOR_ERASE_64K_CMD 0xD8U
- #define MX25LM51245G_BULK_ERASE_CMD 0x60U
- #define MX25LM51245G_4_BYTE_ADDR_READ_CMD 0x13U
- #define MX25LM51245G_4_BYTE_ADDR_FAST_READ_CMD 0x0CU
- #define MX25LM51245G_4_BYTE_PAGE_PROG_CMD 0x12U
- #define MX25LM51245G_4_BYTE_SUBSECTOR_ERASE_4K_CMD 0x21U
- #define MX25LM51245G_4_BYTE_SECTOR_ERASE_64K_CMD 0xDCU
- #define MX25LM51245G_WRITE_ENABLE_CMD 0x06U
- #define MX25LM51245G_WRITE_DISABLE_CMD 0x04U
- #define MX25LM51245G_PROG_ERASE_SUSPEND_CMD 0xB0U
- #define MX25LM51245G_PROG_ERASE_RESUME_CMD 0x30U
- #define MX25LM51245G_ENTER_DEEP_POWER_DOWN_CMD 0xB9U
- #define MX25LM51245G_SET_BURST_LENGTH_CMD 0xC0U
- #define MX25LM51245G_ENTER_SECURED_OTP_CMD 0xB1U
- #define MX25LM51245G_EXIT_SECURED_OTP_CMD 0xC1U
- #define MX25LM51245G_NOP_CMD 0x00U
- #define MX25LM51245G_RESET_ENABLE_CMD 0x66U
- #define MX25LM51245G_RESET_MEMORY_CMD 0x99U
- #define MX25LM51245G_READ_ID_CMD 0x9FU
- #define MX25LM51245G_READ_SERIAL_FLASH_DISCO_PARAM_CMD 0x5AU
- #define MX25LM51245G_READ_STATUS_REG_CMD 0x05U
- #define MX25LM51245G_READ_CFG_REG_CMD 0x15U
- #define MX25LM51245G_WRITE_STATUS_REG_CMD 0x01U
- #define MX25LM51245G_READ_CFG_REG2_CMD 0x71U
- #define MX25LM51245G_WRITE_CFG_REG2_CMD 0x72U
- #define MX25LM51245G_READ_FAST_BOOT_REG_CMD 0x16U
- #define MX25LM51245G_WRITE_FAST_BOOT_REG_CMD 0x17U
- #define MX25LM51245G_ERASE_FAST_BOOT_REG_CMD 0x18U
- #define MX25LM51245G_READ_SECURITY_REG_CMD 0x2BU
- #define MX25LM51245G_WRITE_SECURITY_REG_CMD 0x2FU
- #define MX25LM51245G_READ_LOCK_REG_CMD 0x2DU
- #define MX25LM51245G_WRITE_LOCK_REG_CMD 0x2CU
- #define MX25LM51245G_READ_DPB_REG_CMD 0xE0U
- #define MX25LM51245G_WRITE_DPB_REG_CMD 0xE1U
- #define MX25LM51245G_READ_SPB_STATUS_CMD 0xE2U
- #define MX25LM51245G_WRITE_SPB_BIT_CMD 0xE3U
- #define MX25LM51245G_ERASE_ALL_SPB_CMD 0xE4U
- #define MX25LM51245G_WRITE_PROTECT_SEL_CMD 0x68U
- #define MX25LM51245G_GANG_BLOCK_LOCK_CMD 0x7EU
- #define MX25LM51245G_GANG_BLOCK_UNLOCK_CMD 0x98U
- #define MX25LM51245G_READ_PASSWORD_REGISTER_CMD 0x27U
- #define MX25LM51245G_WRITE_PASSWORD_REGISTER_CMD 0x28U
- #define MX25LM51245G_PASSWORD_UNLOCK_CMD 0x29U
- #define MX25LM51245G_OCTA_READ_CMD 0xEC13U
- #define MX25LM51245G_OCTA_READ_DTR_CMD 0xEE11U
- #define MX25LM51245G_OCTA_PAGE_PROG_CMD 0x12EDU
- #define MX25LM51245G_OCTA_SUBSECTOR_ERASE_4K_CMD 0x21DEU
- #define MX25LM51245G_OCTA_SECTOR_ERASE_64K_CMD 0xDC23U
- #define MX25LM51245G_OCTA_BULK_ERASE_CMD 0x609FU
- #define MX25LM51245G_OCTA_WRITE_ENABLE_CMD 0x06F9U
- #define MX25LM51245G_OCTA_WRITE_DISABLE_CMD 0x04FBU
- #define MX25LM51245G_OCTA_PROG_ERASE_SUSPEND_CMD 0xB04FU
- #define MX25LM51245G_OCTA_PROG_ERASE_RESUME_CMD 0x30CFU
- #define MX25LM51245G_OCTA_ENTER_DEEP_POWER_DOWN_CMD 0xB946U
- #define MX25LM51245G_OCTA_SET_BURST_LENGTH_CMD 0xC03FU
- #define MX25LM51245G_OCTA_ENTER_SECURED_OTP_CMD 0xB14EU
- #define MX25LM51245G_OCTA_EXIT_SECURED_OTP_CMD 0xC13EU
- #define MX25LM51245G_OCTA_NOP_CMD 0x00FFU
- #define MX25LM51245G_OCTA_RESET_ENABLE_CMD 0x6699U
- #define MX25LM51245G_OCTA_RESET_MEMORY_CMD 0x9966U
- #define MX25LM51245G_OCTA_READ_ID_CMD 0x9F60U
- #define MX25LM51245G_OCTA_READ_SERIAL_FLASH_DISCO_PARAM_CMD 0x5AA5U
- #define MX25LM51245G_OCTA_READ_STATUS_REG_CMD 0x05FAU
- #define MX25LM51245G_OCTA_READ_CFG_REG_CMD 0x15EAU
- #define MX25LM51245G_OCTA_WRITE_STATUS_REG_CMD 0x01FEU
- #define MX25LM51245G_OCTA_READ_CFG_REG2_CMD 0x718EU
- #define MX25LM51245G_OCTA_WRITE_CFG_REG2_CMD 0x728DU
- #define MX25LM51245G_OCTA_READ_FAST_BOOT_REG_CMD 0x16E9U
- #define MX25LM51245G_OCTA_WRITE_FAST_BOOT_REG_CMD 0x17E8U
- #define MX25LM51245G_OCTA_ERASE_FAST_BOOT_REG_CMD 0x18E7U
- #define MX25LM51245G_OCTA_READ_SECURITY_REG_CMD 0x2BD4U
- #define MX25LM51245G_OCTA_WRITE_SECURITY_REG_CMD 0x2FD0U
- #define MX25LM51245G_OCTA_READ_LOCK_REG_CMD 0x2DD2U
- #define MX25LM51245G_OCTA_WRITE_LOCK_REG_CMD 0x2CD3U
- #define MX25LM51245G_OCTA_READ_DPB_REG_CMD 0xE01FU
- #define MX25LM51245G_OCTA_WRITE_DPB_REG_CMD 0xE11EU
- #define MX25LM51245G_OCTA_READ_SPB_STATUS_CMD 0xE21DU
- #define MX25LM51245G_OCTA_WRITE_SPB_BIT_CMD 0xE31CU
- #define MX25LM51245G_OCTA_ERASE_ALL_SPB_CMD 0xE41BU
- #define MX25LM51245G_OCTA_WRITE_PROTECT_SEL_CMD 0x6897U
- #define MX25LM51245G_OCTA_GANG_BLOCK_LOCK_CMD 0x7E81U
- #define MX25LM51245G_OCTA_GANG_BLOCK_UNLOCK_CMD 0x9867U
- #define MX25LM51245G_OCTA_READ_PASSWORD_REGISTER_CMD 0x27D8U
- #define MX25LM51245G_OCTA_WRITE_PASSWORD_REGISTER_CMD 0x28D7U
- #define MX25LM51245G_OCTA_PASSWORD_UNLOCK_CMD 0x29D6U
- #define MX25LM51245G_SR_WIP 0x01U
- #define MX25LM51245G_SR_WEL 0x02U
- #define MX25LM51245G_SR_PB 0x3CU
- #define MX25LM51245G_CR1_ODS 0x07U
- #define MX25LM51245G_CR1_TB 0x08U
- #define MX25LM51245G_CR1_PBE 0x10U
- #define MX25LM51245G_CR2_REG1_ADDR 0x00000000U
- #define MX25LM51245G_CR2_SOPI 0x01U
- #define MX25LM51245G_CR2_DOPI 0x02U
- #define MX25LM51245G_CR2_REG2_ADDR 0x00000200U
- #define MX25LM51245G_CR2_DQSPRC 0x01U
- #define MX25LM51245G_CR2_DOS 0x02U
- #define MX25LM51245G_CR2_REG3_ADDR 0x00000300U
- #define MX25LM51245G_CR2_DC 0x07U
- #define MX25LM51245G_CR2_DC_20_CYCLES 0x00U
- #define MX25LM51245G_CR2_DC_18_CYCLES 0x01U
- #define MX25LM51245G_CR2_DC_16_CYCLES 0x02U
- #define MX25LM51245G_CR2_DC_14_CYCLES 0x03U
- #define MX25LM51245G_CR2_DC_12_CYCLES 0x04U
- #define MX25LM51245G_CR2_DC_10_CYCLES 0x05U
- #define MX25LM51245G_CR2_DC_8_CYCLES 0x06U
- #define MX25LM51245G_CR2_DC_6_CYCLES 0x07U
- #define MX25LM51245G_CR2_REG4_ADDR 0x00000500U
- #define MX25LM51245G_CR2_PPTSEL 0x01U
- #define MX25LM51245G_CR2_REG5_ADDR 0x40000000U
- #define MX25LM51245G_CR2_DEFSOPI 0x01U
- #define MX25LM51245G_CR2_DEFDOPI 0x02U
- #define MX25LM51245G_SECR_SOI 0x01U
- #define MX25LM51245G_SECR_LDSO 0x02U
- #define MX25LM51245G_SECR_PSB 0x04U
- #define MX25LM51245G_SECR_ESB 0x08U
- #define MX25LM51245G_SECR_P_FAIL 0x20U
- #define MX25LM51245G_SECR_E_FAIL 0x40U
- #define MX25LM51245G_SECR_WPSEL 0x80U
- typedef struct {
- uint32_t FlashSize;
- uint32_t EraseSectorSize;
- uint32_t EraseSectorsNumber;
- uint32_t EraseSubSectorSize;
- uint32_t EraseSubSectorNumber;
- uint32_t EraseSubSector1Size;
- uint32_t EraseSubSector1Number;
- uint32_t ProgPageSize;
- uint32_t ProgPagesNumber;
- } MX25LM51245G_Info_t;
- typedef enum {
- MX25LM51245G_SPI_MODE = 0,
- MX25LM51245G_OPI_MODE
- } MX25LM51245G_Interface_t;
- typedef enum {
- MX25LM51245G_STR_TRANSFER = 0,
- MX25LM51245G_DTR_TRANSFER
- } MX25LM51245G_Transfer_t;
- typedef enum {
- MX25LM51245G_ERASE_4K = 0,
- MX25LM51245G_ERASE_64K,
- MX25LM51245G_ERASE_BULK
- } MX25LM51245G_Erase_t;
- typedef enum {
- MX25LM51245G_3BYTES_SIZE = 0,
- MX25LM51245G_4BYTES_SIZE
- } MX25LM51245G_AddressSize_t;
- int32_t MX25LM51245G_GetFlashInfo(MX25LM51245G_Info_t *pInfo);
- int32_t MX25LM51245G_AutoPollingMemReady(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_ReadSTR(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_AddressSize_t AddressSize, uint8_t *pData, uint32_t ReadAddr, uint32_t Size);
- int32_t MX25LM51245G_ReadDTR(OSPI_HandleTypeDef *Ctx, uint8_t *pData, uint32_t ReadAddr, uint32_t Size);
- int32_t MX25LM51245G_PageProgram(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_AddressSize_t AddressSize, uint8_t *pData, uint32_t WriteAddr, uint32_t Size);
- int32_t MX25LM51245G_PageProgramDTR(OSPI_HandleTypeDef *Ctx, uint8_t *pData, uint32_t WriteAddr, uint32_t Size);
- int32_t MX25LM51245G_BlockErase(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, MX25LM51245G_AddressSize_t AddressSize, uint32_t BlockAddress, MX25LM51245G_Erase_t BlockSize);
- int32_t MX25LM51245G_ChipErase(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_EnableMemoryMappedModeSTR(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_AddressSize_t AddressSize);
- int32_t MX25LM51245G_EnableMemoryMappedModeDTR(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode);
- int32_t MX25LM51245G_Suspend(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_Resume(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_WriteEnable(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_WriteDisable(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_ReadStatusRegister(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint8_t *Value);
- int32_t MX25LM51245G_WriteStatusRegister(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint8_t Value);
- int32_t MX25LM51245G_WriteCfgRegister(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint8_t Value);
- int32_t MX25LM51245G_ReadCfgRegister(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint8_t *Value);
- int32_t MX25LM51245G_WriteCfg2Register(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint32_t WriteAddr, uint8_t Value);
- int32_t MX25LM51245G_ReadCfg2Register(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint32_t ReadAddr, uint8_t *Value);
- int32_t MX25LM51245G_WriteSecurityRegister(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint8_t Value);
- int32_t MX25LM51245G_ReadSecurityRegister(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint8_t *Value);
- int32_t MX25LM51245G_ReadID(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate, uint8_t *ID);
- int32_t MX25LM51245G_ResetEnable(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_ResetMemory(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_NoOperation(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- int32_t MX25LM51245G_EnterPowerDown(OSPI_HandleTypeDef *Ctx, MX25LM51245G_Interface_t Mode, MX25LM51245G_Transfer_t Rate);
- #ifdef __cplusplus
- }
- #endif
- #endif
|