This commit is contained in:
2026-03-20 21:16:58 +08:00
parent 286ff98b8e
commit 90c3d919df
248 changed files with 94554 additions and 0 deletions

95
library/inc/lh32m0g3x_eeprom.h Executable file
View 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**********************************/