I2C总线协议入门介绍

I2C总线是两线式双向串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。

特点:
接口简单
只有俩条位宽为1的连接线:
SDA -1bit数据线
SCL -1bit时钟线

双向总线
SDA 和SCL均为双向线路

多种模式
支持三种传输模式:
标准模式:传输速度可达100Kbit/s
快速模式:传输速度可达400Kbit/s
高速模式:传输速度可达3.4MKbit/s

多主机自动仲裁

术语

术语描述
发送器发送数据到总线的器件
接受器从总线接受数据的器件
主机初始化总线 ,发送起始和终止条件,发送数据和时钟的器件
从机被主机寻址的器件
多主机同时有多于一个主机尝试控制总线,但不破坏报文
仲裁是一个在多个主机同时尝试控制总线,但允许其中一个控制总线并使报文不破坏的过程
同步俩个或者多个主机同步时钟信号的过程

接口结构
在这里插入图片描述
当总线空闲时 这两条线路都是高电平
接口采用线与的方式,因此,任何一个端口输出为低电平,在总线上即表现为低电平

通信格式
在这里插入图片描述
当SCL 线是高电平时, SDA 线从高电平向低电平切换, 这个情况表示起始条件
当 SCL 是高电平时 SDA 线由低电平向高电平切换表示停止条件

在这里插入图片描述
数据有效性SDA 线上的数据必须在SCL的高电平周期保持稳定, 数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变.
在这里插入图片描述
数据位发送到 SDA 线上的每个字节必须为 8 位 每次传输可以发送的字节数量不受限制 每个字节后必须跟一个响应位
在这里插入图片描述
在响应的时钟脉冲期间 接收器必须将 SDA 线拉低 使它在SCL的高电平期间保持稳定的低
电平数据传输必须带响应
在这里插入图片描述
从机寻址
7 位寻址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
起始条件后的第一个字节
头7位 ——从机地址
第8位 ——报文方向
0-主机向从机写入数据
1-主机从从机读入数据

第一字节中位的定义:(特殊格式)

从机地址R/ W 位描述
0000 0000广播呼叫地址
0000 000XCBUS 地址 2
0000 010X保留给不同的总线格式 3
0000 0110保留到将来使用
0000 1XXXHs 模式主机码
1111 1XXX保留到将来使用
1111 0XXX10 位从机寻址

从机在接收到第一个字节数据之后:
如果头7位不是特殊的格式
系统中的每个期间都在起始条件后将7位与它自己的地址比较,如果一样,器件会认为他被主机寻址
是特殊的格式
根据不同的格式做出不同的反应

10 位寻址

在这里插入图片描述
从机在接收到第一个字节数据之后:
如果头 7 位 是11110XX 特殊格式
从机意识到主机正在进行10位寻址,如果从机支持10位寻址,那么会将XX与自己10位地址的高2位进行对比,如果相同,则在第9拍给出响应,并且会接收接下来的第二个字节;如果不同,则不响应,不接收接下来的第二字节
其他格式
根据不同的格式做出不同的反应

接收器发送响应的俩种情况:
主机发送器-从机接收器
这种情况其实就是主机向从机发送数据。这时候响应位处的响应需要由从机发送,主机在响应位期间将自己的SDA拉高。当主机的寻址地址发送完毕后,如果主机收到响应,主机就认为已经寻址到了目标从机,就开始发下一组8位数据,如何主机收到此次数据的响应,则主机可继续发下一组数据;如果主机未收到响应,主机需要终止本次操作。

主机接受器-从机发送器
这种情况其实就是主机从从机读取数据。这时候响应位处的响应需要由主机自己发出,从机在响应位期间将自己的SDA拉高。在主机接收到从机的数据之后,应该给出响应,这样从机才会发送下一组数据,否则从机会因为主机无响应而停止发送数据。
由此看来,主机在读取数据的时候,停止本次操作的条件是:当主机接收到最后一个字节的数据时,在响应位应不在给响应。以通知从机主机已经不再需要数据,在响应位后主机依然需要在总线上发起停止条件以结束本次读操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值