关于IIC协议的学习使用

  • 格式:docx
  • 大小:259.66 KB
  • 文档页数:3

作为一名电子世界的新手,笔者摸爬滚打也一段时间了,写这篇文章的初衷一是
想介绍自己学习IIC协议的想法与感受,供其他萌新参考,二呢也是想对自己的知识
进行系统的总结。

大神看到就不要喷我了。

好了,多余的话不说,进入正题吧。

IIC协议作为三大基础通信协议(串口、IIC、SPI)中的一个,应用领域十分广泛,具体的各位自行百度。

首先呢,我想很多人新人都知道IIC这个东西,但是具体应用呢,却又很模糊,就像在我身边发生的事情,身边的同学知道IIC协议,但是每次应
用具体芯片器件的时候,却求助于互联网,去用别人现成的代码,然后Copy过来,对于这样的事情,我觉得是不好的,对于初学者来说呢,这确实是很快很方便的方法,
但是IIC协议的器件何其多,难道每次都要去Copy别人的吗,我觉的作为初学者,电子世界的新人,应该拥有更多的耐心,去仔细看看IIC协议的手册,对它的时序很熟悉,等用的十分熟的时候再开始Copy(我想那时候肯定都是Copy自己写过的了)。

首先,先贴上IIC协议手册F/S(fast speed)模式两处重要内容。

接下来,笔者会贴上代码,然后根据代码对照数据手册来一步一步分析。

这是IIC的延时函数,12M晶振下,一个nop函数大概为1us,算下来也就是4us,至于为什么是4us,后面会说到。

这是IIC协议起始信号的代码,首先根据图31我们可以知道,起始信号数据线与时钟线要保证为高电平,接着的延时目的是什么呢,是为了保证它确实为高电平,排除
其他的因素的影响,增加代码的可靠性。

IIC_SDA=0,这一句将数据线拉低,Delay函数延时,这里就要先看图31了,我们可以查到,从拉低时钟线到下一个操作的时间为
t f + t HD,通过查表我们可以了解到,t f时间为300ns,而t HD时间在普通模式为3.45 us,快速模式为0.9us,因此我们取大值,这样得到时间一共为3.75us,因此我们将一个Delay函数的时间大致设置为4us。

IIC_SCL = 0,这一句将时钟线拉低,我们同样可以查到其后的t LOW时间标准模式下为4.7us,快速模式为1.3us,这里可能有人疑惑,4us延
时不是短了吗,时间是足够的,因为我们可以从图31时序图中看到,下一个操作,即对
t LOW时间后的,而是在其过程中,所以4us的延时相对是很充裕的。

数据线的操作不是在
接下来介绍IIC协议结束信号的代码,为什么不先介绍数据部分呢,因为结束信号部分与起始信号类似,对比起来会让人更加容易理解,上代码。

这一部分其原理同起始信号相同,只不过初始电平为低。

接下来就是比较重要的数据传输部分的程序了:。