找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2273|回复: 0
打印 上一主题 下一主题
收起左侧

单片机IIC总线协议,AT24C08储存器

[复制链接]
跳转到指定楼层
楼主
ID:107189 发表于 2016-3-6 12:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
教师推荐书籍如下:
1.如果要学C语言基本知识请看
谭浩强写的《C程序设计》
教师推荐的单片机书籍为以下两本:
2. 新编MCS-51单片机应用设计
哈尔滨工业大学出版社   张毅刚
上书主要以汇编语言为主,对单片机内部结构介绍较详细,初学者可选择本书,在听讲本课程的同时,不但学会了C语言,而且通过查看本书还可了解汇编语言。
3.8051系列单片机C程序设计完全手册
人民邮电出版社   求是科技
上书主要讲了单片机的C语言编程及很多例子,大家可参考,是一本非常好的书。
有以上三本书基本就够了。






IIC总线(Inter Integrated Circuit Bus):Philips公司推出的串行总线标准(为二线制)。总线上扩展的外围器件及外设接口通过总线寻址,是具备总线仲裁和高低速设备同步等功能的高性能多主机总线。
I2C总线工作原理
串行数据线SDA和串行时钟线SCL构成的,可发送和接收数据。
[size=111%]n所有挂接在I2C总线上的器件和接口电路都应具有I2C总线接口,且所有的SDA/SCL同名端相连。总线上所有器件要依靠SDA发送的地址信号寻址,不需要片选线。
[size=111%]n特点:组成系统结构简单,占用空间小,芯片管脚的数量少,无需片选信号,价格低。允许若干兼容器件共享总线,应用比较广泛。总线的长度可7.6m,传送速度可达400kbps标准速率为100kbps。支持多个组件。支持多主控器件(某时刻只能有一个主控器件)。I2C总线上所有设备的SDA, SCL引脚必须外接上拉电阻。

典型的I2C总线系统结构,如图所示


I2C总线器件的寻址方式
由于所有器件都通过SCL和SDA连接在I2C总线上,因此,主器件在进行数据传输前需要通过寻址,选择需要通信的从器件。I2C总线上所有外围器件都需要有唯一的7位地址,由器件地址和引脚地址两部分组成。
器件地址是I2C器件固有的地址编码,器件出厂时就已经给定,不可更改。
引脚地址是由I2C总线外围器件的地址引脚(A2,A1,A0)决定,根据其在电路中接电源正极、接地或悬空的不同,形成不同的地址代码。
      
[size=244%]                                                                       I2C总线概述

?          I2C总线采用两线制,由数据线SDA和时钟线SCL构成。I2C总线对数据通信时序进行了严格的定义。


                             I2C总线数据操作

          在I2C总线上,数据是伴随着时钟脉冲,一位一位地传送的,数据位由高到低传送,每位数据占一个时钟脉冲。I2C总线上的在时钟线SCL高电平期间,数据线SDA的状态就表示要传送的数据,高电平为数据1,低电平为数据0。在数据传送时,SDA上数据的改变在时钟线为低电平时完成,而SCL为高电平时,SDA必须保持稳定,否则SDA上的变化会被当作起始或终止信号而致使数据传输停止。

2C总线在传送数据过程中共有三种类型信号:开始信号、停止信号和应答信号。

开始信号:SCL保持高电平的状态下,SDA出现下降沿。出现开始信号以后,总线被认为“忙”。

停止信号:SCL保持高电平的状态下,SDA出现上升沿。停止信号过后,总线被认为“空闲”。

应答信号:接收数据的器件在接收到8位数据后,向发送数据的器件发出特定的低电平脉冲,表示已收到数据。         

总线空闲:SCL和SDA都保持高电平。

总线忙:在数据传送开始以后,SCL为高电平的时候,SDA的数据必须保持稳定,只有当SCL为低电平的时候才允许SDA上的数据改变。

  • I2C协议起始信号时序


起始信号用于开始I2C总线通信。其中,起始信号是在时钟线SCL为高电平

期间,数据SDA上高电平向低电平变化的下降沿信号。起始信号出现以后,

才可以进行后续的I2C总线寻址或数据传输等



  • I2C协议终止信号时序

终止信号用于终止I2C总线通信。其中,终止信号是在时钟线SCL为高电平期间,数据线SDA上低电平到高电平变化的上升沿信号。终止信号一出现,所有I2C总线操作都结束,并释放总线控制权。终止信号的时序如下:



  • I2C协议应答信号时序


应答信号用于表明I2C总线数据传输的结束。 I2C总线数据传送时,一个字节数据传送完毕后都必须由主器件产生应答信号。主器件在第9个时钟位上释放数据总线SDA,使其处于高电平状态,此时从器件输出低电平拉低数据总线SDA为应答信号。应答信号的时序,如图所示。




                    I2C总线的传送格式
I2C总线的传送格式为主从式,对系统中的某一器件来说有四种工作方式:主发送方式、从发送方式、主接收方式、从接收方式。只讲主发送从接收(单片机发送 24C08接收)主器件产生开始信号以后,发送的第一个字节为控制字节。前七位为从器件的地址片选信号。最低位为数据传送方向位(高电平表示读从器件,低电平表示写从器件),然后发送一个选择从器件片内地址的字节,来决定开始读写数据的起始地址。接着再发送数据字节,可以是单字节数据,也可以是一组数据,由主器件来决定。从器件每接收到一个字节以后,都要返回一个应答信号(ASK=0)。主器件在应答时钟周期高电平期间释放SDA线,转由从器件控制,从器件在这个时钟周期的高电平期间必须拉低SDA线,并使之为稳定的低电平,作为有效的应答信号。
  • 控制字节
在起始条件之后,必须是器件的控制字节,其中,高四位为器件类型识别符(不同的芯片类型有不同的定义,E2PROM为1010),接着三位为片选,最低位为读写控制位,为“1”时为读操作,为“0”时为写操作。如下图所示。


  • 写操作

写操作分为字节写和页面写两种操作,对于页面写,根据芯片的一次装载的字节不同有所不同。页面写的地址、应答和数据传送的时序如下图所示。

  • 读操作

读操作有三种基本操作:当前地址读、随机读和顺序读。下图给出的是顺序读的时序图。应当注意的是,为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平,然后发出停止条件。


              
                    C语言的相关程序














分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表