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

📄 data_backup.c

📁 基于SPMC75的变频电机驱动例子,相当于一个简单的变频器. 望对变频器开发的工程式师有一定的帮助!
💻 C
字号:
#include "Spmc75_regs.h"
#include "mcMACRO.h"
#include "IIC_Diver.h"
#include "Backup_VAR.h"

extern const unsigned int Init_Data_Dackup[];
unsigned int EEPROM_Err;
int SAVE_Flag = 0;

//=================================================================================================
// ----Function: void Backup_Data_Read(unsigned int *Data_Temp,int Data_NUM);
// -Description: 有效数据读取程序
// --Parameters: None
// -----Returns: None
// -------Notes: 
//=================================================================================================
void Backup_Data_Read(unsigned int *Data_Temp,int Data_NUM)
{
	unsigned int Adr_Temp;
	Adr_Temp = 1 + Data_NUM * 5;							//数据指针计算,一个数据项为8字节
	Data_Temp[0] = Backup_VAR[Data_NUM];					//获取参数备份区的数据值
	Data_Temp[1] = Init_Data_Dackup[Adr_Temp];				//数据Q值
	Adr_Temp ++;
	Data_Temp[2] = Init_Data_Dackup[Adr_Temp]&0x000f;		//数据属性
	Data_Temp[3] = (Init_Data_Dackup[Adr_Temp] >> 4)&0x000f;//数据的存贮属性
	Adr_Temp ++;
	Data_Temp[4] = Init_Data_Dackup[Adr_Temp];				//数据的最小值
	Adr_Temp ++;
	Data_Temp[5] = Init_Data_Dackup[Adr_Temp];				//数据的最大值
}

//=================================================================================================
// ----Function: unsigned int Backup_Read(int Data_NUM);
// -Description: 读取EEPROM中的数据
// --Parameters: None
// -----Returns: None
// -------Notes: 
//=================================================================================================
unsigned int Backup_Read(int Data_NUM)
{
	unsigned int Add_Temp,Data_Temp;
	Add_Temp = Data_NUM * 2;
	Data_Temp = IIC_Read_B(Add_Temp);				//数据值
	Add_Temp ++;
	Data_Temp = Data_Temp*256 + IIC_Read_B(Add_Temp);
	return(Data_Temp);
}

//=================================================================================================
// ----Function: void Data_Write(int Data_NUM,unsigned int Data);
// -Description: 写入一个数据
// --Parameters: None
// -----Returns: None
// -------Notes: 
//=================================================================================================
void Data_Write(int Data_NUM,unsigned int Data)
{
	Data_NUM = Data_NUM * 2;
	IIC_Write_B(Data_NUM,(Data >> 8)&0xff);
	Data_NUM ++;
	IIC_Write_B(Data_NUM,Data&0xff);
}

//=================================================================================================
// ----Function: void EEPROM_Format(void);
// -Description: EEPROM格式化,包括出厂数据载入
// --Parameters: None
// -----Returns: None
// -------Notes: 
//=================================================================================================
void EEPROM_Format(int Set)
{
	int i;
	unsigned int *P_Data;
	P_Data = (unsigned int *)Init_Data_Dackup;
	if(Set > 0)
	{
		for(i = 0;i < 45;i ++)
		{
			Data_Write(i,*P_Data);		//写入一组数据
			P_Data += 5;				//指向下一组
		}
		P_Data += 25;
		for(i = 50;i < 75;i ++)
		{
			Data_Write(i,*P_Data);		//写入一组数据
			Backup_VAR[i] = *P_Data;
			P_Data += 5;				//指向下一组
		}
	}
	else
	{
		for(i = 0;i < Init_Data_Dackup[0];i ++)
		{
			Data_Write(i,*P_Data);		//写入一组数据
			Backup_VAR[i] = *P_Data;
			P_Data += 5;				//指向下一组
		}
	}
}

//=================================================================================================
// ----Function: void Save_define(void);
// -Description: 参数保存
// --Parameters: None
// -----Returns: None
// -------Notes: 
//=================================================================================================
void Save_define(void)
{
	SAVE_Flag = 1;
	Data_Write(0,Backup_VAR[0]);			//数据写入,只是数据值,其它数据由存贮初始化决定
	Data_Write(1,Backup_VAR[1]);
	SAVE_Flag = 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -