IAP_07_一周还没解决从机发送NACK的问题
在下面这个帖子中,我描述了开发STC8H1K17 I2C 通讯的问题:IAP_06_从机没办法发出NACK - ISP下载/做自己的ISP 国芯人工智能技术交流网站 - AI32位8051交流社区
我的I2C是使用轮询的方式接收数据,每次要接收多个字节的数据,如果我要在主机发完最后一个字节数据的时候,从机发出NACK,我要怎么做?
好心人给我的回答是:
那我在轮询的程序中,要在哪里设置SLACKO为1呢? 在当前RXIF事件,清理RXIF标识位时同时给SLACKO置1,或者上一个RXIF事件接收完置1 ?
再不行上一个字节接受完加几个NOP总能把时间点卡在那个区间吧~ 接收指定字节数据后设置NAK标志即可,附件例子供参考
if(Rx_Cnt >= 3) //从机接收 4 个字节后返回 NAK
{
I2CSLST |= 1; //发送 NAK
}
RxBuffer = I2CRXD; //处理RECV事件(RECV DATA)
可以声明一个变量用于计数,在该位置判断是否收到若干个字节,如是,设置SLACKO为1,下一个应答位就会发送NACK
页:
[1]