Image Writer
/
00_eeprom_emulation_f746
EEPROM emulation for Nucleo F746ZG
eeprom/eeprom.h
- Committer:
- ImageWriter
- Date:
- 2018-12-04
- Revision:
- 3:1002a12961c5
- Parent:
- 2:c6895dd2d958
File content as of revision 3:1002a12961c5:
/** ****************************************************************************** * @file EEPROM/EEPROM_Emulation/inc/eeprom.h * @author MCD Application Team * @version V1.0.1 * @date 29-January-2016 * @brief This file contains all the functions prototypes for the EEPROM * emulation firmware library. ****************************************************************************** * @attention * * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __EEPROM_H #define __EEPROM_H /* Includes ------------------------------------------------------------------*/ #if defined (TARGET_NUCLEO_F401RE) #include "stm32f4xx_hal.h" #endif #if defined (TARGET_NUCLEO_F746ZG) #include "stm32f7xx_hal.h" #endif /* Exported constants --------------------------------------------------------*/ /* EEPROM emulation firmware error codes */ #define EE_OK (uint32_t)HAL_OK #define EE_ERROR (uint32_t)HAL_ERROR #define EE_BUSY (uint32_t)HAL_BUSY #define EE_TIMEOUT (uint32_t)HAL_TIMEOUT /* Define the size of the sectors to be used */ #if defined (TARGET_NUCLEO_F401RE) #define PAGE_SIZE (uint32_t)0x4000 /* Page size = 16KByte */ #endif #if defined (TARGET_NUCLEO_F746ZG) #define PAGE_SIZE (uint32_t)0x8000 /* Page size = 32KByte */ #endif /* Device voltage range supposed to be [2.7V to 3.6V], the operation will be done by word */ #define VOLTAGE_RANGE (uint8_t)VOLTAGE_RANGE_3 /* EEPROM start address in Flash */ #if defined (TARGET_NUCLEO_F401RE) #define EEPROM_START_ADDRESS ((uint32_t)0x08008000) /* EEPROM emulation start address: from sector2 : after 16KByte of used Flash memory */ #endif #if defined (TARGET_NUCLEO_F746ZG) #define EEPROM_START_ADDRESS ((uint32_t)0x08010000) /* EEPROM emulation start address: from sector2 : after 32KByte of used Flash memory */ #endif /* Pages 0 and 1 base and end addresses */ #define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x0000)) #define PAGE0_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1))) #define PAGE0_ID FLASH_SECTOR_2 #if defined (TARGET_NUCLEO_F401RE) #define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x4000)) #endif #if defined (TARGET_NUCLEO_F746ZG) #define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x8000)) #endif #define PAGE1_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1))) #define PAGE1_ID FLASH_SECTOR_3 /* Used Flash pages for EEPROM emulation */ #define PAGE0 ((uint16_t)0x0000) #define PAGE1 ((uint16_t)0x0001) /* Page nb between PAGE0_BASE_ADDRESS & PAGE1_BASE_ADDRESS*/ /* 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 NB_OF_VAR ((uint8_t)0x04) /* 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); #endif /* __EEPROM_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/