NULL
This commit is contained in:
95
library/inc/lh32m0g3x_eeprom.h
Executable file
95
library/inc/lh32m0g3x_eeprom.h
Executable file
@@ -0,0 +1,95 @@
|
||||
/******************************************************************************
|
||||
* 版权所有:苏州领慧立芯科技有限公司
|
||||
* Copyright (c) 2020-2025 Suzhou Legendsemi Technology Co., Ltd.
|
||||
******************************************************************************
|
||||
* All rights reserved. Distributed under MIT license.
|
||||
* The file is encoded in UTF-8 without signature.
|
||||
* @file lh32m0g30x_eeprom.h
|
||||
* @version 2025-09-23
|
||||
******************************************************************************/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __LH32M0G3x_EEPROM_H
|
||||
#define __LH32M0G3x_EEPROM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "lh32m0xx_lhl.h"
|
||||
|
||||
/* Definition ----------------------------------------------------------------*/
|
||||
#define EEPROM_PAGE_ERASE 0xFFFFFFFFu /* EEPROM 页面擦除标志 */
|
||||
|
||||
#define EEPROM_PAGE_VALID 0xA5A5A5A5u /* EEPROM 数据有效标志 */
|
||||
|
||||
#define EEPROM_MEMORY_SIZE 0x04u /* EEPROM 条目大小为4BYTE */
|
||||
|
||||
#define EEPROM_PAGE_SIZE 0x1000u /* 单页面包含1000个条目 */
|
||||
|
||||
#define EEPROM_INITIAL_VERSION 0x00FFFFFFu /* EEPROM 初始版本,递减 */
|
||||
|
||||
typedef enum {
|
||||
EEPROM_STATE_INIT = 0u,
|
||||
EEPROM_STATE_PAGE_A_ACTIVE,
|
||||
EEPROM_STATE_SWAP_A_TO_B,
|
||||
EEPROM_STATE_PAGE_B_ACTIVE,
|
||||
EEPROM_STATE_SWAP_B_TO_A,
|
||||
EEPROM_STATE_ERROR,
|
||||
} EEPROM_FSM_t; /*!< EEPROM状态机:Error->Init->[A->SWAP->B->SWAP->A] */
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint8_t Device_ID; /*!< 虚拟EEPROM设备ID,由此可实现多个Instance */
|
||||
|
||||
uint8_t Reserved[3];
|
||||
|
||||
FLASH_PAGE_t PageA; /*!< 虚拟EEPROM页面A */
|
||||
|
||||
FLASH_PAGE_t PageB; /*!< 虚拟EEPROM页面B */
|
||||
|
||||
} EEPROM_InitTypeDef;
|
||||
|
||||
typedef struct {
|
||||
|
||||
EEPROM_FSM_t State; /*!< 虚拟EEPROM Instance FSM */
|
||||
|
||||
uint8_t Reserved[3];
|
||||
|
||||
uint32_t Cursor; /*!< 活动页面有效写入地址 */
|
||||
|
||||
uint32_t Version; /*!< 活动页面有效数据版本号 */
|
||||
|
||||
FLASH_PAGE_t ActivePage; /*!< 当前活动页面 */
|
||||
|
||||
FLASH_PAGE_t BackupPage; /*!< 后台备用页面 */
|
||||
|
||||
EEPROM_InitTypeDef Init; /*!< 初始化参数 */
|
||||
|
||||
} EEPROM_HandleTypeDef;
|
||||
|
||||
/* Declaration ---------------------------------------------------------------*/
|
||||
void LHL_EEPROM_ChipErase(EEPROM_HandleTypeDef* EEPROM_Handle);
|
||||
|
||||
void LHL_EEPROM_GarbageCollection(EEPROM_HandleTypeDef* EEPROM_Handle);
|
||||
|
||||
uint32_t LHL_EEPROM_GetCursor(EEPROM_HandleTypeDef* EEPROM_Handle);
|
||||
|
||||
LHL_StatusTypeDef LHL_EEPROM_Init(EEPROM_HandleTypeDef* EEPROM_Handle);
|
||||
|
||||
void LHL_EEPROM_InitCallback(EEPROM_HandleTypeDef *handle);
|
||||
|
||||
void LHL_EEPROM_InitErrorCallback(EEPROM_HandleTypeDef *handle);
|
||||
|
||||
LHL_StatusTypeDef LHL_EEPROM_Read(EEPROM_HandleTypeDef* EEPROM_Handle, uint8_t address, uint32_t* data, uint8_t size);
|
||||
|
||||
LHL_StatusTypeDef LHL_EEPROM_Write(EEPROM_HandleTypeDef* EEPROM_Handle, uint8_t address, uint32_t* data, uint8_t size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************End of File**********************************/
|
||||
Reference in New Issue
Block a user