📄 eeprom_data.c
字号:
#include "stdafx.h"
#include "struct.h"
#include "eeprom.h"
#include "eeprom_data.h"
#include "tabcode.h"
#include "variable.h"
#include <string.h>
#include "uart.h"
/////////////////////////////////////////////////////////
void Check_EEPROM_data()
{
static U8 data_check = 0;
switch(data_check)
{
case 0:
property_data_check();
pa_out_data_check();
data_check = 1;
break;
case 1:
lna_data_check();
data_check = 2;
break;
case 2:
invert_data_check();
data_check = 0;
break;
default:
data_check = 0;
break;
}
}
void property_data_check(void)
{
U8 i;
U8 error;
U8 len;
U8 j;
len = sizeof(PropertyStruct);
error = 0;
//goto qq123;
if(((PropertyDesc.CRC_High==0)&&(PropertyDesc.CRC_Low==0))
||(Verify_CRC((U8 *)&PropertyDesc, len)!=TRUE))
{
while (error < 3)
{
if(eeprom_read_block(I2C_PROPERTY_MEMORY,(U8 *)&PropertyDesc,len))
{
if(((PropertyDesc.CRC_High==0)&&(PropertyDesc.CRC_Low==0))
||(Verify_CRC((U8 *)&PropertyDesc,len)!=TRUE))
{
++error;
}
else
{
break;
}
}
else
{
++error;
}
if (error > 2)
{
//qq123:
memcpy((U8 *)&PropertyDesc,(U8 *)&PropertyCodeDesc,len);
Add_CRC((U8 *)&PropertyDesc,(sizeof(PropertyStruct)-2));
j = 0;
while(len)
{
i=Seek_EEPROM();
EepromBuffDesc[i].MemAddr=I2C_PROPERTY_MEMORY+(j * I2C_PAGE_LEN);
EepromBuffDesc[i].BuffAddr=(U16)&PropertyDesc + (j * I2C_PAGE_LEN);
if(len <= I2C_PAGE_LEN)
{
EepromBuffDesc[i].Len=len;
break;
}
else
{
EepromBuffDesc[i].Len=I2C_PAGE_LEN;
len-= I2C_PAGE_LEN;
}
++j;
}
}
}
}
}
void pa_out_data_check(void)
{
U8 i;
U8 error;
U8 j;
U8 len;
len = sizeof(TabStruct);
error = 0;
if(((PaOutTabDesc.CRCH==0)&&(PaOutTabDesc.CRCL==0))
||(Verify_CRC((U8 *)&PaOutTabDesc,len)!=TRUE))
{
while (error < 3)
{
if(eeprom_read_block(I2C_PA_OUT_MEMORY,(U8 *)&PaOutTabDesc,len))
{
if(((PaOutTabDesc.CRCH==0)&&(PaOutTabDesc.CRCL==0))
||(Verify_CRC((U8 *)&PaOutTabDesc,len)!=TRUE))
{
++error;
}
else
{
break;
}
}
else
{
++error;
}
if (error > 2)
{
//flash
memcpy((U8 *)&PaOutTabDesc,(U8 *)&PaOutCodeTabDesc,len);
Add_CRC((U8 *)&PaOutTabDesc,(sizeof(PaOutTabDesc)-2));
j = 0;
while(len)
{
i=Seek_EEPROM();
EepromBuffDesc[i].MemAddr=I2C_PA_OUT_MEMORY + (j * I2C_PAGE_LEN);
EepromBuffDesc[i].BuffAddr=(U16)&PaOutTabDesc + (j * I2C_PAGE_LEN);
if (len <= I2C_PAGE_LEN)
{
EepromBuffDesc[i].Len=len;
len = 0;
}
else
{
EepromBuffDesc[i].Len= I2C_PAGE_LEN;
len -= I2C_PAGE_LEN;
}
++j;
}
}
}
}
}
void lna_data_check(void)
{
U8 i;
U8 error;
U8 j;
U8 len;
len = sizeof(TabStruct);
error = 0;
if(((LnaTabDesc.CRCH==0)&&(LnaTabDesc.CRCL==0))
||(Verify_CRC((U8 *)&LnaTabDesc,len)!=TRUE))
{
while (error < 3)
{
if(eeprom_read_block(I2C_LNA_MEMORY,(U8 *)&LnaTabDesc,len))
{
if(((LnaTabDesc.CRCH==0)&&(LnaTabDesc.CRCL==0))
||(Verify_CRC((U8 *)&LnaTabDesc,len)!=TRUE))
{
++error;
}
else
{
break;
}
}
else
{
++error;
}
if (error > 2)
{
////read flash
memcpy((U8 *)&LnaTabDesc,(U8 *)&LnaCodeTabDesc,len);
Add_CRC((U8 *)&LnaTabDesc,(sizeof(LnaTabDesc)-2));
j = 0;
while(len)
{
i=Seek_EEPROM();
EepromBuffDesc[i].MemAddr=I2C_LNA_MEMORY + (j * I2C_PAGE_LEN);
EepromBuffDesc[i].BuffAddr=(U16)&LnaTabDesc + (j * I2C_PAGE_LEN);
if (len <= I2C_PAGE_LEN)
{
EepromBuffDesc[i].Len=len;
len = 0;
}
else
{
EepromBuffDesc[i].Len= I2C_PAGE_LEN;
len -= I2C_PAGE_LEN;
}
++j;
}
}
}
}
}
void invert_data_check(void)
{
U8 i;
U8 error;
U8 j;
U8 len;
len = sizeof(TabStruct);
error = 0;
if(((InvertTabDesc.CRCH==0)&&(InvertTabDesc.CRCL==0))
||(Verify_CRC((U8 *)&InvertTabDesc,len)!=TRUE))
{
while (error < 3)
{
if(eeprom_read_block(I2C_INVERT_MEMORY,(U8 *)&InvertTabDesc,len))
{
if(((InvertTabDesc.CRCH==0)&&(InvertTabDesc.CRCL==0))
||(Verify_CRC((U8 *)&InvertTabDesc,len)!=TRUE))
{
++error;
}
else
{
break;
}
}
else
{
++error;
}
if (error > 2)
{
////flash read
memcpy((U8 *)&InvertTabDesc,(U8 *)&InvertCodeTabDesc,len);
Add_CRC((U8 *)&InvertTabDesc,(sizeof(InvertTabDesc)-2));
j = 0;
while(len)
{
i=Seek_EEPROM();
EepromBuffDesc[i].MemAddr=I2C_INVERT_MEMORY + (j * I2C_PAGE_LEN);
EepromBuffDesc[i].BuffAddr=(U16)&InvertTabDesc + (j * I2C_PAGE_LEN);
if (len <= I2C_PAGE_LEN)
{
EepromBuffDesc[i].Len=len;
len = 0;
}
else
{
EepromBuffDesc[i].Len= I2C_PAGE_LEN;
len -= I2C_PAGE_LEN;
}
++j;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -