写了设备地址0XA6后产生了中断,在中断处理函数中读取IICSTAT发现第0位为1(ACK was not received),为什么没有ACK?
volatile int i;
//第2步调用
static void byte_writ_eeprom(char* argv[])
{
//我们写的逻辑目标地址为1023字节
i=0;
rIICDS=0xA6;
rIICSTAT=0xF0;
}
//第3步产生中断
void IIC_Isr(void)
{
if(1/*byte_writ_eeprom*/)
{
if(i==0)
{
rIICDS=0xFF;//逻辑地址的第二部分
i++;
}
else if(i==1)
{
rIICDS=0xAB;//要写的数据
i++;
}
else
{
rIICSTAT=0xD0;
}
printk("IIC_Isr\n");
ClearPendingInterrupt(BIT_INT_IIC);
}
}
//第1步调用
void InitIIC(void)
{
g_InterruptServiceTable[OFFSET_INT_IIC]=IIC_Isr;
rINTMSK &= ~BIT_INT_IIC;
//配置SCL、允许中断和ACK
rIICCON=(1<<7)|(1<<6)|(1<<5/*interrupt enable*/)|(10<<0);
AddCmd("bweeprom",0,byte_writ_eeprom);
}