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