matttsai 发表于 2018-4-30 14:38:13

HAL_I2C_IsDeviceReady用途

请问一下, 在I2C init完之后, 需要call HAL_I2C_IsDeviceReady()这一支function吗

如果这一支function返回的是not ready
这时去读I2C是否很容易造成Bus busy(ISR BUSY bit一直被设为1)

我是不是一定要先check device 是否ready后再去读I2C?

Thanks

wenyangzeng 发表于 2018-4-30 15:19:45

IIC器件一般是被动器件,等待主机发送指令后执行操作。楼主应该阅读所操作的IIC器件说明,根据相关时序发送指令、接收数据。

matttsai 发表于 2018-4-30 16:42:57

wenyangzeng 发表于 2018-4-30 15:19
IIC器件一般是被动器件,等待主机发送指令后执行操作。楼主应该阅读所操作的IIC器件说明,根据相关时序发送 ...


我有时候会有遇到Busy bit一直为1的情况
在这种情况下, I2C就无法再使用了
I2C ISR的busy bit为什么会被一直设为1??


Thanks

wenyangzeng 发表于 2018-4-30 17:53:27

matttsai 发表于 2018-4-30 16:42
我有时候会有遇到Busy bit一直为1的情况
在这种情况下, I2C就无法再使用了
I2C ISR的busy bit为什么会被 ...

如果在等待器件发来应答信号时被某个中断例程打断,就可能出现这种情况

matttsai 发表于 2018-4-30 21:07:47

wenyangzeng 发表于 2018-4-30 17:53
如果在等待器件发来应答信号时被某个中断例程打断,就可能出现这种情况 ...

除了中断, 还有其他因素吗
目前观查, 似乎没有看到中断

Thanks

wenyangzeng 发表于 2018-4-30 21:14:01

matttsai 发表于 2018-4-30 21:07
除了中断, 还有其他因素吗
目前观查, 似乎没有看到中断



STM32的IIC最好用软件模拟方式。
页: [1]
查看完整版本: HAL_I2C_IsDeviceReady用途