bool I2C_Start(void)
{
SDA_H;
SCL_H;
I2C_delay();
if(!SDA_read)return FALSE;
SDA_L;
I2C_delay();
if(SDA_read) return FALSE;
SDA_L;
I2C_delay();
return TRUE;
}
void I2C_Stop(void)
{
SCL_L;
I2C_delay();
SDA_L;
I2C_delay();
SCL_H;
I2C_delay();
SDA_H;
I2C_delay();
}
void I2C_Ack(void)
{
SCL_L;
I2C_delay();
SDA_L;
I2C_delay();
SCL_H;
I2C_delay();
SCL_L;
I2C_delay();
}
void I2C_NoAck(void)
{
SCL_L;
I2C_delay();
SDA_H;
I2C_delay();
SCL_H;
I2C_delay();
SCL_L;
I2C_delay();
}
bool I2C_WaitAck(void)
{
SCL_L;
I2C_delay();
SDA_H;
I2C_delay();
SCL_H;
I2C_delay();
if(SDA_read) {
SCL_L;
return FALSE;
}
SCL_L;
return TRUE;
}
读写部分就不丢出来了,都一个样,同系列的芯片,手册时序完全一样,肿么回事儿!
FM24CL04 FM24CL64 AT24C02
------解决方案--------------------
如果用示波器看,时序真的一样的话,基本应该没啥问题了
------解决方案--------------------
不用自带的I2C ,,用IO 模拟 试试呢
------解决方案--------------------
问题完美解决:
按照FM24CL04、FM24CL64、AT24C02手册,读写时序一致,但地址命令格式,这三类芯片地址发送不一样,一定要注意命令格式!
还有啥问题Q群:77203167