打印

I2C问题

[复制链接]
879|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pkat|  楼主 | 2012-6-13 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
利用单片机的IO口模拟I2C(在标准模式下,速率100Kbit/s)的时候,其I2C启动代码的信号如下:
void Start_I2c()
{
SDA=1; /*发送起始条件的数据信号*/
_nop_();
SCL=1;
delay_5us(); /*起始条件建立时间大于4.7us,延时*/ SDA=0; /*发送起始信号*/
delay_5us(); /* 起始条件锁定时间大于4μs*/ SCL=0; /*钳住I2C总线,准备发送或接收数据 */
_nop_();
_nop_();
}
其中(在100KHz速率的条件下),在SCL高电平期间,SDA由 低 -->高必须保持大于4.7us, 在SCL由高跳到低后,SCL必须保持高电平大于4us才能由高-->低

现在我也是用单片机模拟I2C工作,但是通信的芯片的I2C总线上工作在400KHz的速率下的(芯片资料是这样写的:400KHz I2C serial interface),那么这样的话,I2C总线的时序,如总线启动时序,停止时序,发送数据和接受数据的时序都是需要变的吗?(与100KHz的时序不同???)

相关帖子

沙发
xsgy123| | 2012-6-13 16:18 | 只看该作者
这个不是绝对严格的要求
只是不超过这个速率,不太低于这个速率即可

使用特权

评论回复
板凳
yybj| | 2012-6-13 16:23 | 只看该作者
I2C是一种主从式协议,SCK是主机控制的(如果不考虑clock-stretching)。只要主机SCK不操过从机支持的速率就应该不会有问题。

使用特权

评论回复
地板
火箭球迷| | 2012-6-13 16:36 | 只看该作者
400KHz I2C serial interface
一般这么写意思是最大支持400k的 I2C,而不是必须要求400K。因为I2C速率一般都是在100-400K之间的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

2726

帖子

0

粉丝