f

Dependencies:   TS_DISCO_F746NG mbed LCD_DISCO_F746NG mbed-rtos BSP_DISCO_F746NG FatFS X_NUCLEO_IHM02A1

Committer:
emperord
Date:
Fri Mar 08 13:48:46 2019 +0000
Revision:
2:37a61db8b04b
f

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emperord 2:37a61db8b04b 1 /**
emperord 2:37a61db8b04b 2 ******************************************************************************
emperord 2:37a61db8b04b 3 * @file EEPROM/EEPROM_Emulation/inc/eeprom.h
emperord 2:37a61db8b04b 4 * @author MCD Application Team
emperord 2:37a61db8b04b 5 * @version V1.0.1
emperord 2:37a61db8b04b 6 * @date 29-January-2016
emperord 2:37a61db8b04b 7 * @brief This file contains all the functions prototypes for the EEPROM
emperord 2:37a61db8b04b 8 * emulation firmware library.
emperord 2:37a61db8b04b 9 ******************************************************************************
emperord 2:37a61db8b04b 10 * @attention
emperord 2:37a61db8b04b 11 *
emperord 2:37a61db8b04b 12 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
emperord 2:37a61db8b04b 13 *
emperord 2:37a61db8b04b 14 * Redistribution and use in source and binary forms, with or without modification,
emperord 2:37a61db8b04b 15 * are permitted provided that the following conditions are met:
emperord 2:37a61db8b04b 16 * 1. Redistributions of source code must retain the above copyright notice,
emperord 2:37a61db8b04b 17 * this list of conditions and the following disclaimer.
emperord 2:37a61db8b04b 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
emperord 2:37a61db8b04b 19 * this list of conditions and the following disclaimer in the documentation
emperord 2:37a61db8b04b 20 * and/or other materials provided with the distribution.
emperord 2:37a61db8b04b 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
emperord 2:37a61db8b04b 22 * may be used to endorse or promote products derived from this software
emperord 2:37a61db8b04b 23 * without specific prior written permission.
emperord 2:37a61db8b04b 24 *
emperord 2:37a61db8b04b 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
emperord 2:37a61db8b04b 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
emperord 2:37a61db8b04b 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
emperord 2:37a61db8b04b 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
emperord 2:37a61db8b04b 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
emperord 2:37a61db8b04b 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
emperord 2:37a61db8b04b 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
emperord 2:37a61db8b04b 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
emperord 2:37a61db8b04b 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
emperord 2:37a61db8b04b 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
emperord 2:37a61db8b04b 35 *
emperord 2:37a61db8b04b 36 ******************************************************************************
emperord 2:37a61db8b04b 37 */
emperord 2:37a61db8b04b 38
emperord 2:37a61db8b04b 39 /* Define to prevent recursive inclusion -------------------------------------*/
emperord 2:37a61db8b04b 40 #ifndef __EEPROM_H
emperord 2:37a61db8b04b 41 #define __EEPROM_H
emperord 2:37a61db8b04b 42
emperord 2:37a61db8b04b 43 /* Includes ------------------------------------------------------------------*/
emperord 2:37a61db8b04b 44 #include "stm32f7xx_hal.h"
emperord 2:37a61db8b04b 45
emperord 2:37a61db8b04b 46 /* Exported constants --------------------------------------------------------*/
emperord 2:37a61db8b04b 47 /* EEPROM emulation firmware error codes */
emperord 2:37a61db8b04b 48 #define EE_OK (uint32_t)HAL_OK
emperord 2:37a61db8b04b 49 #define EE_ERROR (uint32_t)HAL_ERROR
emperord 2:37a61db8b04b 50 #define EE_BUSY (uint32_t)HAL_BUSY
emperord 2:37a61db8b04b 51 #define EE_TIMEOUT (uint32_t)HAL_TIMEOUT
emperord 2:37a61db8b04b 52
emperord 2:37a61db8b04b 53 /* Define the size of the sectors to be used */
emperord 2:37a61db8b04b 54 #define PAGE_SIZE (uint32_t)0x4000 /* Page size = 16KByte */
emperord 2:37a61db8b04b 55
emperord 2:37a61db8b04b 56 /* Device voltage range supposed to be [2.7V to 3.6V], the operation will
emperord 2:37a61db8b04b 57 be done by word */
emperord 2:37a61db8b04b 58 #define VOLTAGE_RANGE (uint8_t)VOLTAGE_RANGE_3
emperord 2:37a61db8b04b 59
emperord 2:37a61db8b04b 60 /* EEPROM start address in Flash */
emperord 2:37a61db8b04b 61 #define EEPROM_START_ADDRESS ((uint32_t)0x08008000) /* EEPROM emulation start address:
emperord 2:37a61db8b04b 62 from sector2 : after 16KByte of used
emperord 2:37a61db8b04b 63 Flash memory */
emperord 2:37a61db8b04b 64
emperord 2:37a61db8b04b 65 /* Pages 0 and 1 base and end addresses */
emperord 2:37a61db8b04b 66 #define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x0000))
emperord 2:37a61db8b04b 67 #define PAGE0_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1)))
emperord 2:37a61db8b04b 68 #define PAGE0_ID FLASH_SECTOR_2
emperord 2:37a61db8b04b 69
emperord 2:37a61db8b04b 70 #define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x4000))
emperord 2:37a61db8b04b 71 #define PAGE1_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1)))
emperord 2:37a61db8b04b 72 #define PAGE1_ID FLASH_SECTOR_3
emperord 2:37a61db8b04b 73
emperord 2:37a61db8b04b 74 /* Used Flash pages for EEPROM emulation */
emperord 2:37a61db8b04b 75 #define PAGE0 ((uint16_t)0x0000)
emperord 2:37a61db8b04b 76 #define PAGE1 ((uint16_t)0x0001) /* Page nb between PAGE0_BASE_ADDRESS & PAGE1_BASE_ADDRESS*/
emperord 2:37a61db8b04b 77
emperord 2:37a61db8b04b 78 /* No valid page define */
emperord 2:37a61db8b04b 79 #define NO_VALID_PAGE ((uint16_t)0x00AB)
emperord 2:37a61db8b04b 80
emperord 2:37a61db8b04b 81 /* Page status definitions */
emperord 2:37a61db8b04b 82 #define ERASED ((uint16_t)0xFFFF) /* Page is empty */
emperord 2:37a61db8b04b 83 #define RECEIVE_DATA ((uint16_t)0xEEEE) /* Page is marked to receive data */
emperord 2:37a61db8b04b 84 #define VALID_PAGE ((uint16_t)0x0000) /* Page containing valid data */
emperord 2:37a61db8b04b 85
emperord 2:37a61db8b04b 86 /* Valid pages in read and write defines */
emperord 2:37a61db8b04b 87 #define READ_FROM_VALID_PAGE ((uint8_t)0x00)
emperord 2:37a61db8b04b 88 #define WRITE_IN_VALID_PAGE ((uint8_t)0x01)
emperord 2:37a61db8b04b 89
emperord 2:37a61db8b04b 90 /* Page full define */
emperord 2:37a61db8b04b 91 #define PAGE_FULL ((uint8_t)0x80)
emperord 2:37a61db8b04b 92
emperord 2:37a61db8b04b 93 /* Variables' number */
emperord 2:37a61db8b04b 94 #define NB_OF_VAR ((uint8_t)0x09)
emperord 2:37a61db8b04b 95
emperord 2:37a61db8b04b 96 /* Exported types ------------------------------------------------------------*/
emperord 2:37a61db8b04b 97 /* Exported macro ------------------------------------------------------------*/
emperord 2:37a61db8b04b 98 /* Exported functions ------------------------------------------------------- */
emperord 2:37a61db8b04b 99 uint16_t EE_Init(void);
emperord 2:37a61db8b04b 100 uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data);
emperord 2:37a61db8b04b 101 uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data);
emperord 2:37a61db8b04b 102
emperord 2:37a61db8b04b 103 #endif /* __EEPROM_H */
emperord 2:37a61db8b04b 104
emperord 2:37a61db8b04b 105 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/