LPCOpen Platform for LPC18XX/43XX microcontrollers: C:/w/lpcopen_docs/software/lpc_core/lpc_chip/chip_18xx_43xx/eeprom_18xx_43xx.h Source File

| LPCOpen Platform for LPC18XX/43XX microcontrollers 18XX43XX LPCOpen Platform for the NXP LPC18XX/43XX family of Microcontrollers

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

eeprom_18xx_43xx.h
Go to the documentation of this file.
1 /*
2 * @brief LPC18xx/43xx EEPROM driver
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_18XX_43XX_H_
33 #define _EEPROM_18XX_43XX_H_
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
44 /* FIX ME: Move to chip.h */
46 #define EEPROM_START (0x20040000)
47
48 #define EEPROM_PAGE_SIZE (128)
49
50 #define EEPROM_PAGE_NUM (128)
51
52 #define EEPROM_ADDRESS(page, offset) (EEPROM_START + (EEPROM_PAGE_SIZE * (page)) + offset)
53 #define EEPROM_CLOCK_DIV 1500000
54 #define EEPROM_READ_WAIT_STATE_VAL 0x58
55 #define EEPROM_WAIT_STATE_VAL 0x232
56
60 typedef struct { /* EEPROM Structure */
61 __IO uint32_t CMD;
62 uint32_t RESERVED0;
63 __IO uint32_t RWSTATE;
64 __IO uint32_t AUTOPROG;
65 __IO uint32_t WSTATE;
66 __IO uint32_t CLKDIV;
67 __IO uint32_t PWRDWN;
68 uint32_t RESERVED2[1007];
69 __O uint32_t INTENCLR;
70 __O uint32_t INTENSET;
71 __I uint32_t INTSTAT;
72 __I uint32_t INTEN;
73 __O uint32_t INTSTATCLR;
74 __O uint32_t INTSTATSET;
75 } LPC_EEPROM_T;
76
77 /*
78 * @brief Macro defines for EEPROM command register
79 */
80 #define EEPROM_CMD_ERASE_PRG_PAGE (6)
82 /*
83 * @brief Macro defines for EEPROM Auto Programming register
84 */
85 #define EEPROM_AUTOPROG_OFF (0)
86 #define EEPROM_AUTOPROG_AFT_1WORDWRITTEN (1)
87 #define EEPROM_AUTOPROG_AFT_LASTWORDWRITTEN (2)
90 /*
91 * @brief Macro defines for EEPROM power down register
92 */
93 #define EEPROM_PWRDWN (1 << 0)
94
95 /*
96 * @brief Macro defines for EEPROM interrupt related registers
97 */
98 #define EEPROM_INT_ENDOFPROG (1 << 2)
99
105 STATIC INLINE void Chip_EEPROM_EnablePowerDown(LPC_EEPROM_T *pEEPROM)
106 {
107 pEEPROM->PWRDWN = EEPROM_PWRDWN;
108 }
109
115 STATIC INLINE void Chip_EEPROM_DisablePowerDown(LPC_EEPROM_T *pEEPROM)
116 {
117 pEEPROM->PWRDWN = 0;
118 }
119
125 void Chip_EEPROM_Init(LPC_EEPROM_T *pEEPROM);
126
132 STATIC INLINE void Chip_EEPROM_DeInit(LPC_EEPROM_T *pEEPROM)
133 {
134 /* Enable EEPROM power down mode */
135 Chip_EEPROM_EnablePowerDown(pEEPROM);
136 }
137
144 STATIC INLINE void Chip_EEPROM_SetAutoProg(LPC_EEPROM_T *pEEPROM, uint32_t mode)
145 {
146 pEEPROM->AUTOPROG = mode;
147 }
148
157 STATIC INLINE void Chip_EEPROM_SetReadWaitState(LPC_EEPROM_T *pEEPROM, uint32_t ws)
158 {
159 pEEPROM->RWSTATE = ws;
160 }
161
171 STATIC INLINE void Chip_EEPROM_SetWaitState(LPC_EEPROM_T *pEEPROM, uint32_t ws)
172 {
173 pEEPROM->WSTATE = ws;
174 }
175
183 STATIC INLINE void Chip_EEPROM_SetCmd(LPC_EEPROM_T *pEEPROM, uint32_t cmd)
184 {
185 pEEPROM->CMD = cmd;
186 }
187
193 void Chip_EEPROM_EraseProgramPage(LPC_EEPROM_T *pEEPROM);
194
201 void Chip_EEPROM_WaitForIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask);
202
209 STATIC INLINE void Chip_EEPROM_EnableInt(LPC_EEPROM_T *pEEPROM, uint32_t mask)
210 {
211 pEEPROM->INTENSET = mask;
212 }
213
220 STATIC INLINE void Chip_EEPROM_DisableInt(LPC_EEPROM_T *pEEPROM, uint32_t mask)
221 {
222 pEEPROM->INTENCLR = mask;
223 }
224
230 STATIC INLINE uint32_t Chip_EEPROM_GetIntEnable(LPC_EEPROM_T *pEEPROM)
231 {
232 return pEEPROM->INTEN;
233 }
234
240 STATIC INLINE uint32_t Chip_EEPROM_GetIntStatus(LPC_EEPROM_T *pEEPROM)
241 {
242 return pEEPROM->INTSTAT;
243 }
244
251 STATIC INLINE void Chip_EEPROM_SetIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask)
252 {
253 pEEPROM->INTSTATSET = mask;
254 }
255
262 STATIC INLINE void Chip_EEPROM_ClearIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask)
263 {
264 pEEPROM->INTSTATCLR = mask;
265 }
266
271 #ifdef __cplusplus
272 }
273 #endif
274
275 #endif /* _EEPROM_18XX_43XX_H_ */