最近看LPC2200向CAT24WC02读/写数据的程序一直没看懂,为什么程序里都没提到将这些数据从I2C EEPROM的什么地址读/写出。难道直接从0x00开始读/写吗?如果是写入一半的数据再向I2C EEPROM里写数据呢,怎么办?
/* 以下为I2C操作时所需要的变量 */ volatile uint8 I2C_sla; // 从机地址(即器件地址) volatile uint8 I2C_suba; // 子地址 volatile uint8 *I2C_buf; // 数据缓冲区指针 (读操作时会被更改) volatile uint8 I2C_num; // 操作数据个数 (会被更改) volatile uint8 I2C_end; // 操作结束标志,为1时表示操作结束,为0xFF时表示操作失败 (会被设置) volatile uint8 I2C_suba_en; // 子地址使能控制,读操作时请设置为1,写操作时请设置为2 (会被更改)
/**************************************************************************** * 名称:ISendByte() * 功能:向无子地址器件发送一字节数据。 * 入口参数:sla 器件地址 * dat 要发送的数据 * 出口参数:返回值为0时表示出错,为1时表示操作正确。 * 说明:使用前要初始化好I2C引脚功能和I2C中断,并已使能I2C主模式 ****************************************************************************/ uint8 ISendByte(uint8 sla, uint8 dat) { /* 参数设置 */ I2C_sla = sla; // 写操作的器件地址 I2C_buf = &dat; // 待发送的数据 I2C_num = 1; // 发送1字节数据 I2C_suba_en = 0; // 无子地址 I2C_end = 0; I2CONCLR = 0x2C; I2CONSET = 0x60; // 设置为主机,并启动总线 while(0==I2C_end); if(1==I2C_end) return(1); else return(0); }
|