IIC通信过程介绍

大家好,今天小白给大家简单介绍一种常用的通信协议,IIC协议,欢迎一起讨论学习。

一.  概述

IIC集成电路总线,该总线由NXP公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离近,任意时刻只能有一个主机等。经常IIC和SPI接口被认为指定是一种硬件设备,但其实这样的说法是不尽准确的,严格的说他们都是人们所定义的软硬结合体,分为物理层(四线结构)和协议层(主机,从机,时钟极性,时钟相位)。IIC,SPI的区别不仅在与物理层,IIC比SPI有着一套更为复杂的协议层定义.

接下来从两个方面来分别介绍一下IIC的物理层和协议层。

二. IIC的物理层

a. 两条总线线路:一条是串行数据线SDA,一条是串行时钟线SCL(IIC是半双工,而不是全双工)

b. 每个连接到总线的器件都可以通过唯一的地址和其它器件通信,主机/从机角色和地址可配置,主机可以作为主机发送器和主机接收器。

c. IIC是真正的多主机总线,(而这个SPI在每次通信前都需要把主机定死,而IIC可以在通讯过程中,改变主机),如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防止总线数据被破坏。

d. 传输速率在标准模式下可以达到100kb/s,快速模式下可以达到400kb/s。

e. 连接到总线的IC数量只是受到总线的最大负载电容400pf限制。

三.  IIC的协议层

1. IIC总线的数据有效性规定:

IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号变为低电平时,数据线上的高低点评状态才允许变化。

2. 起始信号与终止信号

规定:在时钟信号为高电平期间,当数据线状态由高变低,表示一个起始信号。

在时钟信号为低电平期间,当数据线状态由低变高,表示一个终止信号。

注意:起始信号和终止信号都是由主机产生的,在起始信号产生之后,总线就处于被占用状态,在终止信号产生之后,总线就处于空闲状态。

                                               

3. 数据传送过程

每当发送端发送完一字节的数据后,发送端会等待一定的时间,等待接收方的应答信号,接收端通过拉低SDA数据线,给发送端发送一个应答信号,以提醒发送端我这边已经接受完成,数据可以继续传输,接下来,发送端就可以继续发送数据了。每一个字节必须保证是8个bit位,数据传送时先传送最高位(MSB),每一个传送的字节后面必须跟一个应答位(即:一帧共9位)

                                              

4. 关于总线寻址

主机向从机发送8位数据,这8位数据是在起始信号之后发送的第一个字节,后面的字节都是数据,不再是寻址,除非又重新来一个起始信号。

IIC总线协议有明确规定:采用7位的寻址字节,寻址字节是起始信号之后的第一个字节。

                                                        

D7~D1位是组成从机的地址,D0位是数据传输的方向位,为“0”表示主机向丛集写数据;为“1”表示主机向从机读数据。

注:主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,若相同,则认为自己正在被主机寻址,根据R/T位将自己确定为发送器和接收器。(主机给从机发送第一个字节(总线寻址那个字节),若是读命令,则从机接收到该 命令之后,主动往主机发送数据。)

5. 在总线的一次数据传输中,可以有以下几种组合方式:

a. 主机向从机发送数据,数据传送方向在整个传递过程中不变:

                                                         

注:图中有阴影部分表示数据由主机向从机传送,无阴影部分表示数据由从机向主机传送,A表示应答,A非表示非应答(高电平),S表示起始信号,P表示终止信号。

b. 主机在第一个字节后,立即从从机读数据(传输方向不变):

                                                         

注:图中非阴影部分分别表示:从机给主机的应答信号;从机给主机的数据;(阴影部分A表示:主机给从机的回复; 阴影部分的非A表示:非应答信号)

c. 在传送过程中,当需要改变传递方向时,起始信号和从机地址都被重复一次产生一次,两次读/写方向位正好相反。

                                                         

6. 几个常用信号的波形

                                                     

使用过程可以参考高通qapi文档,也可以参考我的另外一篇博客:

https://blog.csdn.net/weixin_38498942/article/details/86002613

四. 总结

本篇主要就IIC的物理层和协议层两个方面进行了简单的介绍,欢迎大家一起讨论学习。

  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IIC(Inter-Integrated Circuit)是一种串行通信协议,常用于连接微控制器和外设芯片之间的通信。它是由飞利浦(Philips)公司开发的,现在已经成为一种广泛应用的标准。 IIC通信的原理和过程如下: 1. 总线结构:IIC通信使用两条线路构成总线,分别是数据线(SDA)和时钟线(SCL)。所有的设备都通过这两条线路进行通信。 2. 主从模式:IIC通信中,有两种设备角色,分别是主设备(Master)和从设备(Slave)。主设备负责发起通信请求,而从设备则被动响应主设备的请求。 3. 起始和停止条件:通信开始前,主设备发送起始条件(Start Condition),即将SDA从高电平拉低后再将SCL从高电平拉低。通信结束时,主设备发送停止条件(Stop Condition),即将SDA从低电平拉高后再将SCL从低电平拉高。 4. 地址传输:主设备在起始条件后会发送一个7位的设备地址和一个读/写位(R/W)位,用于选择要通信的从设备。地址的最高位是固定为0,其余7位由从设备决定。 5. 数据传输:主设备和从设备通过时钟线同步数据传输。在每个时钟周期,数据线上的数据可以被读取或写入。主设备通过发送时钟信号来控制数据传输的速度。 6. 确认信号:在每个字节的传输结束后,接收数据的一方(无论是主设备还是从设备)都会发送一个应答信号(ACK),表示成功接收到数据。 7. 重复起始条件:在多个字节的传输过程中,主设备可以选择发送重复起始条件,而无需发送停止条件。这样可以在不释放总线的情况下选择与另一个从设备进行通信。 8. 时钟速率:IIC通信的时钟速率可以根据具体的应用需求进行调整,通常有几十kHz到几百kHz的范围。 总之,IIC通信通过两条线路进行串行数据传输,采用主从模式,并且具有起始条件、停止条件、地址传输、数据传输、确认信号等特点。这种通信协议在许多嵌入式系统和电子设备中得到广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值