zhouq 发表于 4 天前

IAP_07_一周还没解决从机发送NACK的问题

在下面这个帖子中,我描述了开发STC8H1K17 I2C 通讯的问题:

IAP_06_从机没办法发出NACK - ISP下载/做自己的ISP 国芯人工智能技术交流网站 - AI32位8051交流社区

我的I2C是使用轮询的方式接收数据,每次要接收多个字节的数据,如果我要在主机发完最后一个字节数据的时候,从机发出NACK,我要怎么做?

好心人给我的回答是:

那我在轮询的程序中,要在哪里设置SLACKO为1呢?

ercircle 发表于 3 天前

在当前RXIF事件,清理RXIF标识位时同时给SLACKO置1,或者上一个RXIF事件接收完置1 ?
再不行上一个字节接受完加几个NOP总能把时间点卡在那个区间吧~

乘风飞扬 发表于 前天 12:12

接收指定字节数据后设置NAK标志即可,附件例子供参考
            if(Rx_Cnt >= 3)   //从机接收 4 个字节后返回 NAK
            {
                I2CSLST |= 1;   //发送 NAK
            }
            RxBuffer = I2CRXD;      //处理RECV事件(RECV DATA)

DebugLab 发表于 前天 12:36

可以声明一个变量用于计数,在该位置判断是否收到若干个字节,如是,设置SLACKO为1,下一个应答位就会发送NACK



页: [1]
查看完整版本: IAP_07_一周还没解决从机发送NACK的问题