I2C详解(三)

软件复位

通用广播地址0000 0000后发送0000 0110(06h)可以使总线上设备进入复位状态。此功能是可选的,所有预留该功能的设备在收到该两字节序列(00 06h)后,开始响应(复位),并进入它们地址的可编程部分。注意确保设备在加电后不会将SDA或SCL拉低,因为这些低电平会阻塞总线。


START字节

起始字节是提供给没有I2C总线接口的单片机查询I2C总线时使用的特殊字节。
不具备I2C总线接口的单片机,必须通过软件不断地检测总线,以便及时响应总线请求。单片机的速度与硬件接口器件的速度可能存在较大的差别。为此,I2C上的数据传送需要一个较长的起始过程加以引导。引导过程由起始信号、起始字节、应答位、重复起始信号(Sr)组成。请求访问总线的主机发出开始条件(S)后,紧接着发送起始字节 0000 0001,总线上的单片机可以用比较低的速率采样SDA线,直到检测到起始字节中的7个“0”中的一个为止。在检测到SDA上的高电平后,单片机可以切换到较高的采样速率,采样作为同步信号使用的第二个起始信号Sr。在起始信号后的应答时钟脉冲仅仅是为了和总线所使用的格式一致,并不要求设备在这个脉冲期间作应答。

在这里插入图片描述


总线清零(Bus Clear)

SCL:一般情况下SCL不会卡在低电平,出现这种情况的话,如果设备包含硬件复位引脚,推荐使用硬件复位。如果设备没有硬件复位引脚,可以通过重新上电方式触发设备内部上电复位电路。
SDA:如果SDA卡在低电平,主机应发送9个时钟脉冲,那些将SDA拉低的设备在这9个时钟周期内应释放总线。如果没有的话,则需要通过硬件复位或重新上电的方式清除拥堵。


猜你喜欢

转载自blog.csdn.net/sternlycore/article/details/85782825
I2C