本帖最后由 qQ191727779 于 2012-10-9 22:06 编辑
是不是从机抑制我就不知道了,但是,查看寄存器是有scl被拉低,就是想不明白,在等待stop之前,我按照流程图,先IICSTAT=0x90,再IICCON=0X60 //不产生ack,并且恢复iic操作,检测到没有ack信号,却没有stop信号
void IICRead(unsigned int i ) //current address read
{
IICInit();
rIICDS = 0xA1;
rIICSTAT = 0xB0;
while( rIICSTAT & 0x1 ); //wait ACK
ClearInt(); //clear SRCPND , INTPND
buf = rIICDS; //全速跑读到A1
Uart_Printf("buf[");
Uart_Printf("%d",i);
Uart_Printf("]: %X\n",buf);
rIICCON = 0xE0; //resume iic,generate ACK
while( rIICSTAT & 0x1 ); //wait ACK
buf = rIICDS; //全速跑读到43
Uart_Printf("buf[");
Uart_Printf("%d",i);
Uart_Printf("]: %X\n",buf);
ClearInt();
rIICSTAT = 0x90;
rIICCON = 0x60; //resume iic, no ACK
while( ! (rIICSTAT & 0x1 ) ); //wait NO-ACK
buf = rIICDS; //全速跑读到 数据6
Uart_Printf("buf[");
Uart_Printf("%d",i);
Uart_Printf("]: %X\n",buf);
while( (rIICSTAT >> 5) & 1); //wait stop,就死在这里!!!
IICRest();
}
8# NE5532
|