基于RTOS的太阳能热水控制系统设计
除此之外,还可以按照设计的需要自行增加帧的类型,以实现更为复杂的通信。
4 系统外存储器EEPROM
由于控制中经常会涉及到参数的更改,为了使掉电后不影响系统的运行,即需要参数能够重现,系统采用带有I2C总线接口的EEPROM 2402芯片实现数据的存储和读取。读和写分别调用的两个函数如下:
unsigned char eepromread(unsigned char beginbyte){
unsigned char data result;
unsigned char i;
EA=0;
i=RW24XX(&result,1,beginbyte,READ_OP,M2402);
EA=1;
return(result);
}
/******************************************************
unsigned char i;
EA=0;
i=RW24XX(&datum,beginbyte,WRITE_OP,M2402);
EA=1;
}
可以看出,函数RW24XX是对EEPROM外存储芯片操作的主体函数,这里给出该函数中包含参数的定义:
bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address,unsigned char ControlByte,enum eepromtype EepromType)
其中,DataBuff为读写数据输入输出缓冲区的首地址,ByteQuantity为要读写数据的字节数,Address为EEPROM芯片的片内地址,ControlByte是EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1,表示读操作,R/W=0为写操作,A2、A1、A0为EEPROM的页选或片选地址;EepromType为枚举变量,需为M2401~M24256中的一种,分别对应24C01~24C256,本系统中为M2402;函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功;ERRORCOUNT为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作,并返回1。
图5
在该函数中,调用的若干I2C总线函数如下:
void IICStart(void);
void IICStop(void);
bit IICRecAck(void);
void IICNoAck(void);
void IICAck(void);
unsigned char IICReceiveByte(void);
《基于RTOS的太阳能热水控制系统设计(第3页)》