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高电平和低电平的占空比都不一样,而且通过计算也不是精确的数,这是为什么?请高手解释下。谢谢。
我写的主机位控制模块中,写和读状态需要,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接口的速率和时序的,到时候你在照着调整就完了。
