完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
当我使用 i2c 从从站读取两个字节时,有时会返回 RX_OVERFLOW。 我使用逻辑分析仪抓取总线波形,发现只接收到一个字节,主控器发出 NACK,之后返回错误代码 I2C_RX_OVERFLOW,并陷入 while 循环直到超时。 但当我在 i2c 读取之前禁用中断时,问题就消失了。
那么,为什么主站只发送一个字节后就发送 NACK 呢? 读取过程不能被中断打断吗? |
|
相关推荐
1个回答
|
|
当主站向从站发送读取请求时,主站发送一个字节的数据,此字节作为从站内存地址的低字节。
从站在接收到地址后,会开始发送实际的数据字节。主站需要发送一个NACK位来指示从站,主站已经接收到了所需的数据字节,并不再需要其他的字节。 如果从站发送了额外的字节,主站可能会发出NACK,并返回RX_OVERFLOW错误,因为主站只需要一个字节的数据。这可能是因为从站发送了意外的字节,或者主站的I2C读取操作没有正确设置或发送指令。 在某些情况下,禁用中断可能会解决此问题,因为禁用中断可以防止其他中断处理程序干扰I2C读取操作。这可能导致主站发送NACK位来中止读取。 总的来说,主站之所以会发送NACK,可能有以下几个原因: 1. 从站发送了多余的字节。 2. I2C读取操作没有正确设置或发送指令。 3. 其他中断处理程序干扰了I2C读取操作。 读取过程可以被中断打断,但需要正确设置和发送指令。如果是由于中断造成的问题,禁用中断可能是一种解决方法,但也需要确认禁用中断不会带来其他问题。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】简介、环境搭建、工程测试
177 浏览 0 评论
312 浏览 0 评论
imx6ull裸机编程,使用宏定义无法驱动,使用指针就可以驱动
691 浏览 1 评论
《DNK210使用指南 -CanMV版 V1.0》第三十二章 音频FFT实验
384 浏览 0 评论
飞凌嵌入式ElfBoard EL 1板卡-i2c与从设备通讯编程示例之i2c-tools工具使用
1284 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11620 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 01:54 , Processed in 0.442109 second(s), Total 40, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号