Advertisement

I2C总线的相关协议

阅读量:

【1】IIC相关的理论

复制代码


1> I2C是具备多主机系统所需的包括总线裁决功能的高性能串行总线。
2> I2C总线支持多主机多从机,但是常用的是单主机多从机
3> 每个接到I2C总线上的器件都有唯一的地址, 叫做设备地址。
4> 主机与其它器件进行数据传送时总线上发送数据的器件为发送器,
总线上接收数据的器件则为接收器。
5> 可以主动发起通信的叫做主机,只能被动收发数据的叫做从机。
6> 时钟信号由主机产生,作用给从机,主从之间根据同步时钟信号进行收发数据。
7> IIC总线上需要接两个上拉电阻,目的是总线在空闲的状态保持为高电平。

【2】IIC总线的时序图

[1. 起始信号和终止信号时序]

复制代码
    **1 > SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号
    2> SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号
    ​
    3> 起始和终止信号都是由主机发出,起始信号产生后,总线就处于占用的态;
                            终止信号产生后,总线就处于空闲态。**

[2. 字节传输和应答/非应答信号时序]

复制代码
    **1 > 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),
    每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
    2> 在第9个时钟周期的低电平期间接收器向数据线上写入数据,
    在第九个时钟周期的高电平期间发送器从数据线上读取数据,
    如果读到的是高电平表示非应答信号,
    如果读到的是低电平表示应答信号。**

[3. 数据传输时序]

复制代码
    **1 > I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,
    只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
    2> 在时钟为低电平期间,数据线上的数据可以变化,此时发送器向数据线上写入数据。
    在时钟为高电平期间,数据线上的数据必须保持稳定,此时接收器可以从数据线上读取数据。**

[4. IIC的从设备地址]

复制代码
    **I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。
    主机在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),
    用“0”表示主机发送数据(W),“1”表示主机接收数据(R)。
    总线上的每个从机都将这7位地址码与自己的地址进行比较,
    如果相同,则认为自己被主机寻址,根据R/W位将自己定为发送器或接收器。**

【3】IIC总线的通信协议

[1. 主机给从机发送一个字节的协议]

主机发起起始信号开始,主机发送7位从机地址加写位,从机接收到信号发送ACK应答,主机收到应答再发送8位寄存器地址,从机收到信号再发送ACK应答,主机收到应答信号发送8位数据位,从机再发送ACK,主机发送终止信号。

[2. 主机给从机发送连续多个字节的协议]

[3. 从机给主机发送一个字节的协议]

[4. 从机给主机发送连续多个字节的协议]

全部评论 (0)

还没有任何评论哟~