查看: 7565|回复: 5

[求助] LPI2C中断模式接收字节数不是4的整数倍

[复制链接]

该用户从未签到

12

主题

49

帖子

0

中级会员

Rank: 3Rank: 3

积分
326
最后登录
2023-3-23
发表于 2019-12-4 15:51:10 | 显示全部楼层 |阅读模式
本帖最后由 wwllzz 于 2019-12-4 15:56 编辑

LPI2C中断模式接收字节数不是4的整数倍, 接收最后的1-3字节后将没有接收中断, 若配置RXWATER=3, MSR寄存器NDF位的说明是"Unexpected NACK was detected" 我的理解是主机在接收完最后一个字节后, 自己主动(自动)发出的NACK信号, 不会产生这个中断标志. 我的理解对吗? 咋弄, 有啥建议? 我看SDK上似乎没有使用这4个字的FIFO. 若想使用FIFO就不能用中断标识来及时跟进I2C进展, 及时发出STOP信号吗?  再有在进入STOP引起的中断时 停止位还没有发完吧, 要想知道这个停止位何时发完, 只能通过查询BBF和MBF两位标识吗?
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25481
最后登录
2025-9-9
发表于 2019-12-5 15:17:34 | 显示全部楼层
楼主你好!
所以如果你的从机可以设计,也可以配对去搞满4个字节的整数倍去通信,这样可能会配合的更好。
当然,如果你的从机是专用ASIC,并且通信数据长度不一定,我觉得你要么就是1-3字节方式,要么就是DMA直接去搬, 当然4字节整数,最后3字节,也可以查询或者其他的中断配合去查看。总之就是你应用设计的逻辑问题,具体看你应用使用哪个效率更好。
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25481
最后登录
2025-9-9
发表于 2019-12-5 10:54:00 | 显示全部楼层
楼主你好!
下次提问,还请把你使用的产品型号也报给我们。
如果你RXWATER=3, 那么就算接收最后一组,应该还是可以产生接收中断的,你可以在中断中判断RDF标志看看,如果NACK发生之后,可以忽略,再等看看是否会有接收中断产生?
如果想要看STOP的具体情况,是否发送出去,可以查询BBF和MBF。

回复 支持 反对

使用道具 举报

该用户从未签到

12

主题

49

帖子

0

中级会员

Rank: 3Rank: 3

积分
326
最后登录
2023-3-23
 楼主| 发表于 2019-12-5 11:16:54 | 显示全部楼层
我用i.MXRT1061, 我原想收满4个字节处理器进入中断搬移处理一次, 若总接收长度不是4的整数倍, RXWATER在一次接收过程中不能修改(46.4.1.15.2 Function
The Master FIFO control register is only used in Stop mode when the MFCR register is
static (i.e., the MFCR register is not changing).),  那么最后字节将不能达到RXWATER的设置要求(4字节) 就接收结束了. 我想用两个思路绕开这问题1), 多接收1-3字节 2)用eDMA来辅助接收. STOP问题我想在每次发送之前进行最多2.5uS的轮询 概率不大 可以接受.
回复 支持 反对

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25481
最后登录
2025-9-9
发表于 2019-12-5 18:20:36 | 显示全部楼层
楼主你好!
所以如果你的从机可以设计,也可以配对去搞满4个字节的整数倍去通信,这样可能会配合的更好。
当然,如果你的从机是专用ASIC,并且通信数据长度不一定,我觉得你要么就是1-3字节方式,要么就是DMA直接去搬, 当然4字节整数,最后3字节,也可以查询或者其他的中断配合去查看。总之就是你应用设计的逻辑问题,具体看你应用使用哪个效率更好。
回复 支持 反对

使用道具 举报

该用户从未签到

12

主题

49

帖子

0

中级会员

Rank: 3Rank: 3

积分
326
最后登录
2023-3-23
 楼主| 发表于 2020-7-23 15:26:32 | 显示全部楼层
我最终采用了自己写的状态机, 对多字节(超过FIFO)数据传输采用eDMA配合进行, 设置快发完(缓冲内还有一个字节)和收到字节就中断(触发eDMA), 中断内有足够的时间响应, 实际运行效率很不错 状态也比较简洁.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-9-10 04:31 , Processed in 0.266905 second(s), 25 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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