原创 【博客大赛】MCU之心路分享—有种爱叫:IIC(十)

2014-4-5 17:28 2670 19 27 分类: MCU/ 嵌入式 文集: MCU之心路分享

         在工科男的世界里,连IIC都能想象成浪漫的牵手,而一个对单片机充满热爱的工科男,有什么理由不去认识它,学会它,并去驾驭它啊!当然,在我知道的世界里,貌似大学老师从来都没有真正教过,也难怪那么多工科男抱怨不懂得牵手妹子,深受单身的痛苦!原来是没有学会牵手妹子的绝招,没有学会IIC啊!嘿嘿,,,,

       学会IIC,学会搭讪妹子!开始恋爱之旅,做个浪漫的工科男吧!

——————————————————————————————————————

        IIC在单片机的学习中是一种非常重要的传输协议,也是比较难懂的,但也是单片机学习的过程中必然要去面对,且必须学会的,因为太多太多的芯片就是靠它与单片机牵手相爱的啊!比如最常见的24C02,温度传感器芯片LM75,AD/DA转换芯片PCF8591.,,,,等等,从而足以看出IIC是如何风骚的沟通桥梁了吧?它不仅能搭讪一个妹子,而是好多妹子啊!!!

 

本小节目录:

              10.1,IIC总线介绍

              10.2,IIC总线的数据传送

              10.3,数据传送格式

              10.4,简介AT24C02使用及程序分析

 

10.1IIC总线介绍

1简介

IIC是Philips公司推出的串行总线标准(为二线制)。

总线上扩展的外围器件及外设接口通过总线寻址,因其具有接口线少,控制简单,通信速率高,稳定等优点得以广泛被利用

   I2C总线即为:串行数据线SDA和串行时钟线SCL构成的,可发送和接收数据

 

2) IIC总线结构图

  1.jpg

                                                 图 1 IIC总线器件连接图

          IIC总线通过上拉电阻接正电源。同时总线上器件都采用漏极开路结构与总线相连,当总线空闲时,两根线均为高电平。当总线上任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。

         在C51中我们一般称单片机为主机,总线上的器件称为从机。

 

10.2IIC的数据传送

1数据位的有效性规定

    I2C总线进行数据传送时,时钟信号为高电平期间,数据线(SDA)上的数据必须保持稳定,只有在时钟线(SCL)上的信号为低电平期间数据线(SDA)上的高电平或低电平状态才允许变化

    将SCL比喻为妹子,你不就像SDA了吗?当妹子(SCL)高兴时,你要保持高兴的稳定状态,当妹子(SCL)心情低落生气时,你才可以高兴的哄她开心,或者对她生气呀!

2.jpg

                                          图2  IIC总线数据位的有效规定

2)起始信号和终止信号

3.jpg

                                     图3  IIC启动信号和终止信号

           SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;

           SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。  

 

          开始追妹子的特征,妹子(SCL)心里会偷偷高兴的(高电平),你知道吗?这时的你(SDA)是不是该低下你高高的头,厚着脸皮去给妹子调情呀?

终止追妹子(SCL)的特征,妹子已经高兴的答应做你女朋友了!你(SDA)是不是也该抬头做好男生,接着高兴的陪着妹子了呀?                 

/************************************************

函数名字: IIC_Start(),IIC_Stop()

函数功能: 主机(单片机)发出起始信号,终止信号

函数入口: void

函数出口: void

起始过程: 当SCL为高电平期间,SDA一个下降沿  即为起始信号

终止过程: 当SCL为低电平期间,SDA一个上升沿  即为终止信号

*************************************************/

void IIC_Start(void)

{

    SDA=1;  NOP4();          

      SCL=1;   NOP4();

       SDA=0;  NOP4();

}

void IIC_Stop(void)

{

       SDA=0; NOP4();

       SCL=1; NOP4();

       SDA=0; NOP4();

}  

特别提醒

1,主机才会发出起始和终止信号,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。

     2,主机输出起始信号后,IIC总线处于被占用状态,SDA,SCL都将被置于低电平

   主机输出终止信号后,IIC总线处于空闲状态,SDA,SCL都将被置于高电平

 

10.3) 数据传送格式

(1)字节传送与应答

    4.jpg

                                                     图4  数据传送格式与应答

           每一个字节必须是8位传送。数据传送时,从最高位(MSB)开始传送,每一字节后面都必须跟随一位应答位(即一帧共有9位)。

 

遇到以下特别情况处理:

     1,从机由于某种原因不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。

     2,主机接收从机数据的最后一字节之前的每一字节均需要向从机发送应答,当主机接收到从机数据的最后一字节时,它要向从机发出一个“非应答”信号以便从机结束传送,从机随后释放SDA线,以便允许主机产生终止信号。

 

(2)数据帧格式

    IIC总线上传送的数据信号,包括地址,数据,应答信号等。

    在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),用“0”表示主机发送数据(W),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。

 

(3)数据传送的3种组合方式

a、主机向从机发送数据,数据传送方向在整个传送过程中不变,先发送从机地址(器件地址),接着发送数据(或命令字节)

5.jpg

   b、主机在第一个字节后,立即由从机读数据

6.jpg

c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好相反,主机每读取一字节发送 应答信号,当读取到最后一字节后,主机发送非应答信号

  7.jpg

  说明:1,方框加粗线表可以重复(可以是多字节及相应的应答位)

     2,标有底色的部分表主机发送,无底色表从机发送

     3,0,1分别表写(W),读(R)

     4,S,P分别表起始(Start)/停止(Stop)信号

     5,A表应答(低电平),A(__)b表示非应答。

 

    10.4)简介AT24C02使用及程序分析

         8.jpg

                 图5  24C02芯片管脚图

1)  A0,A1,A2为 器件地址选择

2)  SCL,SDA分别为串行时钟,串行数据线

3)  WP为:写保护(高电平时有效,0 → 读写正常;1 → 只能读,不能写)

     9.jpg

                图6  麦光实验板 24C02连接单片机原理图

简单说明:

        (1)WP直接接地,意味着不写保护;SCL、SDA分别接单片机P3.6、P1.3;由于AT24C02内部总线是漏极开路形式的,必须接上拉电阻(R2、R13)。

       (2)A2、A1、A0全部接地。24C02地址组成形式为:1010 A2A1A0 R/W(R/W由读写决定),既然A2、A1、A0 都接地了,因此该芯片的地址就是:1010 000 R/W。

       (3)剩下部分由于章节过长,若想了解更多,或许需要者,请与下面下载24C02数据手册,以及程序分析!

——————————————————————————-————————————

 

          IIC虽然能令单片机勾搭许许多多的器件,即使你学会IIC的秘籍,或许也学会了勾搭妹子的搭讪技巧,但别忘了你是工科男,专一是你的本性,脚踏实地是你的原则呀!

 

 

                                                                                               于2014年03月31日晚

PARTNER CONTENT

文章评论8条评论)

登录后参与讨论

shihlin_812989226 2014-4-15 16:09

用户421675 2014-4-5 13:16

谢谢分享!

用户567054 2014-4-4 12:21

讲的很深度啊!!

用户430155 2014-4-3 10:46

不错啊。。。。。

用户754253 2014-4-3 08:58

不错不错,这个必须顶顶!

用户403664 2014-4-2 17:03

赞。谢谢

644398774_263592779 2014-4-1 19:41

没有关系,早知道了,参赛不是目的,只要有时间充足都会尽量写下去的

用户403664 2014-4-1 10:19

抱歉啦,:博客大赛赛制跟去年不同。2014第一季:恭候技术类别为FPGA/CPLD、测试测量、虚拟仪器的文章!其他类型的文章不能参评呢~
相关推荐阅读
流年一束光 2014-05-20 13:32
有时候,我也不知道我是否还能坚持下去
       退学?真的要退学么? 这个问题伴随着我整个大学,从第一天开始就一直到现在!       一面是对未来,或许说是梦想的追求,渐渐清晰地看见,并学会接受现实,走在自己选择未来的电子路...
流年一束光 2014-04-07 00:55
【博客大赛】MCU之心路分享-----前言
        如果你想要得到从未有过的东西,那就去做你从未做过的事情!!!                                                          ...
流年一束光 2014-04-07 00:46
【博客大赛】MCU之心路分享--倾听你的改变--AD/DA转换(十一)
         用勇气来改变可以改变的事情,用胸怀来接受不可改变的事情,用智慧来分辨两者的不同                                                  ...
流年一束光 2014-03-20 00:34
【博客大赛】MCU之心路分享—你小小的心令我感动(九)
          如果说,学过单片机,却连单片机最小系统都没有焊接过或者搭建过!甚至连电烙铁都没有摸过,那是个多么巨大的笑话呀?          但现实不幸的是,这样的笑话,一直重演在许多...
流年一束光 2014-03-10 20:29
【博客大赛】MCU之心路分享—偷偷爱你--12864液晶(八)
       时隔3个月没有更新《MCU之心路分享》了,不知道我是否有幸,让胖螃蟹小编对我拍拍砖呢?嘿嘿…….这3个月,一直都没有离开过EDN,一直都潜伏着,这3个月中,见证,陪伴,小小地参与...
EE直播间
更多
我要评论
8
19
关闭 站长推荐上一条 /1 下一条