fix based on https://gist.github.com/timbrom/1942280
[DSO138] / eeprom.h
1 /**\r
2   ******************************************************************************\r
3   * @file    EEPROM_Emulation/inc/eeprom.h \r
4   * @author  MCD Application Team\r
5   * @version V3.1.0\r
6   * @date    07/27/2009\r
7   * @brief   This file contains all the functions prototypes for the EEPROM \r
8   *          emulation firmware library.\r
9   ******************************************************************************\r
10   * @copy\r
11   *\r
12   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
14   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
15   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
16   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
17   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18   *\r
19   * <h2><center>&copy; COPYRIGHT 2009 STMicroelectronics</center></h2>\r
20   */\r
21 \r
22 /* Define to prevent recursive inclusion -------------------------------------*/\r
23 #ifndef __EEPROM_H\r
24 #define __EEPROM_H\r
25 \r
26 /* Includes ------------------------------------------------------------------*/\r
27 #include "stm32f10x.h"\r
28 \r
29 /* Exported constants --------------------------------------------------------*/\r
30 /* Define the STM32F10Xxx Flash page size depending on the used STM32 device */\r
31 #if defined (STM32F10X_LD) || defined (STM32F10X_MD)\r
32   #define PAGE_SIZE  (uint16_t)0x400  /* Page size = 1KByte */\r
33 #elif defined (STM32F10X_HD) || defined (STM32F10X_CL)\r
34   #define PAGE_SIZE  (uint16_t)0x800  /* Page size = 2KByte */\r
35 #endif\r
36 \r
37 /* EEPROM start address in Flash */\r
38 #define EEPROM_START_ADDRESS    ((uint32_t)0x0800C000) /* EEPROM emulation start address:\r
39                                                   after 64KByte of used Flash memory */\r
40 \r
41 /* Pages 0 and 1 base and end addresses */\r
42 #define PAGE0_BASE_ADDRESS      ((uint32_t)(EEPROM_START_ADDRESS + 0x000))\r
43 #define PAGE0_END_ADDRESS       ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1)))\r
44 \r
45 #define PAGE1_BASE_ADDRESS      ((uint32_t)(EEPROM_START_ADDRESS + PAGE_SIZE))\r
46 #define PAGE1_END_ADDRESS       ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1)))\r
47 \r
48 /* Used Flash pages for EEPROM emulation */\r
49 #define PAGE0                   ((uint16_t)0x0000)\r
50 #define PAGE1                   ((uint16_t)0x0001)\r
51 \r
52 /* No valid page define */\r
53 #define NO_VALID_PAGE           ((uint16_t)0x00AB)\r
54 \r
55 /* Page status definitions */\r
56 #define ERASED                  ((uint16_t)0xFFFF)     /* PAGE is empty */\r
57 #define RECEIVE_DATA            ((uint16_t)0xEEEE)     /* PAGE is marked to receive data */\r
58 #define VALID_PAGE              ((uint16_t)0x0000)     /* PAGE containing valid data */\r
59 \r
60 /* Valid pages in read and write defines */\r
61 #define READ_FROM_VALID_PAGE    ((uint8_t)0x00)\r
62 #define WRITE_IN_VALID_PAGE     ((uint8_t)0x01)\r
63 \r
64 /* Page full define */\r
65 #define PAGE_FULL               ((uint8_t)0x80)\r
66 \r
67 /* Variables' number */\r
68 #define NumbOfVar               ((uint8_t)20)\r
69 \r
70 /* Virtual address defined by the user: 0xFFFF value is prohibited */\r
71 extern uint16_t VirtAddVarTab[NumbOfVar];\r
72 \r
73 // Define virtual EEPROM addresses to be used here\r
74 enum {\r
75         Addr_TimeBase           = 0,\r
76         Addr_HPos,\r
77         Addr_Vsen,\r
78         Addr_Cpl,\r
79         Addr_Vpos,\r
80         Addr_VPosOfs,\r
81         Addr_TrigMode,\r
82         Addr_TrigEdge,\r
83         Addr_TrigLvl,\r
84         Addr_TrigPos,\r
85         Addr_RecLen,\r
86         Addr_SettingStatus,\r
87         \r
88         };\r
89 \r
90 /* Exported types ------------------------------------------------------------*/\r
91 /* Exported macro ------------------------------------------------------------*/\r
92 /* Exported functions ------------------------------------------------------- */\r
93 uint16_t EE_Init(void);\r
94 uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data);\r
95 uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data);\r
96 \r
97 #endif /* __EEPROM_H */\r
98 \r
99 /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/\r