I2C 接口介绍(物理层and协议层)

I2C协议是一种由Philips开发的两线式串行通信协议,常用于系统内部IC间通信。它包括物理层和协议层,物理层涉及两条总线线路SDA和SCL,以及设备地址和多主机仲裁机制。协议层涵盖起始和停止条件、数据传输方向、应答机制等。STM32集成的硬件I2C接口简化了通信流程,支持标准、快速和高速模式的数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. I2C 协议简介

I2C(Inter-Integrated Circuit) 协议是由 Philips 公司开发的,由于它具备引脚少、硬件实现简单、可扩展性强、不需要如 USART、CAN 的外部收发设备等特点,现在被广泛地使用在系统内多个集成电路 (I2C) 间的通信。根据I2C 总线协议版本 2.1-2000”的说明,我们可以更详细地了解I2C协议

1.1 物理层

1)它只使用两条总线线路 :一条双向串行数据线 (SDA),一条串行时钟线(SCL)。见图1。

2)每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。

3)多主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线

4)具有三种传输模式:标准模式的传输速率为 100 Kbit/s ,快速模式为 400 Kbit/s,高速模式下可达 3.4 Mbit/s,但目前大多I2C 设备尚不支持高速模式。

5)片上的滤波器可以滤去总线数据线上的毛刺波以保证数据完整。

6)连接到相同总线的IC 数量受到总线的最大电容 400 pF 限制。

1.2 协议层

I2C 的协议包括起始和停止条件、数据有效性、响应、仲裁、时钟同步和地址广播等环节,由于我们使用的是 STM32 集成的硬件 I2C 接口,并不需要用软件去模拟 SDA 和 SCL线的时序,所以我们直接以I2C 通信的流程为大家讲解。见图2 和图3 。

图 2 和图3 的图例如下 :

数据由主机传输至从机

数据由从机传输至主机

S:传输开始信号

SLAVE_ADDRESS :从机地

R/W :传输方向选择位,1为读,0 为写

A/A : 应答或非应答信号

P:停止传输信号

这两幅图表示的是主机和从机通信时 SDA 线的数据包序列。

其中 S 表示由主机的I2C 接口产生的传输起始信号(S),这时连接到I2C 总线上的所有从机都会接收到这个信号。起始信号产生后,所有从机就开始等待主机紧接下来广播的从机地址信号 (SLAVEADDRESS),在I2C 总线上,每个设备的地址都是唯一的。当主机广播的地址与某个设备地址相同时,这个设备就被选中了,没被选中的设备将会忽略之后的数据信号。根据I2C 协议,这个从机地址可以是 7位或10 位。在地址位之后,是传输方向的选择位,该位为 0时,表示后面的数据传输方向是由主机传输至从机。该位为 1时,则相反。从机接收到匹配的地址后,主机或从机会返回一个应答 (A) 或非应答 (A)信号,只有接收到应答信号后,主机才能继续发送或接收数据。

若配置的方向传输位为写数据,广播完地址,接收到应答信号后,主机开始正式向从机传输数据(DATA),数据包的大小为 8 位。主机每发送完一个数据,都要等待从机的应答信号 (A).重复这个过程,可以向从机传输 N 个数据,这个 没有大小限制。数据传输结束时,主机向从机发送一个停止传输信号 (P),表示不再传输据。若配置的方向传输位为读数据,广播完地址,接收到应答信号后,从机开始向主机返回数据(DATA),数据包大小也为 8 位。从机每发送完一个数据,都会等待主机的应答信号 (A),重复这个过程,可以返回 N 个数据,这个 N 也没有大小限制。当主机希望停止接收数据时,就向从机返回一个非应答信号 (A),则从机自动停止数据传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值