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

📄 drv_eeprom.c

📁 CC1000 Rf modem C codes for philips sLpc213X ARM MCU.
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "config_GD61.h"
#include "include_GD61.h"
#include <stdio.h>

#define	CHIP_CAT1025		0xA0		//CHIP_CAT1025器件从地址
#define	ONE_BYTE_SUBA		1
#define TWO_BYTE_SUBA		2
#define X_ADD_8_SUBA		3


#define EEPROM_P_SIZE		16
#define EEPROM_P_NUM		16

extern uint16 	ModuleAddress;
extern uint16 	PowerLine_ID;

extern uint16 	TubeNumber;

extern uint16	TransferKKK;
extern uint16	ControlTime;
extern uint16   MaxInputLimitII;

extern volatile uint16 OutReadyTimer;
extern volatile uint16 mSecondTick;

extern TIMEACTION ActionTime[MAX_CONTROL_TABLE_NUM];
extern ROUTETABLE UpRouteTable[MAX_BRANCH_LINE_NUM];
extern ROUTETABLE DnRouteTable[MAX_BRANCH_LINE_NUM];

/* 定义用于和I2C中断传递信息的全局变量 */
volatile uint8 	I2C_sla;			//I2C器件从地址
volatile uint32	I2C_suba;			//I2C器件内部子地址
volatile uint8 	I2C_suba_num;		//I2C子地址字节数
volatile uint8 	*I2C_buf;        	//数据缓冲区指针
volatile uint32 I2C_num;			//要读取/写入的数据个数
volatile uint8 	I2C_end;			//I2C总线结束标志:结束总线是置1
volatile uint8 	I2C_suba_en;		// 	子地址控制。
									//	0--子地址已经处理或者不需要子地址
									//	1--读取操作
									//	2--写操作

/////////////////////////////////////////////////////////////////////////
extern int32 ADC_IIK_Value;		//calibrate K for I
extern int32 ADC_UUK_Value;		//calibrate K for U
extern int32 ADC_WPK_Value;		//calibrate K for WP
extern int32 ADC_QPK_Value;		//calibrate K for QP
extern int32 ADC_SPK_Value;		//calibrate K for SP

extern int32 CurInputScale_I;
extern int32 CurInputScale_U;

//extern int32 CurOutput_RO;
//extern int32 CurOutput_LC;

extern int32 StdOutput_RO;
extern int32 StdOutput_LC;

extern uint16 ActionValue;	//action value corresponding to action code
////////////////////////////////////////////////////////////////////////

void SaveADC_UK(void);
void SaveADC_IK(void);
void SaveLineID(void);
void SaveModuleAddr(void);

void SaveTransferKKK(void);
void SaveControlTime(void);

void Save_II_Limit(void);
void SaveLampNumber(void);

void SaveControlTable(void);
void SaveRouteTableUP(void);
void SaveRouteTableDN(void);

uint8  I2C_SendByte(uint8 sla, uint8 dat);
uint8  I2C_RcvByte(uint8 sla, uint8 *dat);
uint8 I2C_ReadNByte (uint8 sla, uint32 suba_type, uint32 suba, uint8 *s, uint32 num);
uint8 I2C_WriteNByte(uint8 sla, uint8 suba_type, uint32 suba, uint8 *s, uint32 num);
void __irq IRQ_I2C_Serving(void);
void I2C_StopAct(void);
void I2C_Initialize(uint32 Fi2c);

void TestEEprom(void);
void GetSysConfig(void);

///////////////////////////////////////////////////////////////////////
void SaveADC_UK(void)
{
uint8 databuff[2];

	Uart0SendString("Save ADC_UK");
	
	ADC_UUK_Value=ActionValue*1000;
	ADC_UUK_Value=ADC_UUK_Value/CurInputScale_U;
	
	databuff[1]=(uint8)(ADC_UUK_Value>>8); databuff[0]=(uint8)ADC_UUK_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ADC_UK_ADDRESS,databuff,2);
	DelayMS_(10);
}

///////////////////////////////////////////////////////////////////////
void SaveADC_IK(void)
{
uint8 databuff[2];

	Uart0SendString("Save ADC_IK");

	ADC_IIK_Value=ActionValue*1000;
	ADC_IIK_Value=ADC_IIK_Value/CurInputScale_I;
	
	databuff[1]=(uint8)(ADC_IIK_Value>>8); databuff[0]=(uint8)ADC_IIK_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ADC_IK_ADDRESS,databuff,2);
	DelayMS_(10);
}

//////////////////////////////////////////////////////////////////////
void SaveLineID(void)
{
uint8 databuff[2];

	Uart0SendString("Save LineID");

	databuff[1]=PowerLine_ID>>8; databuff[0]=PowerLine_ID;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ADDR_LINE_NUM,databuff,2);
	DelayMS_(10);
}

/////////////////////////////////////////////////////////////////////
void SaveModuleAddr(void)
{
uint8 databuff[2];

	Uart0SendString("Save ModuleAddr");
	databuff[1]=ModuleAddress>>8; databuff[0]=ModuleAddress;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,MODULE_ADDR_XX,databuff,2);
	DelayMS_(10);
}

//////////////////////////////////////////////////////////////////////
void SaveLampNumber(void)
{
uint8 databuff[2];

	Uart0SendString("Save TubeNumber");
	databuff[1]=TubeNumber>>8; databuff[0]=TubeNumber;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ADDR_LAMP_NUM,databuff,2);
	DelayMS_(10);
}

//////////////////////////////////////////////////////////////////////
void SaveTransferKKK(void)
{
uint8 databuff[2];

	Uart0SendString("Save transfer coefficient");
	databuff[1]=TransferKKK>>8; databuff[0]=TransferKKK;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,TRANSFER_KKK_ADDR,databuff,2);
	DelayMS_(10);
}

//////////////////////////////////////////////////////////////////////
void Save_II_Limit(void)
{
#ifdef EN_LOAD_LIMIT_PROTECT

uint8 databuff[2];
	Uart0SendString("Save load_I limit value");
	databuff[1]=MaxInputLimitII>>8; databuff[0]=MaxInputLimitII;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,LOAD_I_LIMIT_ADDR,databuff,2);
	DelayMS_(10);

#endif
}

//////////////////////////////////////////////////////////////////////
void SaveControlTime(void)
{
uint8 databuff[2];

	Uart0SendString("Save control interval_time");
	databuff[1]=ControlTime>>8; databuff[0]=ControlTime;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,CONTROL_TIME_ADDR,databuff,2);
	DelayMS_(10);
}

////////////////////////////////////////////////////////////////////
void SaveControlTable(void)
{
uint8 databuff[2];

	WatchDogClear();				//clr watchdog
	Uart0SendString("Save ControlTable");

////0
	databuff[1]=ActionTime[0].xHOUR;
	databuff[0]=ActionTime[0].xMIN;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM0_HOUR_MIN,databuff,2);
	DelayMS_(10);

	databuff[1]=ActionTime[0].Action_Value>>8;
	databuff[0]=ActionTime[0].Action_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM0_ACT_VALUE,databuff,2);
	DelayMS_(10);
////1
	databuff[1]=ActionTime[1].xHOUR;
	databuff[0]=ActionTime[1].xMIN;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM1_HOUR_MIN,databuff,2);
	DelayMS_(10);

	databuff[1]=ActionTime[1].Action_Value>>8;
	databuff[0]=ActionTime[1].Action_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM1_ACT_VALUE,databuff,2);
	DelayMS_(10);
////2
	databuff[1]=ActionTime[2].xHOUR;
	databuff[0]=ActionTime[2].xMIN;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM2_HOUR_MIN,databuff,2);
	DelayMS_(10);

	databuff[1]=ActionTime[2].Action_Value>>8;
	databuff[0]=ActionTime[2].Action_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM2_ACT_VALUE,databuff,2);
	DelayMS_(10);
////3
	databuff[1]=ActionTime[3].xHOUR;
	databuff[0]=ActionTime[3].xMIN;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM3_HOUR_MIN,databuff,2);
	DelayMS_(10);

	databuff[1]=ActionTime[3].Action_Value>>8;
	databuff[0]=ActionTime[3].Action_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM3_ACT_VALUE,databuff,2);
	DelayMS_(10);
////4
	databuff[1]=ActionTime[4].xHOUR;
	databuff[0]=ActionTime[4].xMIN;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM4_HOUR_MIN,databuff,2);
	DelayMS_(10);

	databuff[1]=ActionTime[4].Action_Value>>8;
	databuff[0]=ActionTime[4].Action_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM4_ACT_VALUE,databuff,2);
	DelayMS_(10);
////5
	databuff[1]=ActionTime[5].xHOUR;
	databuff[0]=ActionTime[5].xMIN;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM5_HOUR_MIN,databuff,2);
	DelayMS_(10);

	databuff[1]=ActionTime[5].Action_Value>>8;
	databuff[0]=ActionTime[5].Action_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM5_ACT_VALUE,databuff,2);
	DelayMS_(10);
////6
	databuff[1]=ActionTime[6].xHOUR;
	databuff[0]=ActionTime[6].xMIN;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM6_HOUR_MIN,databuff,2);
	DelayMS_(10);

	databuff[1]=ActionTime[6].Action_Value>>8;
	databuff[0]=ActionTime[6].Action_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM6_ACT_VALUE,databuff,2);
	DelayMS_(10);
////7
	databuff[1]=ActionTime[7].xHOUR;
	databuff[0]=ActionTime[7].xMIN;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM7_HOUR_MIN,databuff,2);
	DelayMS_(10);

	databuff[1]=ActionTime[7].Action_Value>>8;
	databuff[0]=ActionTime[7].Action_Value;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,ACT_TM7_ACT_VALUE,databuff,2);
	DelayMS_(10);
}

/////////////////////////////////////////////////////////////////////
void SaveRouteTableUP(void)
{
uint8 databuff[2];

	Uart0SendString("Save RouteTableUP");
	
	databuff[0]=UpRouteTable[0].vaildAddrItemNum;
	databuff[1]=0x5a;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE0_ITEM_,databuff,2);
////0
	databuff[1]=UpRouteTable[0].Dest_ADDR[0]>>8;
	databuff[0]=UpRouteTable[0].Dest_ADDR[0];
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE0_ADDR0,databuff,2);
////1	
	databuff[1]=UpRouteTable[0].Dest_ADDR[1]>>8;
	databuff[0]=UpRouteTable[0].Dest_ADDR[1];
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE0_ADDR1,databuff,2);
////2
	databuff[1]=UpRouteTable[0].Dest_ADDR[2]>>8;
	databuff[0]=UpRouteTable[0].Dest_ADDR[2];
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE0_ADDR2,databuff,2);
////3
	databuff[1]=UpRouteTable[0].Dest_ADDR[3]>>8;
	databuff[0]=UpRouteTable[0].Dest_ADDR[3];
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE0_ADDR3,databuff,2);
////4
	databuff[1]=UpRouteTable[0].Dest_ADDR[4]>>8;
	databuff[0]=UpRouteTable[0].Dest_ADDR[4];
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE0_ADDR4,databuff,2);

/////////////////////////////////////////////////////////////////////
	databuff[0]=UpRouteTable[1].vaildAddrItemNum;
	databuff[1]=0x5a;
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE1_ITEM_,databuff,2);
////0
	databuff[1]=UpRouteTable[1].Dest_ADDR[0]>>8;
	databuff[0]=UpRouteTable[1].Dest_ADDR[0];
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE1_ADDR0,databuff,2);
////1	
	databuff[1]=UpRouteTable[1].Dest_ADDR[1]>>8;
	databuff[0]=UpRouteTable[1].Dest_ADDR[1];
	I2C_WriteNByte(CHIP_CAT1025,ONE_BYTE_SUBA,UP_R_TABLE1_ADDR1,databuff,2);

⌨️ 快捷键说明

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