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

相关内容

热门资讯

你的晚安是我的早安是什么歌曲 你的晚安是我的早安是什么歌曲苏天伦《你的早安是我的晚安》“你的晚安是我的早安”是单小源的歌曲《东京遇...
积极进取的小故事 积极进取的小故事现代的普通人,不要名人的。不能与别人重复,尽快回答   啄木鸟的故事       啄...
熊出没之探险日记3什么时候播出... 熊出没之探险日记3什么时候播出?熊出没之探险日记3,春节前播放。熊出没只是探险日记三2020年5月4...
谁知道所有有关“七”的歌?拜托... 谁知道所有有关“七”的歌?拜托了各位 谢谢就是歌曲名里有“七”这个字的!谢谢七月七迅谈日晴 看我七十...
求一本小说 女主穿越了三次 每... 求一本小说 女主穿越了三次 每次都在福临身边 后来怀孕了孩子被打掉了那个 女主叫什么雯?那个女主就是...
如果记忆不说话,流年也会开出花... 如果记忆不说话,流年也会开出花的基本信息书 名:《如果记忆不弯饥好说话,流年也会开出花》埋铅 作 者...
你好,旧时光漫画版在哪里可以看... 你好,旧时光漫画版在哪里可以看?暂时在绘心上连载
一首英文歌,男的组合唱的,MV... 一首英文歌,男的组合唱的,MV是一个婚礼的过程。求歌名。是不是darin的can'tstoplove...
为什么很多人喜欢用胶片相机? 为什么很多人喜欢用胶片相机?有一种情怀叫做“怀旧“吧,现在数码相机越来越普遍了,已经到了”全民摄影“...
女主先爱上男主,男主却不喜欢女... 女主先爱上男主,男主却不喜欢女主或者是另有所爱,最后女主男主还是在一起的穿越小说。有木有再生缘:我的...
爱情失恋伤感句子 爱情失恋伤感句子越是美好的从前,越幸福的曾经,现在只能带来锥心的疼痛,痛到撕心裂肺,肝肠寸断,终于痛...
24岁穿这个会不会显老 24岁穿这个会不会显老有点显老,这个颜色款式,颜色有点暗,没有活力,属于那种气质佳,长得高雅的女人,...
哈尔的移动城堡英语版 哈尔的移动城堡英语版可以发给我吗度盘~请查收~
秦时明月之万里长城什么时候播 秦时明月之万里长城什么时候播据说是今年暑假开播别急,官网什么的信他你就输了,12年之前底应该会出,杭...
孩子会得抽动症吗? 孩子会得抽动症吗?我天生的气性比较大,有时跟别人斗嘴时候就会手脚哆嗦,麻木,我问一下这是不是抽动症就...
亨德尔一生为音乐献出了怎样的贡... 亨德尔一生为音乐献出了怎样的贡献?亨德尔一生写了歌剧41部,清唱剧21部,以及大量的管乐器与弦乐器的...
礼仪起源和发展的经典故事? 礼仪起源和发展的经典故事?一、礼仪的起源;1、天神生礼仪;2、礼为天地人的统一体;3、礼产生于人的自...
描写桂林山水的句子有哪些? 描写桂林山水的句子有哪些?天下风光数桂林有杨万里的“梅花五岭八桂林,青罗带绕碧玉簪”;有邹应龙的“无...
避免与强敌正面对决的成语 避免与强敌正面对决的成语避免与强敌正面对决的成语避实就虚 【近义】避重就轻、避难就易、声东击西【反义...
多愁善感类的成语 多愁善感类的成语心细如发【解释】:极言小心谨慎,考虑周密。亦作“心细于发”。【出自】:吴梅《题天香石...