前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >迷乱的通信协议之IIC时序分析(上)

迷乱的通信协议之IIC时序分析(上)

作者头像
狂人V
发布2020-06-29 10:29:24
1.3K0
发布2020-06-29 10:29:24
举报
文章被收录于专栏:电子狂人
想了很久,今天还是决定把IIC协议进行重新理解下,并进行记录与分享,自从大一跟着学长学过一次该协议后,之后需要用到该协议的时候,更多的是去找现成的对应的驱动代码

,而不是自己根据芯片手册老老实实的编写,虽然节省了很多时间,但是随着时间的加长,再加上平常也没怎么去注意内部的一些时序跳动,导致了该协议的一些原理都已经忘却,对于本人来说,这是个捡芝麻丢西瓜的领悟,所以打算在接下来的一段时间对基础的的一些串行协议重新进行详细的分析,不足之处,请指出。

好了,步入今天正题~

首先了解下下IIC是什么?

IIC是Inter-Integrated Circuit(内部集成电路)的简写,也是IIC Bus的简称,即中文名称为集成电路总线,一种串行通信总线,使用多主从架构,是目前应用最广泛的总线之一。该总线是由NXP前身的PHILIPS设计。

IIC总线具有两根信号线,一根为双向的数据线SDA,另一根为时钟线SCL,两条线可以挂载多个设备,如下图所示。

介绍完了IIC,现在对它的一些时序进行了解,就用AT24C02进行来进行吧,因为最开始我进行学习的时候记得也是用的这款系列的芯片,以下讲解的时序图来自24C02的芯片手册。

1、IIC的起始信号与停止信号

作用简介:

起始信号的作用是让在IIC总线上的从设备检测到,然后明白主机要准备给它发送数据了;

停止信号的作用是给正在进行的IIC通信发送一个结束的信号,让它停下,该休息了,比如待机、休眠之类的。

从时序图中可以很明显发现

起始信号:SCL保持高电平的时候,SDA由高变为低电平。

停止信号:SCL保持高电平的时候,SDA由低变为高电平。

2、IIC的响应信号

响应信号就是当从机接收到输入的数据后,发送一个反馈信号给主机,告知“信号已收到(Acknowledge)”,这样主机得到从机的有效反馈后,就可以进行下一个动作。

时序分析:DATAIN是由主机发出,DATA OUT是指从机的反馈,从上面的时序图可以发现,在第9个时钟周期,主机释放SDA信号线,从机把SDA信号线拉低(同时在SCL为高电平时可检测到),代表响应产生。很显然当SCL为高的时候,DATA OUT也依然还是高电平,没有做任何电平变化,代表无响应产生。

3、字节写入(Byte Write)

注:

DEVICEADDRESS:从机设备器件地址配置好的,具体方式可以从手册中获知,该地址就相当于是每个从机各自的名字,当你在总线上发出这个器件地址后,就像喊了该器件的名字一样,然后才会给你回答,当然如果总线上根本不存在这个地址的设备,就没有响应了;

R/W指令——“1”代表读,“0”代表写;

WORDADDRESS:你要存放的地址,就像是超市的存包柜对应的你存放物品的那个柜子的编号,只是这个地址可以由你自己进行设定;

流程:主机发出起始信号——发送7位器件地址+(R/W)写指令“0”——等待响应——发出起始信号——写入要存放的8位地址——等待响应——写入八位数据——等待响应——发出停止信号

4、页写入(Page Write)

注:相当于连续写的意思

流程:主机发出起始信号——发送7位器件地址+(R/W)写指令“0”——等待响应——发出起始信号——写入要存放的8位地址——等待响应——第1次写入八位数据——等待响应——第2次写入八位数据——等待响应—……—第n次写入八位数据——等待响应——发出停止信号

未完待续

今天由于时间问题就先讲到这了,等明天再继续对读操作的时序进行分析,有兴趣的朋友可以自行先了解,然后明天再看我讲的,看理解上是否有什么差别,芯片手册的话,可以自行上网查找。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子狂人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档