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
software
lpc_core
lpc_chip
chip_18xx_43xx
eeprom_18xx_43xx.c
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
#include "
chip.h
"
33
34
/*****************************************************************************
35
* Private types/enumerations/variables
36
****************************************************************************/
37
38
/*****************************************************************************
39
* Public types/enumerations/variables
40
****************************************************************************/
41
42
/*****************************************************************************
43
* Private functions
44
****************************************************************************/
45
46
/* Setup EEPROM clock */
47
STATIC
void
setClkDiv
(
LPC_EEPROM_T
*pEEPROM)
48
{
49
uint32_t clk;
50
51
/* Setup EEPROM timing to 375KHz based on PCLK rate */
52
clk =
Chip_Clock_GetRate
(
CLK_MX_EEPROM
);
53
54
/* Set EEPROM clock divide value*/
55
pEEPROM->
CLKDIV
= clk /
EEPROM_CLOCK_DIV
- 1;
56
}
57
58
/* Setup EEPROM clock */
59
STATIC
INLINE
void
setWaitState
(
LPC_EEPROM_T
*pEEPROM)
60
{
61
/* Setup EEPROM wait states*/
62
Chip_EEPROM_SetReadWaitState
(pEEPROM,
EEPROM_READ_WAIT_STATE_VAL
);
63
Chip_EEPROM_SetWaitState
(pEEPROM,
EEPROM_WAIT_STATE_VAL
);
64
65
}
66
67
/*****************************************************************************
68
* Public functions
69
****************************************************************************/
70
71
/* Initializes the EEPROM peripheral with specified parameter */
72
void
Chip_EEPROM_Init
(
LPC_EEPROM_T
*pEEPROM)
73
{
74
/* Disable EEPROM power down mode */
75
Chip_EEPROM_DisablePowerDown
(pEEPROM);
76
setClkDiv
(pEEPROM);
77
setWaitState
(pEEPROM);
78
}
79
80
/* Write data from page register to non-volatile memory */
81
void
Chip_EEPROM_EraseProgramPage
(
LPC_EEPROM_T
*pEEPROM)
82
{
83
Chip_EEPROM_ClearIntStatus
(pEEPROM,
EEPROM_CMD_ERASE_PRG_PAGE
);
84
Chip_EEPROM_SetCmd
(pEEPROM,
EEPROM_CMD_ERASE_PRG_PAGE
);
85
Chip_EEPROM_WaitForIntStatus
(pEEPROM,
EEPROM_INT_ENDOFPROG
);
86
}
87
88
/* Wait for interrupt */
89
void
Chip_EEPROM_WaitForIntStatus
(
LPC_EEPROM_T
*pEEPROM, uint32_t mask)
90
{
91
uint32_t status;
92
while
(1) {
93
status =
Chip_EEPROM_GetIntStatus
(pEEPROM);
94
if
((status & mask) == mask) {
95
break
;
96
}
97
}
98
Chip_EEPROM_ClearIntStatus
(pEEPROM, mask);
99
}
100
Generated on Fri Feb 20 2015 21:29:42 for LPCOpen Platform for LPC18XX/43XX microcontrollers by
1.8.3.1