| LPCOpen Platform v1.03 LPCOpen Platform for NXP LPC Microcontrollers

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

- File List
- Globals

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
eeprom_002.h
Go to the documentation of this file.
1 /*
2 * @brief EEPROM registers and driver functions
3 *
4 * @note
5 * Copyright(C) NXP Semiconductors, 2012
6 * All rights reserved.
7 *
8 * @par
9 * Software that is described herein is for illustrative purposes only
10 * which provides customers with programming information regarding the
11 * LPC products. This software is supplied "AS IS" without any warranties of
12 * any kind, and NXP Semiconductors and its licensor disclaim any and
13 * all warranties, express or implied, including all implied warranties of
14 * merchantability, fitness for a particular purpose and non-infringement of
15 * intellectual property rights. NXP Semiconductors assumes no responsibility
16 * or liability for the use of the software, conveys no license or rights under any
17 * patent, copyright, mask work right, or any other intellectual property rights in
18 * or to any products. NXP Semiconductors reserves the right to make changes
19 * in the software without notification. NXP Semiconductors also makes no
20 * representation or warranty that such application will be suitable for the
21 * specified use without further testing or modification.
22 *
23 * @par
24 * Permission to use, copy, modify, and distribute this software and its
25 * documentation is hereby granted, under NXP Semiconductors' and its
26 * licensor's relevant copyrights in the software, without fee, provided that it
27 * is used in conjunction with NXP Semiconductors microcontrollers. This
28 * copyright, permission, and disclaimer notice must appear in all copies of
29 * this code.
30 */
31
32 #ifndef __EEPROM_002_H_
33 #define __EEPROM_002_H_
34
35 #include "sys_config.h"
36 #include "cmsis.h"
37
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41
50 typedef struct { /* EEPROM Structure */
51 __IO uint32_t CMD;
52 uint32_t RESERVED0;
53 __IO uint32_t RWSTATE;
54 __IO uint32_t AUTOPROG;
55 __IO uint32_t WSTATE;
56 __IO uint32_t CLKDIV;
57 __IO uint32_t PWRDWN;
58 uint32_t RESERVED2[1007];
59 __O uint32_t INTENCLR;
60 __O uint32_t INTENSET;
61 __I uint32_t INTSTAT;
62 __I uint32_t INTEN;
63 __O uint32_t INTSTATCLR;
64 __O uint32_t INTSTATSET;
65 } IP_EEPROM_002_T;
66
67 /*
68 * @brief Macro defines for EEPROM command register
69 */
70 #define EEPROM_CMD_ERASE_PRG_PAGE (6)
72 /*
73 * @brief Macro defines for EEPROM Auto Programming register
74 */
75 #define EEPROM_AUTOPROG_OFF (0)
76 #define EEPROM_AUTOPROG_AFT_1WORDWRITTEN (1)
77 #define EEPROM_AUTOPROG_AFT_LASTWORDWRITTEN (2)
80 /*
81 * @brief Macro defines for EEPROM power down register
82 */
83 #define EEPROM_PWRDWN (1 << 0)
84
85 /*
86 * @brief Macro defines for EEPROM interrupt related registers
87 */
88 #define EEPROM_INT_ENDOFPROG (1 << 2)
89
97 STATIC INLINE void IP_EEPROM_SetCmd(IP_EEPROM_002_T *pEEPROM, uint32_t cmd)
98 {
99 pEEPROM->CMD = cmd;
100 }
101
108 STATIC INLINE void IP_EEPROM_SetAutoProg(IP_EEPROM_002_T *pEEPROM, uint32_t mode)
109 {
110 pEEPROM->AUTOPROG = mode;
111 }
112
119 STATIC INLINE void IP_EEPROM_SetReadWaitState(IP_EEPROM_002_T *pEEPROM, uint32_t ws)
120 {
121 pEEPROM->RWSTATE = ws;
122 }
123
130 STATIC INLINE void IP_EEPROM_SetWaitState(IP_EEPROM_002_T *pEEPROM, uint32_t ws)
131 {
132 pEEPROM->WSTATE = ws;
133 }
134
140 STATIC INLINE void IP_EEPROM_EnablePowerDown(IP_EEPROM_002_T *pEEPROM)
141 {
142 pEEPROM->PWRDWN = EEPROM_PWRDWN;
143 }
144
151 STATIC INLINE void IP_EEPROM_DisablePowerDown(IP_EEPROM_002_T *pEEPROM)
152 {
153 pEEPROM->PWRDWN = 0;
154 }
155
162 STATIC INLINE void IP_EEPROM_EnableInt(IP_EEPROM_002_T *pEEPROM, uint32_t mask)
163 {
164 pEEPROM->INTENSET = mask;
165 }
166
173 STATIC INLINE void IP_EEPROM_DisableInt(IP_EEPROM_002_T *pEEPROM, uint32_t mask)
174 {
175 pEEPROM->INTENCLR = mask;
176 }
177
183 STATIC INLINE uint32_t IP_EEPROM_GetIntEnable(IP_EEPROM_002_T *pEEPROM)
184 {
185 return pEEPROM->INTEN;
186 }
187
193 STATIC INLINE uint32_t IP_EEPROM_GetIntStatus(IP_EEPROM_002_T *pEEPROM)
194 {
195 return pEEPROM->INTSTAT;
196 }
197
204 STATIC INLINE void IP_EEPROM_SetIntStatus(IP_EEPROM_002_T *pEEPROM, uint32_t mask)
205 {
206 pEEPROM->INTSTATSET = mask;
207 }
208
215 STATIC INLINE void IP_EEPROM_ClearIntStatus(IP_EEPROM_002_T *pEEPROM, uint32_t mask)
216 {
217 pEEPROM->INTSTATCLR = mask;
218 }
219
226 void IP_EEPROM_Init(IP_EEPROM_002_T *pEEPROM, uint32_t div);
227
233 STATIC INLINE void IP_EEPROM_DeInit(IP_EEPROM_002_T *pEEPROM)
234 {
235 /* Enable EEPROM power down mode */
236 IP_EEPROM_EnablePowerDown(pEEPROM);
237 }
238
244 void IP_EEPROM_EraseProgramPage(IP_EEPROM_002_T *pEEPROM);
245
252 void IP_EEPROM_WaitForIntStatus(IP_EEPROM_002_T *pEEPROM, uint32_t mask);
253
258 #ifdef __cplusplus
259 }
260 #endif
261
262 #endif /* __EEPROM_002_H_ */