微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > I2C中速率的设置问题

I2C中速率的设置问题

时间:10-02 整理:3721RD 点击:
我想请问下,I2C中有三个模式:标准模式:100Kbit/s,快速模式:400kbit/s,高速模式:3.4Mbit/s.这个应该是指SCL的频率吧?
     我写的主机位控制模块中,写和读状态需要,w_a,w_b,w_c,w_d四个状态来完成,相当于Fscl=Fclk_sys/4,那如果我想设定I2C在快速模式下工作,是不是就根据前面那个公式转换得Fclk_sys=4*Fscl=4*400K=1600KHz,只要设定我的系统时钟为1600KHz,就表示快速模式?
    我在网上下了一个代码,其中有这样的解释:
// Timing:     Normal mode      Fast mode
///////////////////////////////////////////////////////////////////////
// Fscl        100KHz           400KHz
// Th_scl      4.0us            0.6us   High period of SCL
// Tl_scl      4.7us            1.3us   Low period of SCL
// Tsu:sta     4.7us            0.6us   setup time for a repeated start condition
// Tsu:sto     4.0us            0.6us   setup time for a stop conditon
// Tbuf        4.7us            1.3us   Bus free time between a stop and start condition、
怎么SCL高电平和低电平的占空比都不一样,而且通过计算也不是精确的数,这是为什么?请高手解释下。谢谢。

我之前做过,时钟似乎要求不是很严格,看看你要控制的器件的datasheet,应该是有一个范围的,只要时钟在这个范围,占空比满足一定要求就没问题。

没错,SCL占空比不需要固定,只要满足它的要求就可以

I2C的SCL没具体规定吧



    我老师只是让我实现I2C协议,没有说什么控制器件,那我就不用管时钟了吧?



    请问你说的满足要求,就是指主从机收发数据的要求吧?



应该是这样。因为几乎每个I2C器件手册都会详细定义其I2C接口的速率和时序的,到时候你在照着调整就完了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top