ST意法半导体
登录
直播中
YYXIAO
8年用户
1154经验值
擅长:接口/总线/驱动
私信
关注
[问答]
ST25DV读I2C时通信错误怎么解决?
开启该帖子的消息推送
I2C
ACK
大家好
我用的是ST25DV64K。
如果I2C
通信
正常,接收到数据后返回ACK,接收到最后一个数据后返回NACK响应并发出Stop Condi
ti
on。
如果I2C通信异常,master发出停止条件,没有给
NFC
标签返回NACK响应,NFC标签是否能正常接收到停止条件?
还有,在Stop Condition发出后,NFC标签能正常接受下一个Start Condition吗?
还是在 TCHCL 或 TCLCH 的最大值(25ms)过去之前,它不会接受下一个输入数据?
回帖
(1)
陈珂瑾
2022-12-28 14:57:06
在正常的 I2C 读取事务中,主机通过在从从机接收到的最后一个字节的第 9 位发送 NACK 来向从机发送信号,表明它不想读取更多数据。
相反,主机通过发送 ACK 向从机发出信号,表示它想再读取一个字节。
如果从设备正在接收 ACK,则意味着它必须再传送一个字节。因此,在 ACK 条件之后,它将在下一个时钟上升沿开始呈现下一个字节。
因此,如果主机不发送 NACK,而是发送 ACK,然后发送 STOP,则可能会发生以下情况:在 ACK 之后的时钟上升沿,从机将在总线上呈现内存中的下一个字节(MSB 位)
那么,有两种可能的情况:
从存储器中下一个字节的 MSB 位为 1:在 ACK 之后的时钟上升沿,从器件将保持 SDA 线“释放”以发送 1。然后主器件可以自由释放 SDA 线SCL 线变高后发送 STOP。在这种情况下,一切都运行良好。
从机存储器中下一个字节的 MSB 位是 0:在 ACK 之后的时钟上升沿,从机会将 SDA 线驱动为低电平以传输 0 并在 SCL 为高电平时保持低电平。然后主机将 SDA 线释放为 1 以发出停止信号,但它不会工作,因为从机将线驱动为低电平。SDA 线将保持低电平,SCL 线将保持高电平,因为主机在停止后不再驱动它 => 系统将“挂起”,直到触发 25 毫秒超时并且从机释放 SDA 线。
因此,在读取最后一个字节之后和停止之前发送 ACK 绝对不是一个好主意,但无论如何,由于 ST25DV 的内部超时,这种情况将在 25 毫秒后恢复。
在正常的 I2C 读取事务中,主机通过在从从机接收到的最后一个字节的第 9 位发送 NACK 来向从机发送信号,表明它不想读取更多数据。
相反,主机通过发送 ACK 向从机发出信号,表示它想再读取一个字节。
如果从设备正在接收 ACK,则意味着它必须再传送一个字节。因此,在 ACK 条件之后,它将在下一个时钟上升沿开始呈现下一个字节。
因此,如果主机不发送 NACK,而是发送 ACK,然后发送 STOP,则可能会发生以下情况:在 ACK 之后的时钟上升沿,从机将在总线上呈现内存中的下一个字节(MSB 位)
那么,有两种可能的情况:
从存储器中下一个字节的 MSB 位为 1:在 ACK 之后的时钟上升沿,从器件将保持 SDA 线“释放”以发送 1。然后主器件可以自由释放 SDA 线SCL 线变高后发送 STOP。在这种情况下,一切都运行良好。
从机存储器中下一个字节的 MSB 位是 0:在 ACK 之后的时钟上升沿,从机会将 SDA 线驱动为低电平以传输 0 并在 SCL 为高电平时保持低电平。然后主机将 SDA 线释放为 1 以发出停止信号,但它不会工作,因为从机将线驱动为低电平。SDA 线将保持低电平,SCL 线将保持高电平,因为主机在停止后不再驱动它 => 系统将“挂起”,直到触发 25 毫秒超时并且从机释放 SDA 线。
因此,在读取最后一个字节之后和停止之前发送 ACK 绝对不是一个好主意,但无论如何,由于 ST25DV 的内部超时,这种情况将在 25 毫秒后恢复。
举报
更多回帖
rotate(-90deg);
回复
相关问答
I2C
ACK
ST25DV
04如果
ST25DV
04一直处于读写器下,则会出现NFC
I2C
通信
问题
2019-07-30
5202
NFC库是怎样通过
I2C
与
ST25DV_Discovery_ANT_C
5板进行
通信
的?
2022-12-19
352
从NFC上的系统寄存器进行
I2C
读取操作失败怎么解决?
2023-01-03
226
如何将
ST25dv
sdk移植到Flutter?
2023-01-03
275
谁能告诉我在
ST25DV
04K中写入/读取用户存储器EEPROM的步骤
2022-12-07
559
ST25DV
04K:
I2C
和RF
通信
不工作怎么解决?
2022-12-30
490
求助两个不同的芯片连接到一个
I2C
总线的标签丢失问题
2022-12-13
276
如何使用
st25dv
应用程序通过FTM缓冲区读取/写入数据呢
2022-12-16
461
NFC如何增加与
ST25DV
一侧的距离
2023-01-16
330
有没有办法使用任何
I2C
命令检测NFC天线是否连接到
ST25DV
04K?
2022-12-06
883
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分