Mercurial > ~darius > hgwebdir.cgi > stm32temp
annotate eeprom.h @ 76:f1c9a51e368a
Add EEPROM emulation from AN2594.
Fix emulated EEPROM size on large parts.
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Mon, 22 Apr 2013 23:17:40 +0930 |
parents | |
children |
rev | line source |
---|---|
76
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
1 /** |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
2 ****************************************************************************** |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
3 * @file EEPROM_Emulation/inc/eeprom.h |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
4 * @author MCD Application Team |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
5 * @version V3.1.0 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
6 * @date 07/27/2009 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
7 * @brief This file contains all the functions prototypes for the EEPROM |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
8 * emulation firmware library. |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
9 ****************************************************************************** |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
10 * @copy |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
11 * |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
12 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
14 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
15 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
16 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
17 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
18 * |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
19 * <h2><center>© COPYRIGHT 2009 STMicroelectronics</center></h2> |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
20 */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
21 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
22 /* Define to prevent recursive inclusion -------------------------------------*/ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
23 #ifndef __EEPROM_H |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
24 #define __EEPROM_H |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
25 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
26 /* Includes ------------------------------------------------------------------*/ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
27 #include "stm32f10x.h" |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
28 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
29 /* Exported constants --------------------------------------------------------*/ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
30 /* Define the STM32F10Xxx Flash page size depending on the used STM32 device */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
31 #if defined (STM32F10X_LD) || defined (STM32F10X_MD) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
32 #define PAGE_SIZE (uint16_t)0x400 /* Page size = 1KByte */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
33 #elif defined (STM32F10X_HD) || defined (STM32F10X_CL) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
34 #define PAGE_SIZE (uint16_t)0x800 /* Page size = 2KByte */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
35 #endif |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
36 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
37 /* EEPROM start address in Flash */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
38 extern uint32_t _seemul; |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
39 #define EEPROM_START_ADDRESS ((uint32_t)&_seemul) /* start of emulated EEPROM def'd in linker-script */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
40 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
41 /* Pages 0 and 1 base and end addresses */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
42 #define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x000)) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
43 #define PAGE0_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1))) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
44 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
45 #define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + PAGE_SIZE)) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
46 #define PAGE1_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1))) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
47 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
48 /* Used Flash pages for EEPROM emulation */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
49 #define PAGE0 ((uint16_t)0x0000) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
50 #define PAGE1 ((uint16_t)0x0001) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
51 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
52 /* No valid page define */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
53 #define NO_VALID_PAGE ((uint16_t)0x00AB) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
54 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
55 /* Page status definitions */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
56 #define ERASED ((uint16_t)0xFFFF) /* PAGE is empty */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
57 #define RECEIVE_DATA ((uint16_t)0xEEEE) /* PAGE is marked to receive data */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
58 #define VALID_PAGE ((uint16_t)0x0000) /* PAGE containing valid data */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
59 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
60 /* Valid pages in read and write defines */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
61 #define READ_FROM_VALID_PAGE ((uint8_t)0x00) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
62 #define WRITE_IN_VALID_PAGE ((uint8_t)0x01) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
63 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
64 /* Page full define */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
65 #define PAGE_FULL ((uint8_t)0x80) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
66 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
67 /* Variables' number */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
68 #define NumbOfVar ((uint8_t)0x03) |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
69 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
70 /* Exported types ------------------------------------------------------------*/ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
71 /* Exported macro ------------------------------------------------------------*/ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
72 /* Exported functions ------------------------------------------------------- */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
73 uint16_t EE_Init(void); |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
74 uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data); |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
75 uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data); |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
76 FLASH_Status EE_Format(void); |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
77 void EE_Cmd(int argc, char **argv); |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
78 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
79 #endif /* __EEPROM_H */ |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
80 |
f1c9a51e368a
Add EEPROM emulation from AN2594.
Daniel O'Connor <darius@dons.net.au>
parents:
diff
changeset
|
81 /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ |