Mercurial > ~darius > hgwebdir.cgi > stm32temp
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eeprom.h Mon Apr 22 23:17:40 2013 +0930 @@ -0,0 +1,81 @@ +/** + ****************************************************************************** + * @file EEPROM_Emulation/inc/eeprom.h + * @author MCD Application Team + * @version V3.1.0 + * @date 07/27/2009 + * @brief This file contains all the functions prototypes for the EEPROM + * emulation firmware library. + ****************************************************************************** + * @copy + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * <h2><center>© COPYRIGHT 2009 STMicroelectronics</center></h2> + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __EEPROM_H +#define __EEPROM_H + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x.h" + +/* Exported constants --------------------------------------------------------*/ +/* Define the STM32F10Xxx Flash page size depending on the used STM32 device */ +#if defined (STM32F10X_LD) || defined (STM32F10X_MD) + #define PAGE_SIZE (uint16_t)0x400 /* Page size = 1KByte */ +#elif defined (STM32F10X_HD) || defined (STM32F10X_CL) + #define PAGE_SIZE (uint16_t)0x800 /* Page size = 2KByte */ +#endif + +/* EEPROM start address in Flash */ +extern uint32_t _seemul; +#define EEPROM_START_ADDRESS ((uint32_t)&_seemul) /* start of emulated EEPROM def'd in linker-script */ + +/* Pages 0 and 1 base and end addresses */ +#define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x000)) +#define PAGE0_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1))) + +#define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + PAGE_SIZE)) +#define PAGE1_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1))) + +/* Used Flash pages for EEPROM emulation */ +#define PAGE0 ((uint16_t)0x0000) +#define PAGE1 ((uint16_t)0x0001) + +/* No valid page define */ +#define NO_VALID_PAGE ((uint16_t)0x00AB) + +/* Page status definitions */ +#define ERASED ((uint16_t)0xFFFF) /* PAGE is empty */ +#define RECEIVE_DATA ((uint16_t)0xEEEE) /* PAGE is marked to receive data */ +#define VALID_PAGE ((uint16_t)0x0000) /* PAGE containing valid data */ + +/* Valid pages in read and write defines */ +#define READ_FROM_VALID_PAGE ((uint8_t)0x00) +#define WRITE_IN_VALID_PAGE ((uint8_t)0x01) + +/* Page full define */ +#define PAGE_FULL ((uint8_t)0x80) + +/* Variables' number */ +#define NumbOfVar ((uint8_t)0x03) + +/* Exported types ------------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +uint16_t EE_Init(void); +uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data); +uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data); +FLASH_Status EE_Format(void); +void EE_Cmd(int argc, char **argv); + +#endif /* __EEPROM_H */ + +/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/