annotate eeprom.h @ 89:fc21fb5b171b default tip

Make error message more useful
author Daniel O'Connor <darius@dons.net.au>
date Fri, 13 Mar 2015 11:39:59 +1030
parents f1c9a51e368a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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>&copy; 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****/