NXP-I2C-知识提纲
NXP-I2C-知识提纲
1 i2c基础知识
1.1 如何介绍i2c总线[点击展开]
i2c总线是一种串行数据总线,使用有两个单bit的双向串行线进行通信。一条是sda,作为数据线;一条是scl;作为时钟线。
连接到总线的每个设备都可以通过唯一地址进行软件寻址,且大多数模式下每个设备都可以作为主机从机,发送端接收端。
因此,根据主从关系和收发关系,下每个设备都有四种身份。
超高速模式下是个例外,由于使用了推挽的方式其只能以主机发送端和从机接收端进行发送数据,且只能有一个主机存在。
大多数情况下总线上可以存在着多个主机和多个从机,使用线与的方式进行总线上的仲裁和同步。
到目前为止有5个版本的速度模式。从100kbps到5Mbps。
1.2 i2c有5种速度模式[点击展开]
1. 标准模式-Sm:100kbps;
2. 快速模式-Fm:400kbps;
3. 快速加模式-Fm+:1Mbps;
4. 高速模式-HSm:3.4Mbps;
5. 超高速模式-UFm:5Mbps;
1.3 两种传输模式[点击展开]
1.3.1 主机发送端向从机接收端写入数据[点击展开]
1. 主机发送端向总线上所有从机发出START条件;
2. 主机发送端向总线上所有从机发出7位地址+低电平的写;
3. 对应从机接收端回应ack;
4. 主机发送端次发送8bit的数据;
5. 从机接收端多次回应ack或者nack;
6. 主机发送STOP条件结束条件;
1.3.2 主机接收端从从机发送端读取数据[点击展开]
1. 主机接收端向总线上所有从机发出START条件;
2. 主机接收端向总线上所有从机发出7位地址+高电平的读;
3. 对应从机回应ack;
4. 从机发送端多次发送8bit的数据;
5. 主机接收端多次回应ack或nack;
6. 主机接收端发送STOP结束条件。
1.3.3 5种NACK产生的情况[点击展开]
1. 寻址不到从机;
2. 从机无法接受传输;
3. 接收方无法接受传输;
4. 接收方无法解析传输内容;
5. 主机接收方想要结束传输;
1.4 SCL的同步[点击展开]
多个主机同时发起传输时,SCL线最先进入低电平的主机将总线的SCL保持;
其他主机SCL线低到高的转变不会改变总线上SCL线的状态;
最后一个结束SCL线低电平状态的主机将总线上SCL线的状态改变到高电平;
第一个结束SCL线高电平状态的主机将总线上SCL线的状态改变到低电平;
通过这种方式,生成一个同步SCL时钟。
1.5 SDA的仲裁[点击展开]
多个主机同时发起传输时,在SCL的上升沿检查自身SDA的数据和总线上SDA的数据是否一致;
如果一致,表示总线正在被其占有;
如果不一致则退出仲裁;
有从机功能的主机则进入从机状态。
1.6 数据和START/STOP条件重合将会产生未定义情况[点击展开]
1. 两个主机各自的START和数据重合;
2. 两个主机各自的STOP和数据重合;
3. 两个主机各自的START和STOP重合;
1.7 START字节启动程序的内容[点击展开]
1. START条件。
2. START字节包(0b0000_0001)。
3. ACK。
4. START条件。
1.8 总线清除的几种方式[点击展开]
1. 发送9个时钟脉冲。
2. 使用复位信号重置总线。
3. 使用POR复位电路。
1.9 设备ID包含哪些信息[点击展开]
12bit的制造商信息+
9bit的部件识别位+
3bit的晶圆修订位
1.10 如何读取设备ID[点击展开]
1. 主机发送START。
2. 主机发送0b1111_1000。
3. 主机发送从机地址+RW(这个可以随便)。
4. 主机发送START。
5. 主机发送0b1111_1001。
6. 从机开始返回3个字节的设备ID。
7. 主机发送NACK结束读取序列,如果主机ACK回应,则从机继续发送3个字节的设备ID。
1.11 如何开启高速模式[点击展开]
1. START。
2. 8位主机代码(0b0000_1xxx)。
3. 不确认位(NACK)。
2 i2c时序框图
2.1 i2c的SDA保持有效和改变有效的时序图[点击展开]
2.2 i2c的start条件和STOP条件时序图[点击展开]
2.3 7bit地址完整的传输过程[点击展开]
2.3 完整的写传输数据格式[点击展开]
2.4 完整的读传输数据格式[点击展开]
2.5 传输过程中不发送STOP,改变从机地址的数据格式[点击展开]
2.6 START字节程序[点击展开]
3 i2c零碎知识点
- 仲裁和同步都是通过线与的放肆实现的,低电平信号优先级最高。
- 最长周期低电平设备的scl信号决定了总线上scl信号的低电平周期长度。
- 最短周期高电平设备的scl信号决定了总线上scl信号的高电平周期长度。
- 包含从机功能的主机在失去总线控制权时,必须立即切换到从机模式。
- START之后紧跟一个STOP是非法格式。
- 10位地址的格式(7b1111_1xx+(RW)+8bxxxx_xxxx), 从机地址第一部分可能有多个从机应答,但从机地址第二部分只有一个从机能够应答。
- 所有从机对上一次寻址的结果是有记忆的。
- 只有START条件和STOP条件能够重置设备状态机。
- SDA和SCL的空闲电平为高。
- START字节和START条件都是用来启动传输的,差别只在启动过程的长短。
- 由于UFm是单向的,所以忽略确认位,且始终为1。
- UFm从机的响应是通过其他信号反馈的,
- 标准模式、快速模式、快速加模式保持相同的总线协议和数据格式。
- 由于主机代码格式为0b0000_1xxx,所以一个i2c总线上只会存在8个高速主机。
- 高速模式不进行仲裁和时钟同步。
- I3C相比于I2C来说多了一个中断反馈信号,消除了使用GPIO传输中断的需求。