贴一段DM643读写AT24C02成功的代码,建议仔细查看一下AT24Cxx的datasheet,记得它们与标准的IIC并不太符合,主要就是ACK返回的问题,,,,另外先确定执行到哪个语句死掉的,然后加大一点的延时试试能否解决问题,,,,<br /><br />void I2cWrite(I2C_Handle hI2C,Uint8 AddressStart,Uint8 *WriteData){<br /> Uint8 count;<br /> while(I2C_bb(hI2C));<br /> IER &= 0xF7FF;<br /> I2C_config(DEC643_I2C_hI2C,&I2CCfgT);<br /> while(!I2C_xrdy(hI2C));<br /> I2C_writeByte(hI2C, AddressStart);<br /> for(count = 0;count < 4;count ++){<br /> while(!I2C_xrdy(hI2C)); <br /> I2C_writeByte(hI2C, WriteData[count]);<br /> }<br /> while(I2C_bb(hI2C));<br /> I2C_config(hI2C,&DEC643IIC_Config);<br /> I2C_sendStop(hI2C);<br /> while(!I2C_xrdy(hI2C));<br /> while(I2C_bb(hI2C));<br /> IER |= 0x800;<br />}
|