Non_volatile_Memorys.h 5.62 KB
Newer Older
时昊's avatar
时昊 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147


#ifndef _NON_VOLATILE_MEMORYS_H_
#define _NON_VOLATILE_MEMORYS_H_

#include "EEPROM_24Cxx_Remap.h"
#include "Maintenance.h"
#include "Maintenance_user.h"

/******************************************************************************
����ʧ�����ݴ洢������
******************************************************************************/
#define   NVM_USE_EEPROM                    1           //0���Ͽ�EEPROM,ǿ��ʹ������Ĭ��ֵ
//1��ʹ��EEPROM�������ʧ������

extern uint8_t NVMEEPROMFault;
#define   NVM_EEPROM_FAULT                  NVMEEPROMFault

/******************************************************************************
��ʼ����ʶ

���������ƣ� NVM_INIT_DATA
  �źų�Ա�� -- NVM_INIT_FLAG
******************************************************************************/
/*** �ṹ���� ***/
typedef union
{
    struct
    {
        uint8_t Flag[4];
    } Sig;

    uint8_t Data[4];
} NVMInitUnion;

/*** �źŶ��� ***/
extern NVMInitUnion                         NVMInit;

#define   NVM_INIT_FLAG                     NVMInit.Sig.Flag

/*** �ź�Ĭ��ֵ ***/
static  NVMInitUnion NVMDefaultInit =
{
    /* Flag[]                       = */      "TYW",//"TYW",   3.9���� ��T2W
};

/******************************************************************************
����ܼ�

���������ƣ� NVM_ODO_DATA
  �źų�Ա�� -- NVM_ODO_VALUE
******************************************************************************/
/*** �ṹ���� ***/
typedef union
{
    struct
    {
        uint32_t  Value;
        uint8_t   ClrCnt;
        uint8_t   Rsvd;
        uint16_t  Cleared;
    } Sig;
    uint8_t Data[8];
} NVMODOUnion;

/*** �źŶ��� ***/
extern NVMODOUnion                          NVMODO;

#define   NVM_ODO_VALUE                     NVMODO.Sig.Value
#define   NVM_ODO_CLEAR_COUNT               NVMODO.Sig.ClrCnt
#define   NVM_ODO_CLEARED                   NVMODO.Sig.Cleared

/*** �źŶ��� ***/
extern NVMODOUnion                          NVMODO_back;

#define   NVM_ODO_back_VALUE                     NVMODO_back.Sig.Value
#define   NVM_ODO_back_CLEAR_COUNT               NVMODO_back.Sig.ClrCnt
#define   NVM_ODO_back_CLEARED                   NVMODO_back.Sig.Cleared

/*** �ź�Ĭ��ֵ ***/
static  NVMODOUnion NVMDefaultODO =
{
    /* Value                        = */      0,
    /* ClrCnt                       = */      3,
    /* Rsvd                         = */      0,
    /* Cleared                      = */      0,
};

static  uint8_t  u8NVMDefaultZero[16] =
{
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};

/******************************************************************************
�洢�������Ա�
******************************************************************************/
/*** �ṹ���� ***/
typedef struct
{
    uint8_t   *pData;
    uint8_t   *pDefaultValue;
    uint8_t   Len;
    uint8_t   DataType;
    uint16_t  Addr;
} NVMDataAttributeTableStruct;

/*** �洢�����б� ***/
#define   NVM_INIT_DATA                     0
#define   NVM_ODO_DATA                      1
#define   NVM_ODO_back_DATA                 2
#define   NVM_MAINTENANCE                 3

/*** �洢�������Ա� ***/
static  NVMDataAttributeTableStruct NVMDataAttributeTable[] =
{
    /*===================================================================================================================================================================
                              |            RAM��           |                                    |                        |        ����ʧ����        | ����ʧ���ݴ洢��
             ��������         |        ���ݴ洢λ��        |               Ĭ��ֵ               |        ���ݳ���        |         �洢����         |    �д洢��ַ
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
    {/* NVM_INIT_DATA        */                NVMInit.Data,                 NVMDefaultInit.Data,         sizeof ( NVMInit ),    0,           0x0000 },
    {/* NVM_ODO_DATA         */                NVMODO.Data,                  NVMDefaultODO.Data,          sizeof ( NVMODO ),     0,           0x0001 },
    {/* NVM_ODO_DATA         */                NVMODO_back.Data,             NVMDefaultODO.Data,          sizeof ( NVMODO_back ),     0,      0x0002 },
    {/* NVM_MAINTENANCE      */                u8MaintData     ,        u8NVMDefaultZero,          16,     2,      0x0000 },
    /*=================================================================================================================================================================*/
};

/*** �洢�������� ***/
#define   NVM_TOTAL_DATA_NUM                (sizeof(NVMDataAttributeTable) / sizeof(NVMDataAttributeTableStruct))

/******************************************************************************
���ݸ��¿��ƽṹ
******************************************************************************/
typedef struct
{
    uint8_t Enable;
    uint8_t Req[NVM_TOTAL_DATA_NUM];
    uint8_t Current;
} NVMUpdateCtrlStruct;

/******************************************************************************
��������
******************************************************************************/
void NVM_Init ( void );
void NVM_Data_Update ( uint8_t DataName );
void NVM_Data_Update_Service ( void );

#endif