两次I2C主模式下通讯的间隔有要求吗
如题如果使用APM32F103的I2C的主模式下,两次I2C通讯的发起有时间间隔的要求吗?
我发现有的时候第二次I2C通讯中,从地址不ack我。
是有的,具体可以参考F103手册
您这个从机不应答 是不是从机正在干活,本身就是没有ready状态下 I2C通讯两次发起并没有啥设置,硬件会自行完成。
但从机可不是必须应答 这个太有学问了,还真没有注意到这个知识点 自己是master的没有必要。只要检查到当前I2C总线已经ready了就代表了上一次发送已完成。
版主的截图是硬件实现的。 I2C通讯的难度有这么大吗? 从一个通信周期的 Stop 条件结束,到下一个通信周期的 Start 条件开始之间的最小时间间隔。 较大的上拉电阻会延长 SDA/SCL 信号的上升时间,需适当增加总线空闲时间。 总线上所有设备有足够时间释放 SDA 和 SCL 线,并准备好接收新的通信。 主机在发送需要检查一下当前I2C总线是否处于空闲。如果空闲则继续发送,否则要么阻塞,要么退出。 标准模式(100kHz):≥ 4.7μs
快速模式(400kHz):≥ 1.3μs
高速模式(3.4MHz):≥ 0.6μs 电容负载与信号完整性:
使用高优先级任务处理 I2C 通信,或实现忙等待延时。 为了避免这种情况,通常建议在两次I2C通信之间留出足够的时间间隔,以便从设备完成当前的操作并准备好接收新的通信。 5~100ms 合理控制两次 I2C 通信的间隔时间 每次都周期性的读取从设备 限制总线长度(通常<50cm) I2C还有这么多的边界条件呀