⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom_data.c

📁 本文档用于描述一体化组合模块485监控板监控对象
💻 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 + -