File indexing completed on 2025-05-11 08:23:05
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #ifndef MT25TL01G_H
0023 #define MT25TL01G_H
0024
0025 #ifdef __cplusplus
0026 extern "C" {
0027 #endif
0028
0029
0030 #include "mt25tl01g_conf.h"
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046 typedef struct {
0047 uint32_t FlashSize;
0048 uint32_t EraseSectorSize;
0049 uint32_t EraseSectorsNumber;
0050 uint32_t ProgPageSize;
0051 uint32_t ProgPagesNumber;
0052 } MT25TL01G_Info;
0053
0054
0055 #define MT25TL01G_OK 0
0056 #define MT25TL01G_ERROR_INIT -1
0057 #define MT25TL01G_ERROR_COMMAND -2
0058 #define MT25TL01G_ERROR_TRANSMIT -3
0059 #define MT25TL01G_ERROR_RECEIVE -4
0060 #define MT25TL01G_ERROR_AUTOPOLLING -5
0061 #define MT25TL01G_ERROR_MEMORYMAPPED -6
0062
0063
0064
0065
0066 typedef struct
0067 {
0068 uint32_t FlashSize;
0069 uint32_t EraseSectorSize;
0070 uint32_t EraseSectorsNumber;
0071 uint32_t ProgPageSize;
0072 uint32_t ProgPagesNumber;
0073 } MT25TL01G_Info_t;
0074
0075
0076
0077
0078 typedef enum
0079 {
0080 MT25TL01G_SPI_MODE = 0,
0081 MT25TL01G_SPI_2IO_MODE,
0082 MT25TL01G_SPI_4IO_MODE,
0083 MT25TL01G_QPI_MODE
0084 } MT25TL01G_Interface_t;
0085
0086
0087
0088 typedef enum
0089 {
0090 MT25TL01G_STR_TRANSFER = 0,
0091 MT25TL01G_DTR_TRANSFER
0092 } MT25TL01G_Transfer_t;
0093
0094
0095
0096
0097 typedef enum
0098 {
0099 MT25TL01G_DUALFLASH_DISABLE = QSPI_DUALFLASH_DISABLE,
0100 MT25TL01G_DUALFLASH_ENABLE =QSPI_DUALFLASH_ENABLE
0101 } MT25TL01G_DualFlash_t;
0102
0103
0104
0105
0106
0107
0108 typedef enum
0109 {
0110 MT25TL01G_ERASE_4K = 0,
0111 MT25TL01G_ERASE_32K,
0112 MT25TL01G_ERASE_64K,
0113 MT25TL01G_ERASE_CHIP
0114 } MT25TL01G_Erase_t;
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126 #define MT25TL01G_FLASH_SIZE 0x8000000
0127 #define MT25TL01G_SECTOR_SIZE 0x10000
0128 #define MT25TL01G_SUBSECTOR_SIZE 0x1000
0129 #define MT25TL01G_PAGE_SIZE 0x100
0130
0131 #define MT25TL01G_DIE_ERASE_MAX_TIME 460000
0132 #define MT25TL01G_SECTOR_ERASE_MAX_TIME 1000
0133 #define MT25TL01G_SUBSECTOR_ERASE_MAX_TIME 400
0134
0135
0136
0137
0138
0139 #define MT25TL01G_RESET_ENABLE_CMD 0x66
0140 #define MT25TL01G_RESET_MEMORY_CMD 0x99
0141
0142
0143 #define MT25TL01G_READ_ID_CMD 0x9E
0144 #define MT25TL01G_READ_ID_CMD2 0x9F
0145 #define MT25TL01G_MULTIPLE_IO_READ_ID_CMD 0xAF
0146 #define MT25TL01G_READ_SERIAL_FLASH_DISCO_PARAM_CMD 0x5A
0147
0148
0149 #define MT25TL01G_READ_CMD 0x03
0150 #define MT25TL01G_READ_4_BYTE_ADDR_CMD 0x13
0151
0152 #define MT25TL01G_FAST_READ_CMD 0x0B
0153 #define MT25TL01G_FAST_READ_DTR_CMD 0x0D
0154 #define MT25TL01G_FAST_READ_4_BYTE_ADDR_CMD 0x0C
0155 #define MT25TL01G_FAST_READ_4_BYTE_DTR_CMD 0x0E
0156
0157 #define MT25TL01G_DUAL_OUT_FAST_READ_CMD 0x3B
0158 #define MT25TL01G_DUAL_OUT_FAST_READ_DTR_CMD 0x3D
0159 #define MT25TL01G_DUAL_OUT_FAST_READ_4_BYTE_ADDR_CMD 0x3C
0160
0161 #define MT25TL01G_DUAL_INOUT_FAST_READ_CMD 0xBB
0162 #define MT25TL01G_DUAL_INOUT_FAST_READ_DTR_CMD 0xBD
0163 #define MT25TL01G_DUAL_INOUT_FAST_READ_4_BYTE_ADDR_CMD 0xBC
0164
0165 #define MT25TL01G_QUAD_OUT_FAST_READ_CMD 0x6B
0166 #define MT25TL01G_QUAD_OUT_FAST_READ_DTR_CMD 0x6D
0167 #define MT25TL01G_QUAD_OUT_FAST_READ_4_BYTE_ADDR_CMD 0x6C
0168
0169 #define MT25TL01G_QUAD_INOUT_FAST_READ_CMD 0xEB
0170 #define MT25TL01G_QUAD_INOUT_FAST_READ_DTR_CMD 0xED
0171 #define MT25TL01G_QUAD_INOUT_FAST_READ_4_BYTE_ADDR_CMD 0xEC
0172 #define MT25TL01G_QUAD_INOUT_FAST_READ_4_BYTE_DTR_CMD 0xEE
0173
0174 #define MT25TL01G_WRITE_ENABLE_CMD 0x06
0175 #define MT25TL01G_WRITE_DISABLE_CMD 0x04
0176
0177
0178 #define MT25TL01G_READ_STATUS_REG_CMD 0x05
0179 #define MT25TL01G_WRITE_STATUS_REG_CMD 0x01
0180
0181 #define MT25TL01G_READ_LOCK_REG_CMD 0xE8
0182 #define MT25TL01G_WRITE_LOCK_REG_CMD 0xE5
0183
0184 #define MT25TL01G_READ_FLAG_STATUS_REG_CMD 0x70
0185 #define MT25TL01G_CLEAR_FLAG_STATUS_REG_CMD 0x50
0186
0187 #define MT25TL01G_READ_NONVOL_CFG_REG_CMD 0xB5
0188 #define MT25TL01G_WRITE_NONVOL_CFG_REG_CMD 0xB1
0189
0190 #define MT25TL01G_READ_VOL_CFG_REG_CMD 0x85
0191 #define MT25TL01G_WRITE_VOL_CFG_REG_CMD 0x81
0192
0193 #define MT25TL01G_READ_ENHANCED_VOL_CFG_REG_CMD 0x65
0194 #define MT25TL01G_WRITE_ENHANCED_VOL_CFG_REG_CMD 0x61
0195
0196 #define MT25TL01G_READ_EXT_ADDR_REG_CMD 0xC8
0197 #define MT25TL01G_WRITE_EXT_ADDR_REG_CMD 0xC5
0198
0199
0200 #define MT25TL01G_PAGE_PROG_CMD 0x02
0201 #define MT25TL01G_PAGE_PROG_4_BYTE_ADDR_CMD 0x12
0202
0203 #define MT25TL01G_DUAL_IN_FAST_PROG_CMD 0xA2
0204 #define MT25TL01G_EXT_DUAL_IN_FAST_PROG_CMD 0xD2
0205
0206 #define MT25TL01G_QUAD_IN_FAST_PROG_CMD 0x32
0207 #define MT25TL01G_EXT_QUAD_IN_FAST_PROG_CMD 0x38
0208 #define MT25TL01G_QUAD_IN_FAST_PROG_4_BYTE_ADDR_CMD 0x34
0209
0210
0211 #define MT25TL01G_SUBSECTOR_ERASE_CMD_4K 0x20
0212 #define MT25TL01G_SUBSECTOR_ERASE_4_BYTE_ADDR_CMD_4K 0x21
0213
0214 #define MT25TL01G_SUBSECTOR_ERASE_CMD_32K 0x52
0215
0216 #define MT25TL01G_SECTOR_ERASE_CMD 0xD8
0217 #define MT25TL01G_SECTOR_ERASE_4_BYTE_ADDR_CMD 0xDC
0218
0219 #define MT25TL01G_DIE_ERASE_CMD 0xC7
0220
0221 #define MT25TL01G_PROG_ERASE_RESUME_CMD 0x7A
0222 #define MT25TL01G_PROG_ERASE_SUSPEND_CMD 0x75
0223
0224
0225 #define MT25TL01G_READ_OTP_ARRAY_CMD 0x4B
0226 #define MT25TL01G_PROG_OTP_ARRAY_CMD 0x42
0227
0228
0229 #define MT25TL01G_ENTER_4_BYTE_ADDR_MODE_CMD 0xB7
0230 #define MT25TL01G_EXIT_4_BYTE_ADDR_MODE_CMD 0xE9
0231
0232
0233 #define MT25TL01G_ENTER_QUAD_CMD 0x35
0234 #define MT25TL01G_EXIT_QUAD_CMD 0xF5
0235 #define MT25TL01G_ENTER_DEEP_POWER_DOWN 0xB9
0236 #define MT25TL01G_RELEASE_FROM_DEEP_POWER_DOWN 0xAB
0237
0238
0239 #define MT25TL01G_READ_SECTOR_PROTECTION_CMD 0x2D
0240 #define MT25TL01G_PROGRAM_SECTOR_PROTECTION 0x2C
0241 #define MT25TL01G_READ_PASSWORD_CMD 0x27
0242 #define MT25TL01G_WRITE_PASSWORD_CMD 0x28
0243 #define MT25TL01G_UNLOCK_PASSWORD_CMD 0x29
0244 #define MT25TL01G_READ_GLOBAL_FREEZE_BIT 0xA7
0245 #define MT25TL01G_READ_VOLATILE_LOCK_BITS 0xE8
0246 #define MT25TL01G_WRITE_VOLATILE_LOCK_BITS 0xE5
0247
0248 #define MT25TL01G_WRITE_4_BYTE_VOLATILE_LOCK_BITS 0xE1
0249 #define MT25TL01G_READ_4_BYTE_VOLATILE_LOCK_BITS 0xE0
0250
0251 #define MT25TL01G_READ_OTP_ARRAY 0x4B
0252 #define MT25TL01G_PROGRAM_OTP_ARRAY 0x42
0253
0254
0255
0256
0257
0258
0259 #define MT25TL01G_SR_WIP ((uint8_t)0x01)
0260 #define MT25TL01G_SR_WREN ((uint8_t)0x02)
0261 #define MT25TL01G_SR_BLOCKPR ((uint8_t)0x5C)
0262 #define MT25TL01G_SR_PRBOTTOM ((uint8_t)0x20)
0263 #define MT25TL01G_SR_SRWREN ((uint8_t)0x80)
0264
0265
0266 #define MT25TL01G_NVCR_NBADDR ((uint16_t)0x0001)
0267 #define MT25TL01G_NVCR_SEGMENT ((uint16_t)0x0002)
0268 #define MT25TL01G_NVCR_DUAL ((uint16_t)0x0004)
0269 #define MT25TL01G_NVCR_QUAB ((uint16_t)0x0008)
0270 #define MT25TL01G_NVCR_RH ((uint16_t)0x0010)
0271 #define MT25TL01G_NVCR_DTRP ((uint16_t)0x0020)
0272 #define MT25TL01G_NVCR_ODS ((uint16_t)0x01C0)
0273 #define MT25TL01G_NVCR_XIP ((uint16_t)0x0E00)
0274 #define MT25TL01G_NVCR_NB_DUMMY ((uint16_t)0xF000)
0275
0276
0277 #define MT25TL01G_VCR_WRAP ((uint8_t)0x03)
0278 #define MT25TL01G_VCR_XIP ((uint8_t)0x08)
0279 #define MT25TL01G_VCR_NB_DUMMY ((uint8_t)0xF0)
0280
0281
0282 #define MT25TL01G_EAR_HIGHEST_SE ((uint8_t)0x03)
0283 #define MT25TL01G_EAR_THIRD_SEG ((uint8_t)0x02)
0284 #define MT25TL01G_EAR_SECOND_SEG ((uint8_t)0x01)
0285 #define MT25TL01G_EAR_LOWEST_SEG ((uint8_t)0x00)
0286
0287
0288 #define MT25TL01G_EVCR_ODS ((uint8_t)0x07)
0289 #define MT25TL01G_EVCR_RH ((uint8_t)0x10)
0290 #define MT25TL01G_EVCR_DTRP ((uint8_t)0x20)
0291 #define MT25TL01G_EVCR_DUAL ((uint8_t)0x40)
0292 #define MT25TL01G_EVCR_QUAD ((uint8_t)0x80)
0293
0294
0295 #define MT25TL01G_FSR_NBADDR ((uint8_t)0x01)
0296 #define MT25TL01G_FSR_PRERR ((uint8_t)0x02)
0297 #define MT25TL01G_FSR_PGSUS ((uint8_t)0x04)
0298 #define MT25TL01G_FSR_PGERR ((uint8_t)0x10)
0299 #define MT25TL01G_FSR_ERERR ((uint8_t)0x20)
0300 #define MT25TL01G_FSR_ERSUS ((uint8_t)0x40)
0301 #define MT25TL01G_FSR_READY ((uint8_t)0x80)
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312 int32_t MT25TL01G_GetFlashInfo(MT25TL01G_Info_t *pInfo);
0313 int32_t MT25TL01G_Enter4BytesAddressMode(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0314 int32_t MT25TL01G_Exit4BytesAddressMode(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0315 int32_t MT25TL01G_AutoPollingMemReady(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0316
0317 int32_t MT25TL01G_WriteEnable(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0318 int32_t MT25TL01G_BlockErase(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode, uint32_t BlockAddress, MT25TL01G_Erase_t BlockSize);
0319 int32_t MT25TL01G_ChipErase(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0320 int32_t MT25TL01G_PageProgram(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode, uint8_t *pData, uint32_t WriteAddr, uint32_t Size);
0321 int32_t MT25TL01G_ReadSTR(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode, uint8_t *pData, uint32_t ReadAddr, uint32_t Size);
0322 int32_t MT25TL01G_ReadDTR(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode, uint8_t *pData, uint32_t ReadAddr, uint32_t Size);
0323 int32_t MT25TL01G_ReadStatusRegister(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode, uint8_t *Value);
0324 int32_t MT25TL01G_EnterQPIMode(QSPI_HandleTypeDef *Ctx);
0325 int32_t MT25TL01G_ExitQPIMode(QSPI_HandleTypeDef *Ctx);
0326
0327 int32_t MT25TL01G_EnableMemoryMappedModeSTR(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0328 int32_t MT25TL01G_EnableMemoryMappedModeDTR(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0329 int32_t MT25TL01G_WriteDisable(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0330 int32_t MT25TL01G_ReadID(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode, uint8_t *ID);
0331
0332 int32_t MT25TL01G_ResetMemory(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0333 int32_t MT25TL01G_ResetEnable(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0334
0335 int32_t MT25TL01G_ReadSPBLockRegister(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode, uint8_t *SPBRegister);
0336 int32_t MT25TL01G_ReleaseFromDeepPowerDown(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0337 int32_t MT25TL01G_EnterDeepPowerDown(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0338 int32_t MT25TL01G_ProgEraseResume(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0339 int32_t MT25TL01G_ProgEraseSuspend(QSPI_HandleTypeDef *Ctx, MT25TL01G_Interface_t Mode);
0340
0341
0342
0343
0344 #ifdef __cplusplus
0345 }
0346 #endif
0347
0348 #endif
0349
0350
0351
0352
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362