I2C通信

作者: 不合格码农 | 来源:发表于2019-02-15 13:29 被阅读2次

借鉴:https://blog.csdn.net/qq_29344757/article/details/76520378

1. 物理层

        I2C通讯系统接线图如下:

    

        SCL总线:控制线

        SDA总线:数据线

        (1) 在I2C通讯总线上,可连接多个I2C通讯设备,支持多个通讯主机和多个通讯从机

        (2) I2C通讯只需要两条双向总线:串行数据线(SDA),串行时钟线(SCL)。数据线用于传输数据,时钟线用于同步数据收发

        (3) 每个连接到总线的设备都有一个独立的地址,主机正是利用该地址对设备进行访问

        (4) SDA和SCL总线都需要接上上拉电阻,当总线空闲时,两根线均为高电平。连接到总线上的任意器件输出低电平都会将总线信号拉低。即各器件的SDA和SCL都是线与的关系

        (5) 多个主机同时使用总线时,需要用仲裁方式决定哪个设备占用总线,不然数据将会产生冲突

        (6) 串行的8位双向数据传输位速率在标准模式下可达100kbps,快速模式下可达400kbps,高速模式下可达3.4Mbps(目前大多数I2C设备还不支持高速)

2. 协议层

        协议层规约了通讯的起始、停止信号,数据有效性、响应、冲裁同步、地址广播等。

        在SCL线为高电平期间,SDA线由高电平向低电平转换表是起始信号

2.1 通讯的起始信号/结束信号
        在SCL线为高电平期间,SDA线由低电平向高电平转换表是结束信号。

    起始/结束信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在结束信号产生后,总线就处于空闲状态。

需要注意的两点:

        (1) 接收器件接收到一个完整的数据字节后,可能需要完成一些其他工作,如处理内部接收中断服务函数等,这就无法立即接收下一字节的数据,这时接收器件可将SCL线拉成低电平,从而使得主机处于等待状态。直至接收器件准备好接收下一字节数据时再释放SCL线使之为高电平。

        (2) 连接到I2C总线上的器件,若具有I2C总线控制器那么很硬件会自动检测到起始、结束信号,而对于不具备I2C总线控制器的器件(单片机)来说,需要在每个时钟周期内保证对数据线SDA采样两次,捕获是否接收到起始/结束信号。

2.2 数据传输


        (1)通过每个设备上的地址,进行数据信号的处理。

         (2)结束由主机发送信号,若需要继续新的数据传输,则不产生结束信号,而是发送起始信号对另一从机地址寻址

         (3)写数据方向,主机-->从机,数据包为8位,等待从机应答信号(ACK),多字节,重复此操作,最后主机发送停止信号结束。

          (4)读数据方向,从机-->主机,数据包为8位,等待从机应答信号(ACK),多字节,重复此操作,若为NACK,则数据传输结束。

          (5)实际I2C通讯采用的是读写复合的格式。传输过程中主机需要发出2次起始信号:第一次传输主机通过从机地址找到从机设备,发送一段数据,这个数据是从设备内部寄存器或者存储器地址;第二次传输是对该地址进行读/写。主机要读取从机数据时,主机会释放对SDA总线的控制,由从机控制SDA总线,主机负责接收信号;主机要向从机设备写数据时,SDA由主机控制,从机负责接收信号。

相关文章

  • 项目15 之 I2C通信方式原理与应用

    项目15 之 I2C通信方式原理与应用 I2C是各类传感器与模块与Arduino通信的最常用方式之一 I2C的全称...

  • OSError: [Errno 121] Remote I/O

    打开raspberryPi I2C功能,连接上I2C通信的扩展板即可

  • 9.26总结

    今天学习了I2C通信协议 I2C是串行同步半双工通信 IIC通信处于空闲状态时,两条信号线各自上拉处于高电平 数据...

  • 张高兴的 .NET Core IoT 入门指南:(三)使用 I2

    什么是 I2C 总线 I2C 总线(Inter-Integrated Circuit Bus)是设备与设备间通信方...

  • 基于I2C的STM32与树莓派通信

      传统的串口通信会丢失数据,不可靠,故采用I2C(同步串行总线)通信。  树莓派上使用python脚本,后期将使...

  • i2c协议笔记

    camera sensor与主控芯片是通过i2c通信的,摄像头读id,初始化寄存器,开启流,写曝光都是通过i2c总...

  • I2C通信

    借鉴:https://blog.csdn.net/qq_29344757/article/details/7652...

  • I2C通信二

    一、数据在I2C总线上的传输协议 (1) I2C通信时的基本数据单位也是以字节为单位的,每次传输的有效数据都是1个...

  • I2C通信一

    一、什么是I2C通信 物理接口:SCL + SDA(1) SCL(serial clock):时钟线,传输CLK信...

  • 高速电路_四轴飞行器_1

    四轴飞行器 1.结构组成 2.通信方式 串行通信:一位一位的传 USB,UART,I2C,SPI 并行...

网友评论

      本文标题:I2C通信

      本文链接:https://www.haomeiwen.com/subject/tnspeqtx.html