📄 eeprom.c
字号:
//************************************************************************
//File Name: Flash.c
//Include: Flash_Write -- Write data from variables to Flash memory
// Flash_Read -- Read data from Flash memory to variables
//Description: The Operation about flash memory. It is recommended to...
// use the information memory, but not main memory. and the...
// memories are segmentB(0x01000~0x01079) and segmentA(0x01080~0x10FF)
//************************************************************************
#include "Headfiles.h"
//************************************************************************
//Func. Name: Flash_Write
//Input variables: None
//Output variables: None
//Use sub-func.list: None
//Used by list: Keyboard.c -- Key_Treat
//Description: Write data into Flash memory. Including the...
// fllowing data and it's quantity & data type:
// 1. Control_Parameter 26 int(16bit)
// 2. Channel_Parameter 2*6 int(16bit)
// 3. System_Parameter 6 int(16bit)
// 4. L_Set 2 int(16bit)
// 5. System_Parameter_Asic 11 char(8bit)
// In addition, The last parameter "System_Parameter_Asic[10]" ...
// saved as OFF(0), although it is set ON(1)
//************************************************************************
void EEPROM_Write(void)
{
int eeprom_page, eeprom_offset;
unsigned char i;
int tmp_parameter;
eeprom_offset = EEPROM_START_ADDR & 0x00FFFF; //start address
eeprom_page = (EEPROM_START_ADDR >> 16) & 0x0000FF;
//--------------------------------------------Read 16bit data
for(i = 0; i < 26; i++)
{
ReadEE(eeprom_page, eeprom_offset, &tmp_parameter, 1);
if (tmp_parameter != Control_Parameter[i])
{
EraseEE(eeprom_page, eeprom_offset, 1);
WriteEE(&Control_Parameter[i], eeprom_page, eeprom_offset, 1);
}
eeprom_offset += 2; //pointer points next cell
}
for (i = 0; i < 6; i++)
{
ReadEE(eeprom_page, eeprom_offset, &tmp_parameter, 1);
if (tmp_parameter != Channel_Parameter[0][i])
{
EraseEE(eeprom_page, eeprom_offset, 1);
WriteEE(&Channel_Parameter[0][i], eeprom_page, eeprom_offset, 1);
}
eeprom_offset += 2;
}
for (i = 0; i < 6; i++)
{
ReadEE(eeprom_page, eeprom_offset, &tmp_parameter, 1);
if (tmp_parameter != Channel_Parameter[1][i])
{
EraseEE(eeprom_page, eeprom_offset, 1);
WriteEE(&Channel_Parameter[1][i], eeprom_page, eeprom_offset, 1);
}
eeprom_offset += 2;
}
for (i = 0; i < 6; i++)
{
ReadEE(eeprom_page, eeprom_offset, &tmp_parameter, 1);
if (tmp_parameter != System_Parameter[i])
{
EraseEE(eeprom_page, eeprom_offset, 1);
WriteEE(&System_Parameter[i], eeprom_page, eeprom_offset, 1);
}
eeprom_offset += 2;
}
for (i = 0; i < 2; i++)
{
ReadEE(eeprom_page, eeprom_offset, &tmp_parameter, 1);
if (tmp_parameter != L_Set[i])
{
EraseEE(eeprom_page, eeprom_offset, 1);
WriteEE(&L_Set[i], eeprom_page, eeprom_offset, 1);
}
eeprom_offset += 2;
}
for (i = 0; i < 2; i++)
{
ReadEE(eeprom_page, eeprom_offset, &tmp_parameter, 1);
if (tmp_parameter != System_Zero_Point[i])
{
EraseEE(eeprom_page, eeprom_offset, 1);
WriteEE(&System_Zero_Point[i], eeprom_page, eeprom_offset, 1);
}
eeprom_offset += 2;
}
for (i = 0; i < 11; i++)
{
ReadEE(eeprom_page, eeprom_offset, &tmp_parameter, 1);
if (tmp_parameter != System_Parameter_Asic[i])
{
EraseEE(eeprom_page, eeprom_offset, 1);
WriteEE(&System_Parameter_Asic[i], eeprom_page, eeprom_offset, 1);
}
eeprom_offset += 2;
}
}
//************************************************************************
//Func. Name: Flash_Read
//Input variables: None
//Output variables: None
//Use sub-func.list: None
//Used by list: Init.c -- Software_Init
//Description: Read data from Flash memory. Including the...
// fllowing data and it's quantity & data type:
// 1. Control_Parameter 26 int(16bit)
// 2. Channel_Parameter 2*6 int(16bit)
// 3. System_Parameter 6 int(16bit)
// 4. L_Set 2 int(16bit)
// 5. System_Parameter_Asic 11 char(8bit)
//************************************************************************
void EEPROM_Read(void)
{
int eeprom_page, eeprom_offset;
unsigned char i;
eeprom_offset = EEPROM_START_ADDR & 0x00FFFF; //start address
eeprom_page = (EEPROM_START_ADDR >> 16) & 0x0000FF;
//--------------------------------------------Read 16bit data
for(i = 0; i < 26; i++)
{
ReadEE(eeprom_page, eeprom_offset, &Control_Parameter[i], 1);
eeprom_offset += 2; //pointer points next cell
}
for (i = 0; i < 6; i++)
{
ReadEE(eeprom_page, eeprom_offset, &Channel_Parameter[0][i], 1);
eeprom_offset += 2;
}
for (i = 0; i < 6; i++)
{
ReadEE(eeprom_page, eeprom_offset, &Channel_Parameter[1][i], 1);
eeprom_offset += 2;
}
for (i = 0; i < 6; i++)
{
ReadEE(eeprom_page, eeprom_offset, &System_Parameter[i], 1);
eeprom_offset += 2;
}
for (i = 0; i < 2; i++)
{
ReadEE(eeprom_page, eeprom_offset, &L_Set[i], 1);
eeprom_offset += 2;
}
for (i = 0; i < 2; i++)
{
ReadEE(eeprom_page, eeprom_offset, &System_Zero_Point[i], 1);
eeprom_offset += 2;
}
for (i = 0; i < 11; i++)
{
ReadEE(eeprom_page, eeprom_offset, &System_Parameter_Asic[i], 1);
eeprom_offset += 2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -