2.1.I2C协议编程
创始人
2024-06-02 08:33:14
0

关于I2C这个协议,它体现了一个单片机难度的开始,我记得当时我学51时,I2C一直都理解不了,现在回来一看,它的原理貌似又显得如此的简单..

硬件连接

 对于硬件连接,也就是SCK时钟线,SDA数据线,两条线而已,这里唯一有讲究的就是I2C上为什么要加上拉电阻:SDA这条线上不一定只接有一个I2C设备,若是在数据传输过程中,设备1的SDA输出1,而设备2的SDA因为设计等各种原因输出了2,那么造成短路,设备将会有烧坏的风险,在这里,我们可以看向I2C设备的内部结构图:

 对于一个I2C设备而言,SDA并不直接由设备驱动,而是由OUT处的三极管控制,当OUT=1导通时,SDA接地,则SDA=0,相对的,当OUT=0时,SDA则由外部的电路决定其电平属性。若两边的设备OUT都为0,SDA悬空,那么上拉电阻就能为原本为悬空状态的SDA设置电平为高。有以下真值表

  AOUT    BOUT    SDA   
001
010
100
110


I2C原理

白色背景表示主-->从,灰色背景表示从-->主

数据写入

流程如下:

1.主芯片(开发板内置)发出一个START信号到从设备

2.主芯片发出设备地址(用于选中I2C总线上的I2C设备)以及方向(0表示写,1表示读)

3.从设备回应(用于确定设备是否存在)

4.主设备发送一个字节的数据给从设备,并等待回应,当接受到从设备的回应后才继续发送下一个字节的数据

5.数据发送结束后,主设备送出一个停止信号给从设备。

数据读出

 流程如下:

1.主芯片(开发板内置)发出一个START信号到从设备

2.主芯片发出设备地址(用于选中I2C总线上的I2C设备)以及方向(0表示写,1表示读)

3.从设备回应(用于确定设备是否存在)

4.从设备发送一个字节的数据给主设备,并等待回应,当接受到主设备的回应后才继续发送下一个字节的数据

5.数据发送结束后,主设备送出一个停止信号给从设备。

I2C信号如何形成?

那么START信号,设备地址,方向,停止信号等等又该如何形成呢?

  •  开始信号(S):当SCL保持高电平的情况下,SDA从高电平到低电平跳变,即为开始信号
  •  结束信号(P):当SCL保持高电平的情况下,SDA从低电平到高电平跳变,即为结束信号
  • 响应信号(ACK):接收器在接收到8位数据后,在之后的第9个时钟周期内拉低SDA,即为响应信号

  • 数据传输(设备地址,方向):当SCL为高电平时,SDA上的将数据被传输(读或写),而SDA上的数据想要变化,只能在SCL为低电平时进行跳变。

设备地址怎么看?

以AT24C02为例子

 对于不同大小的I2C设备,具有不同的从器件地址。由于24C02为2k容量,也就是说只需要参考下图中第一行的内容

 即AT24C02的设备地址为:1010xxx,若AT24C02的A1,A2,A3引脚都接地,则AT24C02的设备地址为1010000

SMBus协议

SMBus(System Management Bus)系统管理总线,是I2C的一个子集,它是基于I2C的基础提出了更为严格的使用规范。

VDD极限值对比I2C:

  • I2C:范围广,最高甚至可达12V
  • SMBus:1.8V~5V

SCL时钟频率对比I2C:

  • I2C:时钟最小频率无限制,且无Clock Stretching时长的限制。
  • SMBus:时钟最小频率10KHZ,有Clock Stretching时长的限制。

地址回应(Address Acknowledge)对比I2C:

  • I2C:没有强制要求必须发出回应信号(ack)
  • SMBus:强制要求必须发出回应信号(ack)chu

 数据传输格式对比I2C:

  • I2C:只定义了怎么传输数据,未定义数据的格式,数据格式完全由设备定义
  • SMBus:定义了几种固定的数据格式

1.Quick Command数据格式 

这种数据格式如图,可以在发出设备地址后,只发出一位数据,用于一些简单的I2C设备使用,如开关等。

2.Receive Byte数据格式 

 

这种数据格式如图,和原本的I2C协议很像,但区别在于主设备在接收到从设备发出的数据后,不需要进行应答(ACK)

3.Send Byte数据格式 

 几乎与I2C的过程一致。

4.Read Byte数据格式 

与上面的Receive Byte不同,Read Byte需要在发出设备地址后,还需要发出一个8位的芯片寄存器地址(Command Code),然后发出一个重复S信号(后面会讲这个机制)

5.Read Word数据格式 

 与Read Byte类似,但区别就是把数据分为高字节与低字节,就是一个是传8位数据用,一个传16位的数据。

6.Write Byte数据格式

7.Write Byte数据格式

对应的写操作数据格式如上:

8.Block Read数据格式

在这个块的读操作涉及到一个新的地方即:从设备会将数据数量Block Count的值上报到主设备,然后主设备才从从设备中读取N个块的数据。

9.Block Write数据格式

类似的东西,不再赘述

10.Block Write - Block Read Process Call数据格式

这个数据格式即写入N个数据块后立即读出N个数据块的数据,这里的两个N分别由主设备和从设备决定

11.PEC数据格式

PEC数据格式是一种错误校验码,即一个用于检验数据是否发送正常的数据块

SMBus中还存在REPEATED START Condition信号的机制(重复发出S信号)

即主设备在完成对数据的写操作后,主设备不用发出结束信号(P),而是直接发出下一个开始信号(S),然后对数据进行读操作即可。在BLOCK数据格式中,如果把传输Block Count的步骤去掉即为I2CBlock数据格式。在两种协议中更建议使用SMBus

相关内容

热门资讯

东方电子跌2.04%,成交额7... 5月14日,东方电子盘中下跌2.04%,截至11:00,报9.59元/股,成交7109.97万元,换...
龙利得涨2.30%,成交额24... 5月14日,龙利得盘中上涨2.30%,截至10:59,报5.79元/股,成交2494.39万元,换手...
国台办回应民进党当局加紧采购爱... 转自:财联社【国台办回应民进党当局加紧采购爱国者导弹】财联社5月14日电,国台办举行例行新闻发布会。...
格林精密跌2.04%,成交额5... 5月14日,格林精密盘中下跌2.04%,截至11:00,报14.92元/股,成交5458.96万元,...
晶华微跌2.06%,成交额17... 5月14日,晶华微(维权)盘中下跌2.06%,截至10:50,报25.66元/股,成交1777.62...
必得科技跌2.05%,成交额1... 5月14日,必得科技盘中下跌2.05%,截至10:56,报12.90元/股,成交1339.76万元,...
立方制药涨2.02%,成交额9... 5月14日,立方制药盘中上涨2.02%,截至10:57,报23.77元/股,成交9439.78万元,...
兰州市城关区首次开展公共服务政... 城关区首次开展公共服务政策健康影响评估  5月13日,兰州市城关区召开公共服务政策健康影响评估会议暨...
哪吒汽车关联公司超10亿人民币...   5月14日上午消息,天眼风险信息显示,哪吒汽车关联公司合众新能源汽车股份有限公司有10亿人民币、...
瀚川智能跌2.05%,成交额1... 5月14日,瀚川智能盘中下跌2.05%,截至10:51,报13.88元/股,成交1667.10万元,...
2024年上海宝山绿色低碳产业... 5月14日,界面新闻从上海宝山获悉,2024年宝山区绿色低碳产业规模已达1003.69亿元,首次突破...
美股三大指数涨跌不一 标普50... 来源:环球网 【环球网财经综合报道】当地时间周二,美股市场呈现分化走势,三大指数收盘涨跌互现。其中,...
瑞凌股份跌2.05%,成交额2... 5月14日,瑞凌股份盘中下跌2.05%,截至10:58,报10.03元/股,成交2729.60万元,...
研究称中国痴呆人数激增 【#研究称中国痴呆人数激增#】最近,上海复旦大学的一项研究显示,过去30年间,中国痴呆患者数量从19...
青少年阅读,筑就生命基石——来... 青少年红色阅读接力活动。 主办方供图当人工智能(AI)的浪潮扑面而来,全民阅读迎来变革之年,如何让阅...
技能之星丨赵慧仪:破茧成蝶的舞... 转自:邯郸网络广播电视台2025年河北省职业院校技能大赛舞蹈表演(中职组)现场,邯郸科实中等专业学校...
【研报推荐】华润微:25Q1盈... 转自:新华财经华润微季报点评_25Q1盈利同比高增,汽车和AI应用持续带来需求增量.pdf
费高云卸任安徽副省长,此前已任... 转自:长安街知事据安徽日报消息,5月14日上午,安徽省十四届人大常委会第十六次会议通过人事任免案,决...
电子烟概念股集体上扬 华宝国际... .ct_hqimg {margin: 10px 0;} .hqimg_wrapper {text-a...
中自科技跌2.03%,成交额4... 5月14日,中自科技盘中下跌2.03%,截至10:51,报22.64元/股,成交4916.13万元,...