IIC从机接收无法接收到数据

2019-07-14 14:17发布

最近在调试使用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;
                }
        },

请问下各位大神,这是什么原因呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
038506086
1楼-- · 2019-07-14 17:06
我现在主机从机都不断电,主机里面采取循环读取,第二次也是读取不到数据啊,我想知道我的从机程序有哪里需要改正的么?
zhhx1985
2楼-- · 2019-07-14 22:56
 精彩回答 2  元偷偷看……
lee_st
3楼-- · 2019-07-15 00:57
用示波器或逻辑分析仪看看波形
enzoliu
4楼-- · 2019-07-15 04:45
不错的文章,谢谢分享

一周热门 更多>