找回密码
 立即注册
查看: 37|回复: 3

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

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:91
  • 最近打卡:2025-08-31 07:54:06
已绑定手机

14

主题

30

回帖

526

积分

高级会员

积分
526
发表于 4 天前 | 显示全部楼层 |阅读模式
在下面这个帖子中,我描述了开发STC8H1K17 I2C 通讯的问题:

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

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

好心人给我的回答是:
截图202508302026393349.jpg
那我在轮询的程序中,要在哪里设置SLACKO为1呢?
花有重开日,人无再少年
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:286
  • 最近打卡:2025-09-02 08:51:54
已绑定手机

80

主题

3032

回帖

6441

积分

荣誉版主

无情的代码机器

积分
6441
发表于 3 天前 | 显示全部楼层
在当前RXIF事件,清理RXIF标识位时同时给SLACKO置1,或者上一个RXIF事件接收完置1 ?
再不行上一个字节接受完加几个NOP总能把时间点卡在那个区间吧~
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:505
  • 最近打卡:2025-09-02 16:59:35
已绑定手机

45

主题

2194

回帖

7662

积分

论坛元老

积分
7662
发表于 前天 12:12 | 显示全部楼层
接收指定字节数据后设置NAK标志即可,附件例子供参考
  1.             if(Rx_Cnt >= 3)     //从机接收 4 个字节后返回 NAK
  2.             {
  3.                 I2CSLST |= 1;   //发送 NAK
  4.             }
  5.             RxBuffer[Rx_Cnt++] = I2CRXD;        //处理RECV事件(RECV DATA)
复制代码

截图202509011212003604.jpg

硬件I2C主从收发-STC8.zip

30.57 KB, 下载次数: 0

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:546
  • 最近打卡:2025-09-02 06:28:13
已绑定手机

85

主题

6045

回帖

1万

积分

超级版主

积分
11106
发表于 前天 12:36 | 显示全部楼层
可以声明一个变量用于计数,在该位置判断是否收到若干个字节,如是,设置SLACKO为1,下一个应答位就会发送NACK

截图202509011236107381.jpg

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-3 04:49 , Processed in 0.121518 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表