|
PAN1080 Peripheral API
|
Fmc Interface. More...

Modules | |
| Fmc erase command | |
| Fmc erase command definition. | |
| Fmc status reg w/r command | |
| Fmc status register write and read command definition. | |
| Fmc status reg operation command | |
| Fmc status register operation command definition. | |
| Fmc read command | |
| Fmc read command definition. | |
| Fmc burst read command | |
| Fmc burst read command definition. | |
| Fmc work type select | |
| Fmc work type select definition. | |
Data Structures | |
| struct | _flash_ids |
| Structure with flash id. More... | |
Macros | |
| #define | CMD_TRIG (0x01) |
| #define | CMD_WRITE_ENABLE (0x06) |
| #define | QUAD_ENABLE_Pos (9) |
| #define | QUAD_ENABLE_Msk (0x1ul << QUAD_ENABLE_Pos) |
| #define | Write_Enable_Latch_Pos (1) |
| #define | Write_Enable_Latch_Msk (0x1ul << Write_Enable_Latch_Pos) |
| #define | Write_In_Process_Pos (0) |
| #define | Write_In_Process_Msk (0x1ul << Write_In_Process_Pos) |
| #define | Long_Time_Op_Pos (17) |
| #define | PAGE_SIZE (256) |
| #define | SECTOR_SIZE (4096) |
Typedefs | |
| typedef struct _flash_ids | FLASH_IDS_T |
| Structure with flash id. More... | |
Functions | |
| __STATIC_FORCEINLINE void | FMC_EnterDeepPowerDownMode (FLCTL_T *fmc) |
| Enter flash deep power down mode. More... | |
| __STATIC_FORCEINLINE void | FMC_ExitDeepPowerDownMode (FLCTL_T *fmc) |
| Exit flash deep power down mode. More... | |
| void | FMC_GetFlashUniqueId (FLCTL_T *fmc) |
| This function is used to get flash unique id,. More... | |
| void | FMC_GetFlashJedecId (FLCTL_T *fmc) |
| This function is used to get flash jedec id,. More... | |
| uint32_t | FMC_GetFlashCodeAreaSize (FLCTL_T *fmc) |
| Get Size of Flash in Bytes. More... | |
| int | FMC_EraseSector (FLCTL_T *fmc, unsigned long adr) |
| Erase a 4KB Sector in Flash Memory. More... | |
| int | FMC_EraseBlock32k (FLCTL_T *fmc, unsigned long addr) |
| Erase a 32KB Block in Flash Memory. More... | |
| int | FMC_EraseBlock64k (FLCTL_T *fmc, unsigned long addr) |
| Erase a 64KB Block in Flash Memory. More... | |
| int | FMC_EraseChip (FLCTL_T *fmc) |
| Erase the whole flash memory. More... | |
| int | FMC_EraseCodeArea (FLCTL_T *fmc, uint32_t addr, uint32_t len) |
| Erase specific data in flash code area. More... | |
| void | InitIcache (FLCTL_T *fmc, uint32_t mode) |
| This function is used to init Icache,. More... | |
| int32_t | FMC_GetCrc32Sum (FLCTL_T *fmc, uint32_t addr, uint32_t count, uint32_t *chksum) |
| Calculate and read the CRC32 checksum of a specified flash area. More... | |
| int | BlankCheck (FLCTL_T *fmc, unsigned long adr, unsigned long sz) |
| Blank check checks if memory is blank. More... | |
| unsigned long | Verify (FLCTL_T *fmc, unsigned long adr, unsigned long sz, unsigned char *buf) |
| Verify in flash memory. More... | |
| int | ProgramPage (FLCTL_T *fmc, unsigned long adr, unsigned long sz, unsigned char *buf) |
| Program page in flash memory. More... | |
| unsigned char | FMC_ReadStatusReg (FLCTL_T *fmc, unsigned char cmd) |
| This function is used to read status, The Read Status Register can be read at any time. More... | |
| unsigned char | FMC_WriteEnable (FLCTL_T *fmc) |
| This function is used to enable write function,. More... | |
| void | FMC_WriteStatusReg (FLCTL_T *fmc, unsigned char ops, unsigned int buf) |
| This function is used to write status, The Read Status Register can be read at any time. More... | |
| unsigned char | FMC_ReadByte (FLCTL_T *fmc, unsigned int Addr, unsigned char cmd) |
| This function is used to read flash,. More... | |
| void | FMC_WriteByte (FLCTL_T *fmc, unsigned int addr, unsigned char data) |
| This function is used to write one byte to flash memory. More... | |
| void | FMC_WriteHalfWord (FLCTL_T *fmc, unsigned int addr, unsigned short data) |
| This function is used to write halfword to flash memory. More... | |
| unsigned int | FMC_ReadWord (FLCTL_T *fmc, unsigned int Addr, unsigned char cmd) |
| This function is used to read flash. More... | |
| unsigned char * | FMC_ReadPage (FLCTL_T *fmc, unsigned int Addr, unsigned char cmd) |
| This function is used to read a page size (256 bytes) of data from flash. More... | |
| int | FMC_ReadStream (FLCTL_T *fmc, unsigned int Addr, unsigned char cmd, unsigned char *buf, unsigned int len) |
| This function is used to read data stream from flash. More... | |
| int | FMC_WriteStream (FLCTL_T *fmc, unsigned int Addr, unsigned char *buf, unsigned int len) |
| This function is used to write data stream to flash. More... | |
| int | FMC_ReadInfoArea (FLCTL_T *fmc, unsigned int Addr, unsigned char cmd, unsigned char *buf, unsigned int len) |
| This function is used to read data from the flash 4KB INFO area. More... | |
| int | FMC_WriteInfoArea (FLCTL_T *fmc, unsigned int Addr, unsigned char *buf, unsigned int len) |
| This function is used to write data to the flash 4KB INFO area. More... | |
| int | FMC_EraseInfoArea (FLCTL_T *fmc) |
| This function is used to erase the flash 4KB INFO area. More... | |
| void | FMC_SetFlashMode (FLCTL_T *fmc, uint32_t mode, bool enhance) |
| This function is used to set flash work mode. More... | |
| void | FMC_ExitEnhanceMode (FLCTL_T *fmc) |
| This function is used to exit flash enhanced read mode. More... | |
| void | FMC_EnterEnhanceMode (FLCTL_T *fmc, uint32_t mode) |
| This function is used to enter flash enhanced read mode. More... | |
| void | FMC_EnableAutoDp (FLCTL_T *fmc) |
| This function is used to enable auto enter deep power down function. More... | |
| void | FMC_DisableAutoDp (FLCTL_T *fmc) |
| This function is used to disable auto enter deep power down function. More... | |
| void | FMC_SetRdpWaitCount (FLCTL_T *fmc, uint32_t cnt) |
| This function is used to set wait count for release from Deep Power-down mode. More... | |
Fmc Interface.
| #define CMD_TRIG (0x01) |
Command to triger start operate
| #define CMD_WRITE_ENABLE (0x06) |
Command to write enable operate
| #define Long_Time_Op_Pos (17) |
Flash mode reg long time operate bit position
| #define PAGE_SIZE (256) |
Flash one page size
| #define QUAD_ENABLE_Msk (0x1ul << QUAD_ENABLE_Pos) |
Flash status reg quad enable value
| #define QUAD_ENABLE_Pos (9) |
Flash status reg quad enable bit position
| #define SECTOR_SIZE (4096) |
Flash one sector size
| #define Write_Enable_Latch_Msk (0x1ul << Write_Enable_Latch_Pos) |
Flash write enable value
| #define Write_Enable_Latch_Pos (1) |
Flash write enable bit position
| #define Write_In_Process_Msk (0x1ul << Write_In_Process_Pos) |
Flash status reg WIP bit value,this bit indicates whether the memory is busy
| #define Write_In_Process_Pos (0) |
Flash status reg WIP bit position
| typedef struct _flash_ids FLASH_IDS_T |
Structure with flash id.
| manufacturer_id | Specifies the flash manufacturer id |
| memory_type_id | Specifies the flash memory type id |
| memory_density_id | Specifies the flash memory density id |
| uid | Specifies the flash unique id |
| int BlankCheck | ( | FLCTL_T * | fmc, |
| unsigned long | adr, | ||
| unsigned long | sz | ||
| ) |
Blank check checks if memory is blank.
| fmc | Where fmc is a flash peripheral. |
| adr | Block start address |
| sz | Block Size (in bytes) |
| 0 | Success |
| 1 | Fail |
| void FMC_DisableAutoDp | ( | FLCTL_T * | fmc | ) |
This function is used to disable auto enter deep power down function.
| fmc | Where fmc is a flash peripheral. |
| void FMC_EnableAutoDp | ( | FLCTL_T * | fmc | ) |
This function is used to enable auto enter deep power down function.
| fmc | Where fmc is a flash peripheral. |
| __STATIC_FORCEINLINE void FMC_EnterDeepPowerDownMode | ( | FLCTL_T * | fmc | ) |
Enter flash deep power down mode.
| fmc | Where fmc is the base address of fmc peripheral |
| void FMC_EnterEnhanceMode | ( | FLCTL_T * | fmc, |
| uint32_t | mode | ||
| ) |
This function is used to enter flash enhanced read mode.
| fmc | Where fmc is a flash peripheral. |
| mode | Where mode is line mode select. Fmc work type select |
| int FMC_EraseBlock32k | ( | FLCTL_T * | fmc, |
| unsigned long | addr | ||
| ) |
Erase a 32KB Block in Flash Memory.
This function is used to erase a 32KB flash block in flash code area.
| fmc | where fmc is a flash peripheral. |
| adr | where addr is a erase start address. |
| 0 | Success. |
| -1 | Fail. |
| int FMC_EraseBlock64k | ( | FLCTL_T * | fmc, |
| unsigned long | addr | ||
| ) |
Erase a 64KB Block in Flash Memory.
This function is used to erase a 64KB flash block in flash code area.
| fmc | where fmc is a flash peripheral. |
| adr | where addr is a erase start address. |
| 0 | Success. |
| -1 | Fail. |
| int FMC_EraseChip | ( | FLCTL_T * | fmc | ) |
Erase the whole flash memory.
This function is used to erase all data in flash, include Code Area and Info Area.
| fmc | where fmc is a flash peripheral. |
| 0 | Success. |
| -1 | Fail. |
| int FMC_EraseCodeArea | ( | FLCTL_T * | fmc, |
| uint32_t | addr, | ||
| uint32_t | len | ||
| ) |
Erase specific data in flash code area.
This function is used to erase specific data in flash Code Area.
| fmc | where fmc is a flash peripheral. |
| addr | start address to erase, should be 4KB aligned. |
| len | length to erase in bytes. |
| 0 | Success. |
| -1 | Fail. |
| int FMC_EraseInfoArea | ( | FLCTL_T * | fmc | ) |
This function is used to erase the flash 4KB INFO area.
| fmc | where fmc is a flash peripheral |
| 0 | erase success |
| -1 | erase fail |
| int FMC_EraseSector | ( | FLCTL_T * | fmc, |
| unsigned long | adr | ||
| ) |
Erase a 4KB Sector in Flash Memory.
This function is used to erase a 4KB flash sector in flash code area.
| fmc | where fmc is a flash peripheral. |
| adr | where addr is a erase start address. |
| 0 | Success. |
| -1 | Fail. |
| __STATIC_FORCEINLINE void FMC_ExitDeepPowerDownMode | ( | FLCTL_T * | fmc | ) |
Exit flash deep power down mode.
| fmc | Where fmc is the base address of fmc peripheral |
| void FMC_ExitEnhanceMode | ( | FLCTL_T * | fmc | ) |
This function is used to exit flash enhanced read mode.
| fmc | Where fmc is a flash peripheral. |
| int32_t FMC_GetCrc32Sum | ( | FLCTL_T * | fmc, |
| uint32_t | addr, | ||
| uint32_t | count, | ||
| uint32_t * | chksum | ||
| ) |
Calculate and read the CRC32 checksum of a specified flash area.
| [in] | fmc | Where fmc is a flash peripheral. |
| [in] | addr | Start address of the flash area to be executed CRC32 checksum calculation. |
| [in] | count | Number of bytes to be calculated. |
| [out] | chksum | If success, it will contain the result of CRC32 checksum calculation. |
| 0 | Success |
| -1 | Invalid parameter. |
| uint32_t FMC_GetFlashCodeAreaSize | ( | FLCTL_T * | fmc | ) |
Get Size of Flash in Bytes.
| fmc | Flash memory controller base |
| void FMC_GetFlashJedecId | ( | FLCTL_T * | fmc | ) |
This function is used to get flash jedec id,.
| fmc | where fmc is a flash peripheral. |
| void FMC_GetFlashUniqueId | ( | FLCTL_T * | fmc | ) |
This function is used to get flash unique id,.
| fmc | where fmc is a flash peripheral. |
| unsigned char FMC_ReadByte | ( | FLCTL_T * | fmc, |
| unsigned int | Addr, | ||
| unsigned char | cmd | ||
| ) |
This function is used to read flash,.
| fmc | where fmc is a flash peripheral. |
| Addr | where Addr is start address to read |
| cmd | where cmd can be CMD_FAST_READ or CMD_NORM_READ |
| int FMC_ReadInfoArea | ( | FLCTL_T * | fmc, |
| unsigned int | Addr, | ||
| unsigned char | cmd, | ||
| unsigned char * | buf, | ||
| unsigned int | len | ||
| ) |
This function is used to read data from the flash 4KB INFO area.
| fmc | where fmc is a flash peripheral. |
| Addr | where Addr is start address to read, can be 0 ~ 4095 |
| cmd | where cmd can be CMD_FAST_READ or CMD_NORM_READ |
| buf | where buf is a buffer to store read data |
| len | where len is data length of bytes to read |
| 0 | read success |
| -1 | read fail |
| unsigned char * FMC_ReadPage | ( | FLCTL_T * | fmc, |
| unsigned int | Addr, | ||
| unsigned char | cmd | ||
| ) |
This function is used to read a page size (256 bytes) of data from flash.
| fmc | where fmc is a flash peripheral. |
| Addr | where Addr is start address to read |
| cmd | where cmd can be CMD_FAST_READ or CMD_NORM_READ |
| unsigned char FMC_ReadStatusReg | ( | FLCTL_T * | fmc, |
| unsigned char | cmd | ||
| ) |
This function is used to read status, The Read Status Register can be read at any time.
| fmc | where fmc is a flash peripheral. |
| cmd | where cmd can be CMD_READ_STATUS_L(return register bit[7:0]) CMD_READ_STATUS_H(return register bit[15:8]) |
| int FMC_ReadStream | ( | FLCTL_T * | fmc, |
| unsigned int | Addr, | ||
| unsigned char | cmd, | ||
| unsigned char * | buf, | ||
| unsigned int | len | ||
| ) |
This function is used to read data stream from flash.
| fmc | where fmc is a flash peripheral. |
| Addr | where Addr is start address to read |
| cmd | where cmd can be CMD_FAST_READ or CMD_NORM_READ |
| buf | where buf is a buffer to store read data |
| len | where len is data length of bytes to read |
| unsigned int FMC_ReadWord | ( | FLCTL_T * | fmc, |
| unsigned int | Addr, | ||
| unsigned char | cmd | ||
| ) |
This function is used to read flash.
| fmc | where fmc is a flash peripheral. |
| Addr | where Addr is start address to read |
| cmd | where cmd can be CMD_FAST_READ or CMD_NOR_READ |
| void FMC_SetFlashMode | ( | FLCTL_T * | fmc, |
| uint32_t | mode, | ||
| bool | enhance | ||
| ) |
This function is used to set flash work mode.
| fmc | Where fmc is a flash peripheral. |
| mode | Where mode is line mode select. Fmc work type select |
| enhance | Whether enhanced mode is supported |
| void FMC_SetRdpWaitCount | ( | FLCTL_T * | fmc, |
| uint32_t | cnt | ||
| ) |
This function is used to set wait count for release from Deep Power-down mode.
| fmc | Where fmc is a flash peripheral. |
| cnt | Where cnt is a flash clk count value. |
| void FMC_WriteByte | ( | FLCTL_T * | fmc, |
| unsigned int | addr, | ||
| unsigned char | data | ||
| ) |
This function is used to write one byte to flash memory.
| fmc | Where fmc is a flash peripheral. |
| addr | Where Addr is start address to write |
| data | Where data is data need to program |
| unsigned char FMC_WriteEnable | ( | FLCTL_T * | fmc | ) |
This function is used to enable write function,.
| fmc | where fmc is a flash peripheral. |
| void FMC_WriteHalfWord | ( | FLCTL_T * | fmc, |
| unsigned int | addr, | ||
| unsigned short | data | ||
| ) |
This function is used to write halfword to flash memory.
| fmc | Where fmc is a flash peripheral. |
| addr | Where Addr is start address to write |
| data | Where data is data need to program |
| int FMC_WriteInfoArea | ( | FLCTL_T * | fmc, |
| unsigned int | Addr, | ||
| unsigned char * | buf, | ||
| unsigned int | len | ||
| ) |
This function is used to write data to the flash 4KB INFO area.
| fmc | where fmc is a flash peripheral |
| Addr | where Addr is start address to write, can be 0 ~ 4095 |
| buf | where buf is a buffer to store data to write |
| len | where len is data length of bytes to write |
| 0 | write success |
| -1 | write fail |
| void FMC_WriteStatusReg | ( | FLCTL_T * | fmc, |
| unsigned char | ops, | ||
| unsigned int | buf | ||
| ) |
This function is used to write status, The Read Status Register can be read at any time.
| fmc | where fmc is a flash peripheral. |
| ops | where ops can be OPS_WR_STU_REG_ALL OPS_WR_STU_REG_NOR |
| buf | where buf is write value |
| int FMC_WriteStream | ( | FLCTL_T * | fmc, |
| unsigned int | Addr, | ||
| unsigned char * | buf, | ||
| unsigned int | len | ||
| ) |
This function is used to write data stream to flash.
| fmc | where fmc is a flash peripheral |
| Addr | where Addr is start address to write, can be any valid address |
| buf | where buf is a buffer to store data to write |
| len | where len is data length of bytes to write |
| void InitIcache | ( | FLCTL_T * | fmc, |
| uint32_t | mode | ||
| ) |
This function is used to init Icache,.
| fmc | Where fmc is a flash peripheral. |
| mode | Where mode can be FLASH_X1_MODE FLASH_X2_MODE FLASH_X4_MODE |
| int ProgramPage | ( | FLCTL_T * | fmc, |
| unsigned long | adr, | ||
| unsigned long | sz, | ||
| unsigned char * | buf | ||
| ) |
Program page in flash memory.
| fmc | Where fmc is a flash peripheral. |
| adr | Block start address |
| sz | Page size |
| buf | Page data |
| 0 | Success |
| 1 | Fail |
| unsigned long Verify | ( | FLCTL_T * | fmc, |
| unsigned long | adr, | ||
| unsigned long | sz, | ||
| unsigned char * | buf | ||
| ) |
Verify in flash memory.
| fmc | Where fmc is a flash peripheral. |
| adr | Block start address |
| sz | Data lenth need to verify |
| buf | Programed data |