首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

I2C的标准模式和快速模式的疑惑?该如何处理

2012-06-15 
I2C的标准模式和快速模式的疑惑??利用单片机的IO口模拟I2C(在标准模式下,速率100Kbit/s)的时候,其I2C启动

I2C的标准模式和快速模式的疑惑??
利用单片机的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的时序不同???)

[解决办法]
400KHz I2C serial interface
一般这么写意思是最大支持400k的 I2C,而不是必须要求400K。因为I2C速率一般都是在100-400K之间的。
[解决办法]
这个不是绝对严格的要求

只是不超过这个速率,不太低于这个速率即可
[解决办法]
I2C是一种主从式协议,SCK是主机控制的(如果不考虑clock-stretching)。只要主机SCK不操过从机支持的速率就应该不会有问题。

热点排行