请问在进行I2C写时总是卡在总线检测忙的while循环中是什么原因?

2019-07-14 18:34发布

在进行I2C写的时候后,首先用一个while循环判断总线是否忙,但是程序一直卡在这个里面出不来,不知道为什么一直处于忙的状态
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
YY599566
1楼-- · 2019-07-15 02:30
跨界F16 发表于 2018-8-14 08:16
楼主,用的是硬件IIC?采用DMA方式吗?如果IIC中断优先级低被其他程序打断,IIC通讯时间延时过长而且开了错误中断,程序就会一直进错误中断。另外,I2C需要应答,所以,当你接收的时候,应答不能按时发出,对方接收不到,于是下次通讯你发死发不出。 ...

对我用的是硬件I2C,没有用IO口模拟I2C,我没有使用DMA方式,就用的是库函数完成的,也没有开中断
shuqingli
2楼-- · 2019-07-15 06:00
请善用 break;  
YY599566
3楼-- · 2019-07-15 08:56
跨界F16 发表于 2018-8-14 08:16
楼主,用的是硬件IIC?采用DMA方式吗?如果IIC中断优先级低被其他程序打断,IIC通讯时间延时过长而且开了错误中断,程序就会一直进错误中断。另外,I2C需要应答,所以,当你接收的时候,应答不能按时发出,对方接收不到,于是下次通讯你发死发不出。 ...

您说的应答是我需要给接收设备的吗?
跨界F16
4楼-- · 2019-07-15 12:51
 精彩回答 2  元偷偷看……
YY599566
5楼-- · 2019-07-15 17:11
shuqingli 发表于 2018-8-14 08:35
请善用 break;  

没明白,我用示波器抓了一下,没有回复
TOPCB
6楼-- · 2019-07-15 20:22
楼主第一次使用就会进入总线忙吗?如果是,看一下波形。SCLK。如果不是,确定一下操作完I2C以后,是否有停止操作。I2C_GenerateSTOP(I2C2,ENABLE);

一周热门 更多>