3.3.8 SAFE_PLIB_NVMCTRL

Set of safe functions for setting up and controlling the NVMCTRL peripheral.

#define NVMCTRL_FLASH_START_ADDRESS        (0x00000000U)
#define NVMCTRL_FLASH_END_ADDRESS          ((0x00000000U) + (0x40000U) - 4U)
#define NVMCTRL_FLASH_PAGESIZE             (64U)
#define NVMCTRL_FLASH_ROWSIZE              (256U)


#define NVMCTRL_RWWEEPROM_START_ADDRESS    (0x00400000U)
#define NVMCTRL_RWWEEPROM_SIZE             (0x2000U)
#define NVMCTRL_RWWEEPROM_PAGESIZE         (64U)
#define NVMCTRL_RWWEEPROM_ROWSIZE          (256U)

#define NVMCTRL_USERROW_START_ADDRESS     (0x00804000U)
#define NVMCTRL_USERROW_SIZE              (0x100U)
#define NVMCTRL_USERROW_PAGESIZE          (64U)

#define NVMCTRL_ERROR_NONE 0x0U
#define NVMCTRL_ERROR_PROG 0x4U
#define NVMCTRL_ERROR_LOCK 0x8U
#define NVMCTRL_ERROR_NVM 0x10U

#define NVMCTRL_TIMEOUT                                     (10000)
#define NVMCTRL_ERROR_CALLBACK_NOT_REGISTERED               (0x1U)
#define NVMCTRL_ERROR_INVALID_PARAMETER                     (0x2U)
#define NVMCTRL_ERROR_TIMEOUT                               (0x3U)

typedef uint16_t NVMCTRL_ERROR;

typedef void (*NVMCTRL_CALLBACK)(uintptr_t context);