之前一直读不出数据,设备地址对了,宏定义添加了,但就是读不出数据,调试这个花了我一天半的时间!不能忍:检查自己确实没有错误后,唯一一个需要注意的地方就是,写函数后不能立即调用读函数,因为在写需要一定时间,如果还没写完就去读那就会读取失败。
写函数需要注意跨页问题,读函数则不用,直接读就好。
关于跨页,不同芯片对应不同页数和一页的字节数,在传进来的地址需要判断是否已经另起一页,特别注意:一定要延时,留时间给上页写入完成,才能写新的一页数据。
uint8 My_I2C_Mem_Write(uint32 addr, uint8 len, uint8 *pBuf)
{
uint8 addrL = 0, addrH = 0, addrHH = 0; //KJ-
addrL = (uint8)(addr & 0xff); //KJ-
addrH = (uint8)(addr >> 8); //KJ-
addrHH = (uint8)( (i2cAddrSave & 0xFC) | ((addr >> 15) & 0x02) ); //KJ- i2cAddr | P0
//KJ- Write Start_Signal for Read
I2C_STRT();
//KJ- Write Device_Addr.
if ( I2CSTAT == mstStarted ) /* A start condition has been transmitted */
{
I2C_WRITE( addrHH & 0xFE ); //KJ- set LSB = 0 for Write
}
if ( I2CSTAT !=