当前位置: 首页 > news >正文

IIC通信协议

一、概述

IIC协议:是一种各种电子设备之间进行数据交换和通信的串行,半双工通信协议,主要用于近距离,低速的芯片之间的通信。                                    

I2C协议采用双线结构传输数据,由一个数据线(SDA线)和一个时钟线(SCL线)组成。

SDA线:用于双向数据传输。

SCL线:同步时钟数据传输的时钟信号。

通信时钟由主设备控制,从设备被动接收和回应。

二、I2C的主要特点

1、两线制

2、多主从架构:IIC总线上可以有一个主设备和多个从设备。主设备控制通信的开始和结束,从设备响应主设备的请求

3、地址寻址:每个从设备都有一个唯一的地址,主设备通过这个地址来选择特定的从设备进行通信

4、同步通信:数据传输是同步进行的,由SCL时钟信号控制数据位的发送和接收

5、半双工通信:在任何给定时间,数据只能在一个方向上流动。

6、应答机制

7、支持多种传输速率

I2C 协议没有规定总线上设备最大数目,但是规定了总线电容不能超过 400pF。管脚都是有输入电容的,PCB 上也会有寄生电容,所以会有一个限制。实际设计中经验值大概是不超过 8 个器件。)

三、IIC的通信过程

1. 结束信号:由主机拉低SDA线,在SCL线高电平时,SDA线由低电平转为高电平,产生起始信号。 

2. 起始信号:由主机拉高SDA线,在SCL线高电平时,SDA线由高电平转为低电平,产生结束信号。

3. 数据传输:数据按位传输,先传输高位,每个数据位的传输由SCL决定。在SCL线高电平时,SDA线上发送的数据将被视为有效数据,即 SDA 上的数据变化只能在 SCL 低电平期间发生。

4、应答信号:发送器每发送一个字节,就在时钟脉冲 9 期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK 简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

5、空闲状态:IIC 总线的 SDA 和 SCL 两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

写时序:

读时序:

 设备地址:一个 8 位的数据,其中高 7 位是设备地址,最后 1 位是读写位(为 1 的话表示这是一个读操作,为 0 的话表示这是一个写操作)。

写入单个字节
  向从机设备的某一个寄存器写一个字节数据:开始信号+设备地址(7位)+读/写(1位)+等待从机应答+寄存器地址(8位)+等待从机应答+要写的数据(8位)+等待从机应答+终止信号。

写入多个字节
  向从机设备的某一个寄存器写多个字节数据:开始信号+设备地址(7位)+读/写(1位)+等待从机应答+寄存器地址(8位)+等待从机应答+要写的数据_1(8位)+等待从机应答+要写的数据_2(8位)+等待从机应答+······+要写的数据_N(8位)+等待从机应答+终止信号。

读取一个字节
  从机设备的某一个寄存器读取一个字节数据:开始信号+设备地址(7位)+写(1位)+等待从机应答+数据地址(8位)+等待从机应答+开始信号+设备地址(7位)+读(1位)+等待从机应答+从机返回读取数据_1(8位)+主机(接收机)不再应答+终止信号

读取多个字节
  从从机设备的某一个寄存器读取多个字节数据:开始信号+设备地址(7位)+写(1位)+等待从机应答+数据地址(8位)+等待从机应答+开始信号+设备地址(7位)+读(1位)+等待从机应答+从机返回读取数据_1(8位)+主机(接收机)应答+从机返回读取数据_2(8位)+主机(接收机)应答+......+从机返回读取数据_N(8位)+主机(接收机)不再应答+终止信号。


http://www.mrgr.cn/news/98090.html

相关文章:

  • 基于 Maven 构建的 Thingsboard 3.8.1 项目结构
  • 部署NFS版StorageClass(存储类)
  • 文献总结:AAAI2025-UniV2X-End-to-end autonomous driving through V2X cooperation
  • SAP系统客户可回收包材库存管理
  • 强化学习系统在复杂推理模型中的应用——以AReaL系统为例
  • RPA VS AI Agent
  • 解决VS2022中scanf报错C4996
  • 第十六届蓝桥杯 省赛C/C++ 大学B组
  • 前端工程化-包管理NPM-package.json 和 package-lock.json 详解
  • C++基础精讲-01
  • CTF web入门之命令执行 完整版
  • 前端面试宝典---创建对象的配置
  • leetcode-动态规划25
  • Linux基础命令解释
  • mysql相关面试题
  • 银行业务发展历史
  • python相关面试题
  • C_内存 内存地址概念
  • C++学习之ORACLE③
  • 【LaTeX】