【I²C总线通信协议总结】

I²C总线通信协议

(1)I²C概述

I²C(Inter-Intergrated Circuit)集成电路总线,该总线是由飞利浦公司在1980年代初设计出来的。主要是用来连接整体电路,是一种多向控制总线,也就是说多个器件可以连接到同一总线结构下,同时每个器件都可以作为实施数据传输的控制源。

I²C属于半双工同步串行通信方式。

 (2)I²C硬件拓扑结构

I²C总线一般有两根线,一个是双向传输的数据线(SDA),另一个是时钟线(SCL),所有接到I²C总线设备上的串行数据线SDA都接到总线的数据线SDA上,各设备的时钟线SCL都接到总线的时钟线SCL上。硬件连接如下图1所示,数据线SDA与时钟线SCL都通过一个上拉电阻连接到电源,初始电平都为高电平,处于空闲状态。每个连接到I²C总线的元器件都有唯一的地址。

图1 I²C硬件连接图​​​​

(3)I²C协议

I²C总线在数据传输过程中时钟线SCL始终由主机控制,数据传输期间共有三种信号产生:开始信号,停止信号和应答信号。简单概况如下:

①数据有效性

在时钟线SCL高电平期间内,数据线SDA上的数据必须保持稳定,数据线SDA的数据仅允许在时钟线SCL为低电平时改变,如下图2所示。

图2 数据有效性

②开始信号

当时钟线SCL处于高电平期间,数据线SDA产生由高电平向低电平的跳变,如下图3所示。

③停止信号

当时钟线SCL处于高电平期间,数据线SDA产生由低电平向高电平的跳变,如下图3所示。

图3 开始信号与停止信号的定义

④应答信号

总线上的接收器每收到一个字节(8bit)就产生一个应答信号ACK。接收器拉低数据线SDA表示应答,并在应答脉冲期间保持稳定的低电平。若主器件作为接收器时,必须发送数据传输结束的信号给发送器,即它在接收最后一个字节数据的应答脉冲期间不会产生应答信号(NACK,不拉低数据线SDA),如下图4所示。

图4 I²C总线应答信号

⑤数据帧格式

I²C总线传输的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在开始进行数据传输时,主机发出开始信号后,先传输一个器件地址(共7位,前4位是固定,后3位由硬件决定,即同一设备上可接8个同一器件)以及一位读/写位("0"表示主机发送数据W,"1"表示主机接收数据R),再传输一个字节地址(8位,用来选择从器件内部的第几个字节读/写),最后传输数据。每次数据传输总是由主机发出停止信号而结束。

1)主机向从机发送数据(以E²PROM为例)

1、主机发送起始信号;

2、主机发送从器件地址以及读/写位("0"),主机释放总线,等待从器件应答;

3、主机发送需写入的内部寄存器地址,等待从器件应答;

4.、主机发送数据

5、主机发送停止信号

6、E²PROM收到停止信号之后,内部进入写周期,大概需要5ms,此期间之内任何操作都不会被E²PROM响应(因此以这种方式的多次写入,需要插入一个延时,否则会导致失败);

注:阴影部分由主机向从机传送,无阴影部分表示从机向主机传送。A表示应答信号(低电平),Ā表示非应答信号(高电平);START表示起始信号,STOP表示停止信号。

2)主机向从机读取数据(以E²PROM为例)

1、主机发送起始信号;

2、主机发送从器件地址以及读/写位("0"),主机释放总线,等待从器件应答;

3、主机发送需写入的内部寄存器地址,等待从器件应答;

4、主机再次发送起始信号,即Restart;

5、主机发送从器件地址以及读/写位("1"),主机释放总线,等待从器件应答;

6、主机读取数据。主机在接收到最后一个字节数据后,不会发出应答ACK信号,于是从器件释放数据线SDA,以允许主机发送停止信号;

7、主机发送停止信号

  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 常见的单总线通信协议包括:I²C(Inter-Integrated Circuit)、SPI(Serial Peripheral Interface)、UART(Universal Asynchronous Receiver/Transmitter)等。 ### 回答2: 常见的单总线通信协议包括以下几种: 1. I2C(Inter-Integrated Circuit):这是一种半双工、串行的总线通信协议。它使用两条线路进行数据传输,一条是数据线(SDA),用于发送和接收数据,另一条是时钟线(SCL),用于控制数据传输的时序。 2. SPI(Serial Peripheral Interface):这是一种全双工、串行的通信协议,主要用于连接微控制器和外部设备,例如传感器和存储器。它使用四条线路进行通信,包括一个主设备(Master)和一个或多个从设备(Slave)。 3. UART(Universal Asynchronous Receiver Transmitter):这是一种常见的串行通信协议,常用于连接计算机与外围设备。它通过两条线路(发送线TX和接收线RX)进行数据的传输和接收,使用异步通信方式,无需时钟信号。 4. CAN(Controller Area Network):这是一种用于实时应用的串行通信协议,广泛应用于汽车和工业领域。它采用多主从架构,基于事件触发的通信方式,具有高可靠性和抗干扰能力。 5. LIN(Local Interconnect Network):这是一种用于汽车电子系统中的单线多从设备通信协议。它主要用于连接车辆中的低速从节点,例如车门控制模块和安全气囊系统。 除了以上几种常见的单总线通信协议外,还有一些其他的通信协议,例如Modbus和USB等,它们在特定的领域中得到广泛应用。 ### 回答3: 常见的单总线通信协议有以下几种: 1. I2C总线协议:I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于连接集成电路的总线系统。它使用了两根线路(时钟线和数据线)来实现设备之间的通信,并支持多个设备在同一总线上进行通信。 2. SPI总线协议:SPI(Serial Peripheral Interface)是一种全双工的串行通信协议,常用于连接微控制器和外部设备,如传感器、存储器等。SPI总线由一个主设备和一个或多个从设备组成,通过四根线路(时钟线、数据线、主设备输出线和从设备输出线)来传输数据。 3. CAN总线协议:CAN(Controller Area Network)是一种高可靠性的串行通信协议,主要用于汽车电子和工业控制领域。CAN总线采用差分信号传输方式,能够在高速和远距离的环境下进行可靠的通信,并支持多个节点之间的通信。 4. RS-485总线协议:RS-485是一种串行通信协议,常用于工业控制和数据采集系统。RS-485总线可以支持多个节点之间的通信,并具有抗干扰能力强、传输距离远等优点,适用于复杂的工业环境。 5. USB总线协议:USB(Universal Serial Bus)是一种用于计算机和外部设备之间的通信接口标准。USB总线协议支持热插拔功能,并可以同时连接多个外设,如打印机、键盘、鼠标等。 这些单总线通信协议各自具有不同的特点和适用范围,根据具体的应用场景和需求,可以选择合适的协议来进行通信。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZTH_Zero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值