EFM32 Leopard Gecko Software Documentation  efm32lg-doc-4.2.1
nvm.h
Go to the documentation of this file.
1 /***************************************************************************/
16 #ifndef __NVM_H
17 #define __NVM_H
18 
19 #include <stdint.h>
20 #include <stdbool.h>
21 #include "em_device.h"
22 #include "nvm_hal.h"
23 #include "nvm_config.h"
24 #include "ecode.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 /***************************************************************************/
35 /***************************************************************************/
43 /*******************************************************************************
44  ******************************* DEFINES ***********************************
45  ******************************************************************************/
46 
48 #define ECODE_EMDRV_NVM_OK ( ECODE_OK )
49 #define ECODE_EMDRV_NVM_ADDR_INVALID ( ECODE_EMDRV_SPIDRV_BASE | 0x00000001 )
50 #define ECODE_EMDRV_NVM_ALIGNMENT_INVALID ( ECODE_EMDRV_SPIDRV_BASE | 0x00000002 )
51 #define ECODE_EMDRV_NVM_DATA_INVALID ( ECODE_EMDRV_SPIDRV_BASE | 0x00000003 )
52 #define ECODE_EMDRV_NVM_WRITE_LOCK ( ECODE_EMDRV_SPIDRV_BASE | 0x00000004 )
53 #define ECODE_EMDRV_NVM_NO_PAGES_AVAILABLE ( ECODE_EMDRV_SPIDRV_BASE | 0x00000005 )
54 #define ECODE_EMDRV_NVM_PAGE_INVALID ( ECODE_EMDRV_SPIDRV_BASE | 0x00000006 )
55 #define ECODE_EMDRV_NVM_ERROR ( ECODE_EMDRV_SPIDRV_BASE | 0x00000007 )
56 
57 
58 #define NVM_WRITE_ALL_CMD 0xff
59 
60 #define NVM_WRITE_NONE_CMD 0xfe
61 
62 #define NVM_READ_ALL_CMD 0xff
63 
65 #define NVM_ERASE_RETAINCOUNT 0xffffffffUL
66 
68 #define NVM_PAGE_TERMINATION { NULL, 0, (NVM_Object_Ids) 0 }
69 
70 
71 /*******************************************************************************
72  *************************** PROTOTYPES ************************************
73  ******************************************************************************/
74 
75 Ecode_t NVM_Init(NVM_Config_t const *nvmConfig);
76 Ecode_t NVM_Erase(uint32_t eraseCount);
77 Ecode_t NVM_Write(uint16_t pageId, uint8_t objectId);
78 Ecode_t NVM_Read(uint16_t pageId, uint8_t objectId);
79 
81 #ifndef NVM_FEATURE_WEARLEVELGET_ENABLED
82 #define NVM_FEATURE_WEARLEVELGET_ENABLED true
83 #endif
84 
85 #if (NVM_FEATURE_WEARLEVELGET_ENABLED)
86 uint32_t NVM_WearLevelGet(void);
87 #endif
88 
92 #ifdef __cplusplus
93 }
94 #endif
95 
96 #endif /* __NVM_H */
Ecode_t NVM_Read(uint16_t pageId, uint8_t objectId)
Read an object or an entire page.
Definition: nvm.c:834
Energy Aware drivers error code definitions.
CMSIS Cortex-M Peripheral Access Layer for Silicon Laboratories microcontroller devices.
Ecode_t NVM_Erase(uint32_t eraseCount)
Erase the entire allocated NVM area.
Definition: nvm.c:382
Ecode_t NVM_Init(NVM_Config_t const *nvmConfig)
Initialize the NVM manager.
Definition: nvm.c:185
Ecode_t NVM_Write(uint16_t pageId, uint8_t objectId)
Write an object or a page.
Definition: nvm.c:460
Non-Volatile Memory Wear-Leveling driver HAL.
uint32_t Ecode_t
Typedef for API function errorcode return values.
Definition: ecode.h:31