I2C串口协议详解

I2C串口协议详解

Inter-Integrated Circuit(内置集成电路),是一种通用的总线协议。它是由Philips(飞利浦)公司,现NXP(恩智浦)半导体开发的一种简单的双向两线制总线协议标准。
I2C 总线在物理连接分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。
I2C通信方式为半双工,只有一根SDA线,同一时间只可以单向通信;

I2C可以工作在以下5种不同的速率模式,不同的器件可能支持不同的速率
  1. 标准模式(Standard): 100kbps
  2. 快速模式(Fast): 400kbps
  3. 高速模式(Fast-Plus): 1Mbps
  4. 超快模式(Fast-Speed):3.4Mbps
  5. 超快模式(Ultra-Fast):5Mbps(单向传播)
    其中超快模式是单向数据传输,通常用于LED、LCD等不需要应答的器件,和正常的I2C操作时序类似,但是只进行写数据,不需要考虑ACK应答信号。
I2C最基本的四种信号
起始信号

I2C协议规定,SCL是高电平时,SDA由高到低变化,这种信号是起始信号

停止信号

I2C协议规定,SCL是高电平时,SDA由低到高变化,这种信号是停止信号
在这里插入图片描述

应答信号

应答信号出现在1个字节传输完成之后,即第9个SCL时钟周期内,此时主机需要释放SDA总线,把总线控制权交给从机,由于上拉电阻的作用,此时总线为高电平,如果从机正确的收到了主机发来的数据,会把SDA拉低,表示应答响应
在这里插入图片描述

非应答信号

当第9个SCL时钟周期时,SDA保持高电平,表示非应答信号。
在这里插入图片描述
非应答信号可能是主机产生也可能是从机产生,产生非应答信号的情况主要有以下几种:
I2C总线上没有主机所指定地址的从机设备
从机正在执行一些操作,处于忙状态,还没有准备好与主机通讯
主机发送的一些控制命令,从机不支持
主机接收从机数据时,主机产生非应答信号,通知从机数据传输结束,不要再发数据了

数据有效性

I2C协议对数据的采样发生在SCL高电平期间,除了起始和停止信号,在数据传输期间,SCL为高电平时,SDA必须保持稳定,不允许改变,在SCL低电平时才可以进行变化。

总线空闲状态

SCL和SDA都保持着高电平

I2C主设备指定从设备地址传输数据

I2C总线上的每一个设备都对应一个唯一的地址,主从设备之间的数据传输建立在地址的基础上

主设备在传输有效数据前要先指定从设备地址,大多数从设备地址是7位,协议规定再给地址添加一个最低位来表示接下来数据传输的方向:
0表示主设备向从设备写数据;
1表示主设备向从设备读数据;

向指定对象发送数据的格式:
在这里插入图片描述

主从设备读写操作

1.主设备往从设备写数据
在这里插入图片描述

2.主设备从从设备中读数据
在这里插入图片描述

3.主设备往从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;
或者是主设备从从设备中读数据,然后重启起始条件,紧接着主设备往从设备中写数据;

在这里插入图片描述
写数据时序图
在这里插入图片描述
读时序图
在这里插入图片描述在这里插入图片描述
注意,读数据时有两次起始信号

猜你喜欢

转载自blog.csdn.net/ywl1204246322/article/details/127346836