最近在调试使用IIC作为从机接收和发送数据,用两个STM8的MCU进行通信,但是现在有一个问题,当主机先打开电源,从机再打开电源,主机可以正常接收到从机发送来的数据,但是如果从机不断电,主机断电再上电,主机则无法接收到数据。主机采用模拟的方式,重复读取数据。从机程序如下:@far @interrupt void I2C_IRQHandle(void)
{
if((I2C_SR1 & 0X02) == 0x02) // 判读地址是否匹配 addr = 1;
{
temp1 = I2C_SR1;
temp3 = I2C_SR3;
}
else if((I2C_SR1&0x40) == 0x40)
{
i = 0;
addr = I2C_DR;
}
else if((I2C_SR1&0x80) == 0x80) //发送数据 txe = 1
{
if(addr == 0x80)
I2C_DR = s1;
if(addr == 0x90)
I2C_DR = s2;
i++;
if(i == SIZE)
{
i = 0;
}
}
else if(I2C_SR2&0x04)
{
nCounter++;
I2C_SR2 &= ~0x04;
I2C_CR2 |= 0x02;
}
},
请问下各位大神,这是什么原因呢?
|