当前位置:网站首页>I2C协议
I2C协议
2022-07-13 18:06:00 【LED_H】
文章目录
提示:本文参考野火视频,做学习记录。
一、什么是I2C?
I2C通过协议(Inter-Integrated Circuit)由phillips公司开发的,引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通信协议的外部收发设备,被广泛使用在系统内多个集成电路(IC)间的通信。如下图所示:
I2C分为物理层与协议层:
二、物理层与协议层
1.物理层
(1)I2C总线:
I2C总线由串行数据总线(SDA)与串行时钟总线(CLK)组成。数据线用于传输数据,时钟线用于数据收发同步。
(2)从地址:
每个连接到总线的设备都有一个独立的地址(从地址7位,与读写位组成一个字节,通常表示为8位的读地址与8位的写地址),主机利用不同的地址进行不同的设备通信。
(2)三种传输模式:
标准模式:100kbit/s
快速模式:400kbit/s
高速模式:3.4Mbit/s
总线上通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态;而当所有的设备都空闲时,所有的设备都会输出高阻态,由上拉电阻把总线拉到高电平。通过识别总线的是否为高电平就能识别到总线是否有无通信。
2、协议层

(1)基本读写过程(下图为数据写入图):

S:起始信号 P:停止信号
SLAVE_ADDRESS:设备从地址(挂载的从机地址) DATA::传输的数据
A:应答信号(ACK) A非::非应答信号(NACK)
R:读标志位(”0“写入) W:写入标志位(“1”读数据)
主机发送S(起始信号)+SLAVE_ADDRESS(从地址)+R/W操作对用的从机,当为写入时数据传输方向为主机到从机,每次数据接收完成之后,从机必须必须回一个ACK或者NACK,数据完全发送完毕之后从机回NACK,告诉主机数据已经发送完毕,主机发送停止信号P结束通信。 当为读数据时,从机发送数据后必须回一个ACK或者NAC告诉主机数据是否发送完毕,当主机收到NACK主机就知道从机所有数据发送完毕,这是主机在发送停止信号P来停止通信。
(2)复合模式:

复合模式与基本读写模式基本相同,当从地址回复NACK告诉主机数据已经发送完毕时,主机不是发送停止信号而是发送 重复起始信号Sr开始一段新的数据传输。
(3)通信的起始信号与停止信号:
当SCL线是高电平时SDA线从高电平向低电平切换——表示通信的开始(其实信号)。
当SCL线是高电平时SDA线从低电平向高电平切换——表示通信的结束(停止信号)。
停止信号与起始信号一般由主机产生。
(4)可挂载的从设备数量:
有IIC地址决定,8位地址,减去1位广播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件。
边栏推荐
- Basic introduction to flask 7 cookies and sessions
- DIY a cache
- "Why do you want to resign, Tencent, which broke its head?"
- Re 正则表达式
- Set up in Jenkins to show the summary of allure Report
- Ugly number
- help one another in defense work
- Use redis' sorted set to make weekly hot reviews
- jmeter中设置登录接口只调用一次
- 2个用例之间存在关联,怎么解?
猜你喜欢
随机推荐
This should be the most complete software test interview question in the whole network [quick look]~
Re 正则表达式
Dynamic open point segment tree
作为测试开发岗的面试官,我都是怎么选人的?
Automatically back up mysql. And keep the case for 7 days
VLAN和Trunnk
全排列next_permutation()函数
(一)输入输出
IDEA 注释模板,这样配置才够逼格!
太香了, 终于明白为什么这么多人要转行软件测试了~
VLAN and trunnk
ABAP Bapi copy the standard project template to achieve project initiation
3、 Experimental report on the implementation of SMB sharing and FTP construction by freenas
Socket details
这应该是全网最完整的软件测试面试题了【速看】~
软件测试真的干不到35岁吗?那咋办呢...我36了...
Flask基础入门七-Cookie和Session
Why can't we use redis expiration monitoring to close orders?
Setting the login interface in JMeter can only be called once
递归实现组合型模型









