学习目的及目标
· I2C通信的原理
· 学习ESP32 的I2C功能的配置
· 掌握I2C读取SHT30的温湿度程序
I2C通讯协议简介
I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。下面我们分别对 I2C协议的物理层及协议层进行讲解。
· 物理层
2C通讯设备之间的常用连接方式通讯结构如下。
它的物理层有以下几个主要特点:
· 支持多设备的总线。"总线"指多个设备共用的信号线。在一个 I2C 通讯总线中,可连接多个 I2C通讯设备,支持多个通讯主机及多个通讯从机。
· 一个 I2C 总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。
· 每个连接到总线的设备都有一个唯一的地址,主机利用这个地址在不同设备之间的访问。
· 总线通过上拉电阻接到电源。当 I2C 设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线。
· 常用的速率:标准模式传输速率为 100kbit/s ,快速模式为 400kbit/s。
· 最近I3C出来了,性能提升大大的 。
协议层
I2C的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。
I2C 通讯过程的基本结构如下:
· I2C写格式