LCM — CH32V003 Light Control Module
Light Control Module, I2C slave
Loading...
Searching...
No Matches
user_data.c File Reference
#include "user_data.h"
#include "ch32v00x_conf.h"

Go to the source code of this file.

Macros

#define USER_DATA_OB_HALFWORD_BASE   8U
 
#define USER_DATA_CR_OPTPG_Set   ((uint32_t)0x00000010)
 
#define USER_DATA_CR_OPTPG_Reset   ((uint32_t)0xFFFFFFEF)
 
#define USER_DATA_CR_OPTER_Set   ((uint32_t)0x00000020)
 
#define USER_DATA_CR_OPTER_Reset   ((uint32_t)0xFFFFFFDF)
 
#define USER_DATA_CR_STRT_Set   ((uint32_t)0x00000040)
 
#define USER_DATA_CR_LOCK_Set   ((uint32_t)0x00000080)
 
#define USER_DATA_FLASH_KEY1   ((uint32_t)0x45670123)
 
#define USER_DATA_FLASH_KEY2   ((uint32_t)0xCDEF89AB)
 

Functions

static UserData_Status UserData_FlashWait (void)
 
static void UserData_UnlockFlash (void)
 
static void UserData_LockFlash (void)
 
static UserData_Status UserData_VerifyHalfword (uint16_t hw)
 
static void UserData_CacheFillErased (void)
 
static UserData_Status UserData_LoadFromFlash (void)
 
static UserData_Status UserData_ProgramHalfwordRaw (volatile uint16_t *addr, uint16_t value)
 
static UserData_Status UserData_ProgramUserByte (volatile uint16_t *addr, uint8_t data)
 
UserData_Status UserData_Commit (void)
 
UserData_Status UserData_Init (void)
 
uint8_t UserData_Capacity (void)
 
static UserData_Status UserData_CheckRange (uint8_t offset, uint8_t len)
 
UserData_Status UserData_Read (uint8_t offset, uint8_t *buf, uint8_t len)
 
UserData_Status UserData_Write (uint8_t offset, const uint8_t *buf, uint8_t len)
 
UserData_Status UserData_ReadByte (uint8_t offset, uint8_t *value)
 
UserData_Status UserData_WriteByte (uint8_t offset, uint8_t value)
 
UserData_Status UserData_Fill (uint8_t offset, uint8_t len, uint8_t value)
 
UserData_Status UserData_Erase (void)
 
uint8_t UserData_IsDirty (void)
 
uint8_t * UserData_Buffer (void)
 
const uint8_t * UserData_ConstBuffer (void)
 
UserData_Status UserData_ReadFlashPageRaw (uint8_t *page)
 

Variables

static uint8_t s_user_cache [USER_DATA_CAPACITY]
 
static uint8_t s_dirty
 

Macro Definition Documentation

◆ USER_DATA_CR_LOCK_Set

#define USER_DATA_CR_LOCK_Set   ((uint32_t)0x00000080)

Definition at line 55 of file user_data.c.

Referenced by UserData_LockFlash().

◆ USER_DATA_CR_OPTER_Reset

#define USER_DATA_CR_OPTER_Reset   ((uint32_t)0xFFFFFFDF)

Definition at line 53 of file user_data.c.

Referenced by UserData_Commit().

◆ USER_DATA_CR_OPTER_Set

#define USER_DATA_CR_OPTER_Set   ((uint32_t)0x00000020)

Definition at line 52 of file user_data.c.

Referenced by UserData_Commit().

◆ USER_DATA_CR_OPTPG_Reset

#define USER_DATA_CR_OPTPG_Reset   ((uint32_t)0xFFFFFFEF)

Definition at line 51 of file user_data.c.

Referenced by UserData_Commit().

◆ USER_DATA_CR_OPTPG_Set

#define USER_DATA_CR_OPTPG_Set   ((uint32_t)0x00000010)

Definition at line 50 of file user_data.c.

Referenced by UserData_Commit().

◆ USER_DATA_CR_STRT_Set

#define USER_DATA_CR_STRT_Set   ((uint32_t)0x00000040)

Definition at line 54 of file user_data.c.

Referenced by UserData_Commit().

◆ USER_DATA_FLASH_KEY1

#define USER_DATA_FLASH_KEY1   ((uint32_t)0x45670123)

Definition at line 56 of file user_data.c.

Referenced by UserData_UnlockFlash().

◆ USER_DATA_FLASH_KEY2

#define USER_DATA_FLASH_KEY2   ((uint32_t)0xCDEF89AB)

Definition at line 57 of file user_data.c.

Referenced by UserData_UnlockFlash().

◆ USER_DATA_OB_HALFWORD_BASE

#define USER_DATA_OB_HALFWORD_BASE   8U

Definition at line 47 of file user_data.c.

Referenced by UserData_Commit(), and UserData_LoadFromFlash().

Function Documentation

◆ UserData_Buffer()

uint8_t * UserData_Buffer ( void )

Definition at line 572 of file user_data.c.

References s_user_cache.

◆ UserData_CacheFillErased()

static void UserData_CacheFillErased ( void )
static

Definition at line 184 of file user_data.c.

References s_user_cache, and USER_DATA_CAPACITY.

Referenced by UserData_Init().

◆ UserData_Capacity()

uint8_t UserData_Capacity ( void )

Definition at line 458 of file user_data.c.

References USER_DATA_CAPACITY.

◆ UserData_CheckRange()

static UserData_Status UserData_CheckRange ( uint8_t offset,
uint8_t len )
static

◆ UserData_Commit()

◆ UserData_ConstBuffer()

const uint8_t * UserData_ConstBuffer ( void )

Definition at line 577 of file user_data.c.

References s_user_cache.

◆ UserData_Erase()

UserData_Status UserData_Erase ( void )

Definition at line 562 of file user_data.c.

References USER_DATA_CAPACITY, and UserData_Fill().

◆ UserData_Fill()

UserData_Status UserData_Fill ( uint8_t offset,
uint8_t len,
uint8_t value )

Definition at line 544 of file user_data.c.

References s_dirty, s_user_cache, USER_DATA_OK, and UserData_CheckRange().

Referenced by UserData_Erase().

◆ UserData_FlashWait()

static UserData_Status UserData_FlashWait ( void )
static

◆ UserData_Init()

UserData_Status UserData_Init ( void )

Definition at line 437 of file user_data.c.

References s_dirty, USER_DATA_ERR_BUSY, USER_DATA_OK, UserData_CacheFillErased(), and UserData_LoadFromFlash().

Referenced by main().

◆ UserData_IsDirty()

uint8_t UserData_IsDirty ( void )

Definition at line 567 of file user_data.c.

References s_dirty.

◆ UserData_LoadFromFlash()

static UserData_Status UserData_LoadFromFlash ( void )
static

◆ UserData_LockFlash()

static void UserData_LockFlash ( void )
static

Definition at line 132 of file user_data.c.

References USER_DATA_CR_LOCK_Set.

Referenced by UserData_Commit().

◆ UserData_ProgramHalfwordRaw()

static UserData_Status UserData_ProgramHalfwordRaw ( volatile uint16_t * addr,
uint16_t value )
static

Definition at line 291 of file user_data.c.

References UserData_FlashWait().

Referenced by UserData_Commit().

◆ UserData_ProgramUserByte()

static UserData_Status UserData_ProgramUserByte ( volatile uint16_t * addr,
uint8_t data )
static

Definition at line 315 of file user_data.c.

References UserData_FlashWait().

Referenced by UserData_Commit().

◆ UserData_Read()

UserData_Status UserData_Read ( uint8_t offset,
uint8_t * buf,
uint8_t len )

Definition at line 488 of file user_data.c.

References s_user_cache, USER_DATA_ERR_PARAM, USER_DATA_OK, and UserData_CheckRange().

Referenced by UserData_ReadByte().

◆ UserData_ReadByte()

UserData_Status UserData_ReadByte ( uint8_t offset,
uint8_t * value )

Definition at line 531 of file user_data.c.

References USER_DATA_ERR_PARAM, and UserData_Read().

Referenced by LCM_LoadConfig().

◆ UserData_ReadFlashPageRaw()

UserData_Status UserData_ReadFlashPageRaw ( uint8_t * page)

◆ UserData_UnlockFlash()

static void UserData_UnlockFlash ( void )
static

Definition at line 116 of file user_data.c.

References USER_DATA_FLASH_KEY1, and USER_DATA_FLASH_KEY2.

Referenced by UserData_Commit().

◆ UserData_VerifyHalfword()

static UserData_Status UserData_VerifyHalfword ( uint16_t hw)
static

Definition at line 158 of file user_data.c.

References USER_DATA_ERR_FLASH, and USER_DATA_OK.

Referenced by UserData_LoadFromFlash().

◆ UserData_Write()

UserData_Status UserData_Write ( uint8_t offset,
const uint8_t * buf,
uint8_t len )

◆ UserData_WriteByte()

UserData_Status UserData_WriteByte ( uint8_t offset,
uint8_t value )

Definition at line 539 of file user_data.c.

References UserData_Write().

Variable Documentation

◆ s_dirty

uint8_t s_dirty
static

◆ s_user_cache