首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >I2C从时钟扩展

I2C从时钟扩展
EN

Stack Overflow用户
提问于 2014-07-21 18:00:13
回答 2查看 27.6K关注 0票数 4

你们知道如何为I2C slave启用时钟伸展吗?

在I2C的初始化中只放入这个函数I2C_StretchClockCmd(I2C2, ENABLE)就足够了吗?

时钟伸展究竟是如何工作的?

EN

回答 2

Stack Overflow用户

发布于 2014-07-22 19:34:38

对我来说,是的,这就足够了。以下是背景信息:

时钟生成

SCL时钟始终由I2C主机产生。该规范要求时钟信号的低相位和高相位的最小周期。因此,例如在由于高电容而具有大上升时间的I2C总线中,实际时钟速率可能低于标称时钟速率。

时钟扩展

I2C设备可以通过伸展SCL来减慢通信:在SCL低阶段,总线上的任何I2C设备都可以另外按住SCL,以防止它再次上升到高电平,从而使它们能够降低SCL时钟频率或停止I2C通信一段时间。这也称为时钟同步。

注意: I2C规范没有为时钟伸展指定任何超时条件,即任何设备都可以按下SCL,只要它愿意。

在I2C通信中,主设备确定时钟速度。与RS232不同,I2C总线提供显式时钟信号,使主机和从机不必完全同步到预定义的波特率。

但是,在某些情况下,I2C从机无法与主机提供的时钟速度配合工作,因此需要稍微放慢速度。这是通过一种称为时钟伸展的机制来完成的。

如果需要降低总线速度,则允许I2C从机保持时钟。另一方面,要求主设备在将时钟信号释放到高状态之后回读时钟信号,并等待直到线路实际变为高状态。

I2C时钟速度如何影响I2C从机引入的时钟展宽持续时间?

时钟拉伸是这样一种现象:在每次I2C数据传输的第9个时钟(确认阶段之前),I2C从机将SCL线拉低。当中央处理器正在处理I2C中断时,时钟被拉低,以评估地址或处理从主机接收的数据,或者在主机从从机读取数据时准备下一个数据。

时钟被拉低的时间取决于CPU处理中断所用的时间,因此取决于CPU速度而不是I2C时钟速度。

票数 14
EN

Stack Overflow用户

发布于 2016-01-22 15:12:59

为什么我们需要伸展时钟?在时钟的第9位上确认从机时,也可以实现相同的功能。

这些事情可以通过保持数据线直到从属内部进程结束来实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24862372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档