在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: tezhong

[求助] 请教一个关于i2c协议的问题

[复制链接]
发表于 2021-12-6 18:26:31 | 显示全部楼层
本帖最后由 innovation 于 2021-12-6 18:59 编辑


tezhong 发表于 2021-12-6 18:03
哈哈,兄弟误会了。真是技术问题,我只是不确定i2c是否允许master插入长时间的等待周期,即scl/sda长时间 ...


这个从I2C协议本身没有规定,如果是你设计master,你想问这样干是否违背I2C协议规范,应该不违背。如果你是使用别人的master,有没有你得看它的手册。

附上I2C规范的时序参数(摘自I2C-bus specification and user manual rev.6):
image.png

可以看到,协议对各速度版本只规定了时钟的最高频率,及与之对应的SCL高/低电平的最短时间,换句话说,你不违背Start/Stop条件下,保持SCL/SDA低电平的时间规范本身未作限制。

补充一点:I2C总线是支持多主设备的共享总线。你的master保持SCL/SDA为低,会导致总线上(如果有)其它的master不能发起传输,当然,如果其它master按照I2C规范设计有总线仲裁功能,这除了降低总线效率外应该没有其它风险了。
至于总线上其它的master会不会因为多次申请总线传输且仲裁失败,进而选择标记总线故障(罢工),从而因为你长时间占用总线导致其它master不再干活?这个问题属于I2C规范之外的范畴,即协议未作规定,你同样需要查阅其它master的手册。
发表于 2021-12-6 23:33:36 | 显示全部楼层


tezhong 发表于 2021-12-6 18:03
哈哈,兄弟误会了。真是技术问题,我只是不确定i2c是否允许master插入长时间的等待周期,即scl/sda长时间 ...


没搞明白为什么是技术问题。
如果slave busy,那么需要slave来做clock stretch。随便需要master来配合的slave?这样的slave确定能用?

是你们自己的slave吗?如果是,让slave改设计。
如果slave不改,而且只是你一个人用,那么怎么写都是你们开心就好。
 楼主| 发表于 2021-12-7 13:07:35 | 显示全部楼层


innovation 发表于 2021-12-6 18:26
这个从I2C协议本身没有规定,如果是你设计master,你想问这样干是否违背I2C协议规范,应该不违背。如果你 ...


我们负责设计master,对接各种别人提供的不同的slave。

感谢您,混这个论坛这么久头一次遇到这么热心+专业的回复,学到很多!

 楼主| 发表于 2021-12-7 13:21:42 | 显示全部楼层


loglong 发表于 2021-12-6 23:33
没搞明白为什么是技术问题。
如果slave busy,那么需要slave来做clock stretch。随便需要master来配合的s ...


感谢版主回复


1. 是我们设计master,对接各种别人的slave。

2. slave做clock streching似乎对处理slave busy的情况也合理,但只是对我这个i2c新人感觉怕有些坑。

3. 至于为什么让master配合slave。是因为master对slave的传输需要跟其他一些操作同步,因此需要确保master对slave的传输一定需要在某一个时间段完成,不能早太多或晚太多。所以如果传输比较多的数据时,需要提前很久,并且避开slave busy的时间


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

本版积分规则

关闭

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


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 18:22 , Processed in 0.016532 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表