IIC总线协议基本原理以及GPIO虚拟IIC接口

        IIC 一般应用于芯片之间的通信,是半双工串行同步通信总线,它的传输距离短,但其好处是 IIC 支持一主多从的挂载方式,因此主机和多个从机之间的通信线只要两条就够了,

IIC硬件结构:

 IIC 串行总线一般有两根信号线,一根是双向的数据线 SDA,另一根是时钟线 SCL。所有接到 IIC 总线设 备上的串行数据 SDA 都接到总线的 SDA 上,各设备的时钟线 SCL 接到总线的 SCL 上。因为IIC通信过程中,同一时间内,IIC的总线上只能传输一对设备的通信信息,所以同一时间只能有一个从设备和主设备通信。由于此时其它空闲设备可能对总线造成干扰,或者干扰总线,所以为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是漏极开路(OD)输出或集电极开 路(OC)输出。

        漏极开路即高阻状态,适用于输入/输出,其可独立输入/输出低电平和高阻状态,若需要产生高电平,则需使用外部上拉电阻。总线空闲时,因各设备都是开漏输出,上拉电阻 Rp(1-10k之间,一般可用5.1k) 使 SDA 和 SCL 线都保持高电平。IIC的空闲状态只能有外部上拉, 而此时空闲设备被拉到了高阻态,也就是相当于断路, 整个IIC总线只有开启了的设备才会正常进行通信,而不会干扰到其他设备,设置输出时也可以是推挽输出,只不过此时 IIC 总线上的上拉电阻就起不到作用了,这 种在多从机的情况下可能会产生问题,所以建议设置开漏输出。任一设备输出的低电平都将使相应的总线信号线变低,也就是说:各设备的 SDA 是“与”关系,SCL 也是“与”关系。

        总线的运行(数据传输)由主机控制。所谓主机是指启动数据的传送(发出启动信号)、发出时钟信号 以及传送结束时发出停止信号的设备,通常主机都是微处理器。被主机寻访的设备称为从机。为了进行通 讯,每个接到 IIC 总线的设备都有一个唯一的地址,以便于主机寻访。主机和从机的数据传送,可以由主机 发送数据到从机,也可以由从机发到主机。凡是发送数据到总线的设备称为发送器,从总线上接收数据的 设备被称为接受器。IIC 总线上允许连接多个微处理器以及各种外围设备,如存储器、LED 及 LCD 驱动器、 A/D 及 D/A 转换器等。为了保证数据可靠地传送,任一时刻总线只能由某一台主机控制,各微处理器应该在 总线空闲时发送启动数据,为了妥善解决多台微处理器同时发送启动数据的传送(总线控制权)冲突,以 及决定由哪一台微处理器控制总线的问题,I2C 总线允许连接不同传送速率的设备。多台设备之间时钟信号 的同步过程称为同步化。

IIC 主从机之间通讯步骤如下:

1. 主机发送一个起始信号通知各从机就位

2. 主机发送一个字节的数据(从机地址和读写标志位)从机地址和读写标志位一共占用 8 位,地址占用高 7 位,读写标志位占用最低位,0表示主机向从机发送数据,1表示从机向主机发送数据。

 3. 从机给主机回复响应 (包括ACK和NACK)

4. 如果是写模式,主机发送一字节数据等待从机响应,主机收到响应之后如果还有数据要发就继续发送第二段数据等待响应…直到发送完成; 如果是读模式,此时主机读取从机发来的数据,并给从机响应,如果从机还有数据要发送(接着汇报第二段),主机接着读取然后发送响应给从机…

5. 主机给从机一个停止信号 

写时序:

        主控器在检测到总线为“空闲状态”(即 SDA、SCL 线均为高电平)时,发送一个启 动信号“S”,开始一次通信的开始。主控器接着发送一个命令字节。该字节由 7 位的外围器件地址 和 1 位读写控制位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值