当前位置: 首页 > 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位)+主机(接收机)不再应答+终止信号。

相关文章:

  • Python快速入门指南:从零开始掌握Python编程
  • JetBrain/IDEA :Request for Open Source Development License
  • 基于springboot+vue的秦皇岛旅游景点管理系统
  • MySql 自我总结
  • GOC 指令集
  • 深入学习任何技术的实用指南
  • data_analysis14
  • C++之map,set的实现
  • AI大模型从0到1记录学习 day17
  • 基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(二)
  • 5分钟搭建一个在线客服网站!免费!
  • Microsoft Office 如何启用和正常播放 Flash 控件
  • 腾讯后台开发 一面
  • vulkanscenegraph显示倾斜模型(5.8)-视景器编译
  • Go:复合数据结构
  • 阿里云实时计算Flink版产品体验测评
  • 强化学习系统在复杂推理模型中的应用——以AReaL系统为例
  • 在pycharm配置虚拟环境和jupyter,解决jupyter运行失败问题
  • Sa-Token 自定义插件 —— SPI 机制讲解(一)
  • vue3 异步组件的使用
  • 网站开发要学什么语言/百度的网址
  • 手机版网站建设价格/百度指数搜索榜
  • 自己的网站服务器/东莞疫情最新数据
  • 昆明网站建设培训/河南网站公司
  • 影视传媒公司网站模板/上海网站建设咨询
  • 潍坊网站制作熊掌号/微信客户管理