微信
投稿

标准的IIC通信标准规范

2021-09-07 11:47 来源:单片机匠人 作者:蔡琰老师

实际工程项目中,有很多地方都会用到I2C总线通信,比如说24C02存储、传感器接口等,能使用I2C这项技能,就成为了我们工程师日常必备的武器,那么我们就来详细的说说I2C。

I2C是一种简单的双向二线制同步串行总线。只需要两根线即可在连接于总线上的器件之间传送信息,一根SCL时钟线,一根就是SDA数据。需要注意的是SDA它是一个双向传输的线,主机向从机发送信号通过SDA把数据送出去,从机向主机发送信号也是从SDA线把数据送出来。

I2C也可以一个一,也可以一对多,每个连接到总线的外围设备都有一个独立的地址,主机可以通过该地址来访问不同设备。主机可通过SDA线发送设备地址查找从机。

因为I2C 通信IO口输出结构都是配置为漏极开路或集电极开路输出。所以时钟线和数据线必须外部都接上拉电阻,当一对多输出的时候,很多GPIO口会连接在同一根线上,可能会存在某个GPIO输出高电平,另一个GPIO输出低电平的情况。如果使用推挽输出,你会发现这个GPIO的VCC和另一个GPIO的GND接在了一起,也就是短路了。如果换成开漏输出VCC和GND之间多了个电阻,这样电路就是安全的。

上拉电阻一般取值在1K-10K之间,上拉电阻的取值和通信速率会有一定的关系,如果上拉电阻的取值太大,那么信号的上升沿、下降沿就会很缓,会影响通信速率,这个具体的看应用的通信速率去测试波形,如果取的太小了,功耗很大,取的太大了,信号的上升沿就会慢,影响通信速率。

一般情况下I2C标准模式最高传输速率100Kbit/s,高速模式最高传输速率400Kbit,当然也有用软件模拟I2C的时序来进行通信的,这个速率就需要自己去掌控测试了,说白了就是我们对着时序图,抄一个同样的波形出来。只要遵守同样的约定,按照时序图对应管脚拉高拉低就可以读写数据了。

在标准协议中区分启动、停止、应答、等动作,下面我们来一起学习一下I2C的标准协议。

当检测到SDA线上为下降沿,SLC线上为高电平,就表示收到了启动信号,当检测到SDA线上为上升沿,SLC线上为高电平,就表示收到了停止信号。

收到启动信号之后就可以开始数据传输,收到停止信号表示帧数据传输完毕。在传输过程中,时钟线SCL为高电平的时候,数据线SDA必须保持稳定,不能改变电平状态,这样才能有效传输,在时钟线SCL为低电平的时候,数据线SDA可以改变状态,即:在SCL为高电平的时候,数据线SDA如果为高,那么传送的就是1,如果SDA为低,那么传送的就是0,在SCL为低电平的时候,你可以改变数据可以把数据变为0/1(图中红框交叉就表示数据的改变,从1变为0 从0变为1所以有了一个上升沿或者一个下降沿)。

在SCL的第9个时钟位,对应的SDA数据为应答数据,应答数据是有方向的,可以是主设备应答,可以是从设备应答,应答不是固定的,可以是低电平为应答,也可以是高电平应答,高应答或者低应答是由通信协议决定的,只要约定一个信号作为应答就可以了,主机给从机发送数据,从机接到了应答主机,从机给主机发送数据,主机接到了,主机就要应答,这样就形成了一个闭环。

以上就是一个标准的IIC通信标准规范,你清楚了吗?


免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

精彩评论

暂无评论...
验证码 换一张
取 消

热门作者

东方

简介: 天马行空的文字之旅。

邮箱: liutingting03@hc360.com

简介: 保持期待,奔赴山海。

邮箱: zhuangjiaxin@hc360.com

松月

简介: 脚踏实地,仰望星空。

邮箱: wuxiaqing@hc360.com

合作咨询:15889679808               媒体咨询:13650668942

广州地址: 广州市越秀区东风东路745号紫园商务大厦19楼

深圳地址: 广东省深圳市龙华区五和大道星河WORDC座5F506

北京地址: 北京市朝阳区小关东里10号院润宇大厦2层

慧聪电子网微信公众号
慧聪电子网微信视频号

Copyright?2000-2020 hc360.com. All Rights Reserved
慧聪电子网    京ICP备12006161号