当I2C主机使能时,总线的状态机激活。在I2C主机被使能,总线状态是不知道的。由于不知道的状态,
总线状态机能被强迫进入空闲状态通过写相应的STATUS.BUSSTATE.然而,如果没有软件发出的活动,如
果一个停止状态被检测总线状态将从不知状态到空闲状态。如果不活动总线暂停时间被使能,总线状态
将从未知状态到空闲状态在发生暂停时间过程中。注意当未知总线状态确认之后,总线状态逻辑将不在
从其它状态进入未知状态。
当总线是空闲状态时,它准备好了新的传输。如果在多主机设置中一个起始条件被另一个主机执行,总
线变成忙直到一个停止状态被检测。停止状态将导致总线重新进入空闲状态。如果不活动总线暂停时间
被使能(SMBus),在发生暂停时间过程中总线状态将从忙到空闲。当空闲状态时,如果通过向地址寄存
器的地址比特组写时内部生产开始条件,owner状态进入。如果完全传输被执行且没有冲突,如:总裁
没有丢失,I2C主机允许执行一个停止状态,这个返回将导致一个总线状态改变到空闲状态。然而,如
果在owner状态,一个包冲突被检测到,总裁假装丢失并且总线状态变成忙,直到停止状态被检测到。
一个重复的开始条件将改变总线的状态只有当运行重复开始时总裁丢失。
27.6.2.4 时钟发生器(标准模式,快速模式和快速模式加传输)
主机I2C时钟(SCL)频率的检测是通过因子数。低(T low)和高(T HIGH)时间是通过波特率寄存器检
测的。而上升(T RISE)和下降(T FALL)时间是通过总线拓扑检测到的。因为总线是线与逻辑,T FALL
将被认为是T LOW的一部分。同样地 T RISE将是在T LOW 和 T HIGH之间的一种状态,直到高电平被检
测到。
以下参数定时使用在SCL低电平期间。这来源于当波特率寄存器中的主波特率低比特组
(BAUD.BAUDLOW)或者当BAUD。BAUD。BAUDLOW波特率寄存器的波特率比特组。
。T LOW - SCL时钟的低期间
。T SU;STO - 设置的停止状态时间
。T BUF - 总线停止和起始状态的空闲时间
。T HD;STA - 开始状态(重复)的延时时间
。T SU;STA - 设置的重复开始时间
。T HIGH - 定时使用SCL高电平的时间,从BAUD.BAUD记数
。T RISE - 通过检测总线阻抗,来测内部上拉。参考"Electrical Characteristics"
。T FALL - 通过检测开漏电流限制和总线阻抗,通常可以视为零。
SCL频率给出如下:
当BAUD.BAUDLOW是0,BAUD.BAUD值被用在SCL高和SCL低。由于这个原因下列公式给出频率:
当BAUD。BAUDLOW是非0,则下列公式用来检测SCL频率:
下列公式用来检测SCL T LOW和T HIGH时间:
在快速加模式通常高到低的速率是1到2并且波特率应设相应的波特率。在最低限度,BAUD.BAUD和/或BAUD.BAUDLOW必须是非零。
|