IC总线协议及应用(已审)_第1页
IC总线协议及应用(已审)_第2页
IC总线协议及应用(已审)_第3页
IC总线协议及应用(已审)_第4页
IC总线协议及应用(已审)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、I2C总线协议及应用总线协议及应用 四川华迪信息技术有限公司四川华迪信息技术有限公司Version1.1Version1.12021-11-10Hwadee2Overviewo 课程介绍o 主题一o 主题二o 主题三o 主题四课程介绍课程介绍2021-11-10Hwadee4关于本次课程o 课程目标o 预备知识o 目标听众o 日程表o 词汇表2021-11-10Hwadee5课程目标o 了解串行E2PROM;o 明确I2C总线协议;o 掌握I2C总线编程技术。2021-11-10Hwadee6预备知识 o 了解MCS51系列单片机引脚和功能o 了解KEIL C51或ASM51汇编语言2021-

2、11-10Hwadee7目标听众o XXXXo XXXX2021-11-10Hwadee8日程表o 共计: 天o 详细安排课程介绍课程介绍 I2C总线及总线及I2C总线协议总线协议AT24CXX系列串行系列串行E2PROM介绍介绍I2C总线协议编程及总线协议编程及AT24CXX系列芯片编程系列芯片编程问题问题&反馈反馈Total: hours2021-11-10Hwadee9词汇表o 本讲义所用的词汇解释2021-11-10Hwadee10I2C总线介绍总线介绍I2C(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及

3、其外围设备。目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。 2021-11-10Hwadee11I2C总线特点总线特点 o I2C总线最主要的优点是其简单性和有效性。o 由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。o I2C总线的另一个优点是,它支持多主控(

4、multimastering), 其中任何能够进行发送和接收的设备都可以成为主控。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。 2021-11-10Hwadee12I2C总线工作原理总线工作原理 o I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于

5、它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。 2021-11-10Hwadee13I2C总线工作原理总线工作原理o I2C总线在传送数据过程中共有三种类型信号, 它们分别是:o 开始信号、开始信号、o 结束信号结束信号o 应答信号应答信号。 2021-11-10Hwadee14I2C总线协议 o I2C总线协议定义如下总线协议定义如下:o(1):只有在总线空闲时才允许启动数据传送o(2):在数据传送过程中

6、,当时钟线为高电平时,数据必须处于稳定状态,不允许有跳变.因为在时钟线为高电平时数据线上的任何变化将被看作总线的起始或停止信号o 起始信号起始信号:o 在时钟保持高电平期间,数据由高到低的跳变看作I2C总线的起始信号o 停止信号停止信号:o 在时钟保持高电平期间,数据由低到高的跳变看作I2C总线的停止信号o 应答信号应答信号:o I2C总线数据传送时,每成功地传送一个字节数据后,接收器都必须产生一个应答信号,应答的器件在第9个时钟周期时把SDA线拉低,表示其已收到一个8位数据o I2C总线器件作为从器件,接收完一个字节后响应一个应答信号o I2C总线器件作为主器件,发送完一个字节后等待一个应答

7、信号2021-11-10Hwadee15I2C总线起始/停止和应答时序2021-11-10Hwadee16I2C总线基本操作之控制字节 o 在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。o 控制字节配置 如下图 2021-11-10Hwadee17I2C总线基本操作之写操作写操作 o写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。o 对字节位小于2K位的EEPROM,页的大小为8个BYTE,其他为16个BYTE.2

8、021-11-10Hwadee18I2C总线基本操作之字节写字节写操作操作o 在字节写模式下,主器件发送起始命令和从器件类型地址信息(R/W置零)给从器件,在从器件产生应答信号后,主器件发送从器件的字节地址,主器件在收到从器件的另一个应答信号后,再发送数据到被寻址的存贮单元,从器件再次应答,并在主器件产生停止信号后开始内部数据的擦写,在内部擦写过程中,从器件不再应答主器件的任何请求2021-11-10Hwadee19I2C总线基本操作之页写页写操作操作o用页写根据不同的器件可一次写入不同字节的数据。页写操作的启动和字节写一样,不同在于传送了一字节数据后并不产生停止信号。主器件被允许发送P个额外

9、的字节。每发送一个字节数据后从器件产生一个应答位并将字节地址低位加1,高位保持不变。o 如果在发送停止信号之前主器件发送超过P+1个字节,地址计数器将自动翻转,先前写入的数据被覆盖。o 接收到P+1个字节数据和主器件发送的停止信号后,从器件启动内部写周期将数据写到数据区。所有接收的数据在一个写周期内写入从器件2021-11-10Hwadee20I2C总线基本操作之读操作读操作o 读操作的初始化方式和写操作一样,不同在于仅把R/W位置1.o 读操作有三种基本操作:立即地址立即地址读、选择读和连续读。读、选择读和连续读。2021-11-10Hwadee21I2C总线基本操作之立即地址读读o从器件的

10、地址计数器内容为最后操作字节的地址加1。亦就是说如果上次读/写的操作地址为N,则立即读的地址从N+1开始。如果N=E(E=从器件的最大地址)则计数器将翻转到0且继续输出数据。从器件接收到主器件的地址信号后,它首先发送一个应答信号,然后发送一个8位字节数据。主器件不需要发送一个应答信号,但要产生一个停止信号2021-11-10Hwadee22I2C总线基本操作之选择性读读o选择性读操作允许主器件对寄存器的任意字节进行读操作,主器件首先通过发送起始信号,从器件类型地址及它想读取的字节数据的地址进行一个伪写操作。在从器件应答之后,主器件重新发送起始信号和从器件类型地址,此时R/W位置1,从器件响应并

11、发送应答信号,然后输出一个8位字节数据,主器件不发送应答信号但产生一个停止信号2021-11-10Hwadee23I2C总线基本操作之连续读读o连续读操作可通过立即读或选择性读操作启动。在从器件发送完一个8位字节数据后,主器件产生一个应答信号来响应告之从器件主器件要求更多的数据,对应每个主机产生的应答信号从机将发送一个8位数据字节,主器件不发送应答信号而发送停止位时结束此操作。o从从器件输出的数据按顺序由N到N+1输出。读操作时地址计数器在整个地址内增加,这样整个寄存器区域可在一个读操作内全部读出。当读取的字节超过E时计数器将翻转到零并继续输出数据2021-11-10Hwadee24单片机通用

12、I/O端口作为I2C总线接口 o 目前,51系列的单片机应用很广,但是它们一般都没有I2C总线接口,限制了在这些系统中使用具有I2C总线接口的器件。但通过对I2C总线时序的分析知道可以用51单片机的两根I/O线来实现I2C总线的功能。I2C总线规定SCL线和SDA线是各设备对应输出状态相“与”的结果,任一设备都可以用输出低电平的方法延长SCL低电平时间,迫使高速设备进入等待状态,实现不同速度设备间的时钟同步。因此,即使时钟脉冲的高、低电平时间长短不一,也能实现数据的可靠传送,可以用软件控制I/O口做I2C接口。 2021-11-10Hwadee25通用I/O端口作为I2C总线接口示意图2021

13、-11-10Hwadee26AT24C01AT24C16串行E2PROM介绍2021-11-10Hwadee27CAT24WC01CAT24WC16管脚配置及描述2021-11-10Hwadee282021-11-10Hwadee292021-11-10Hwadee30CAT24WC01CAT24WC16单片机程序设计oI2CDelay(uint i) /*延时函数*/o o while(i!=0)o i-;o oI2C_Start() /*启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变*/o o SDA=1;o SCL=1;o I2CDelay(60);o SDA=0;o I

14、2CDelay(60);o SCL=0;o I2CDelay(60);o 2021-11-10Hwadee31CAT24WC01CAT24WC16单片机程序设计o I2C_Stop() /*终止I2C总线,当SCL为高电平时使SDA产生一个正跳变*/o o SDA=0;o SCL=1;o I2CDelay(60);o SDA=1;o I2CDelay(60);o SCL=0;o I2CDelay(60);o 2021-11-10Hwadee32CAT24WC01CAT24WC16单片机程序设计o bit Check_Acknowledge() /*发送完一个字节后检验设备的应答信号*/o o

15、bit Ack_Flag;o SDA=1;o SCL=1;o I2CDelay(30);o Ack_Flag=SDA;o I2CDelay(30);o SCL=0;o I2CDelay(60);o return Ack_Flag;o 2021-11-10Hwadee33CAT24WC01CAT24WC16单片机程序设计oSEND_0() /* SEND ACK */*发送发送0,在,在SCL为高电平时使为高电平时使SDA信号为低信号为低*/o SDA=0;o SCL=1;o I2CDelay(60);o SCL=0;o I2CDelay(60);o oSEND_1() /*发送发送1,在,在S

16、CL为高电平时使为高电平时使SDA信号为高信号为高*/o SDA=1;o SCL=1;o I2CDelay(60);o SCL=0;o I2CDelay(60);o 2021-11-10Hwadee34CAT24WC01CAT24WC16单片机程序设计o WriteI2CByte(uchar x) /*向向I2C总线写一个字节总线写一个字节*/o o uchar i;o for(i=0;i8;i+)o if(xi)&0 x80)o SEND_1();o elseo SEND_0();o 2021-11-10Hwadee35CAT24WC01CAT24WC16单片机程序设计o uchar

17、 ReadI2CByte() /*从I2C总线读一个字节*/o uchar x=0,i;obit Ack_Flag;o for(i=0;i8;i+)o o SDA=1; /*释放总线*/o SCL=1; /*接受数据*/o I2CDelay(10);o Ack_Flag=SDA;o I2CDelay(10);o SCL=0;o if(Ack_Flag)o o x=x1;o x=x|0 x01;o o elseo x=x1;o o return x;o 2021-11-10Hwadee36CAT24WC01CAT24WC16单片机程序设计o/*写一个字节的数据到指定的地址*/oWrite_One

18、_Byte(uchar addr,uchar thedata)oo bit acktemp=1;o I2C_Start();o WriteI2CByte(0 xa0);o acktemp=Check_Acknowledge();o WriteI2CByte(addr);/*address*/o acktemp=Check_Acknowledge();o WriteI2CByte(thedata);/*data*/o acktemp=Check_Acknowledge();o I2C_Stop();o2021-11-10Hwadee37CAT24WC01CAT24WC16单片机程序设计o/*写n

19、个字节的数据到指定地址开始的单元中*/oWrite_Num_Byte(uchar *buffer,uchar cnt,uchar addr)oo bit acktemp=1; uchar i;o I2C_Start();o WriteI2CByte(0 xa0);o acktemp=Check_Acknowledge();o WriteI2CByte(addr);/*address*/o acktemp=Check_Acknowledge();o for(i=0;icnt;i+)o o WriteI2CByte(bufferi);o if(!Check_Acknowledge() I2C_St

20、op(); o o I2C_Stop();o2021-11-10Hwadee38CAT24WC01CAT24WC16单片机程序设计ouchar Read_One_Byte(uchar addr) /*读某个单元的数据*/o bit acktemp=1;o char mydata;o /*read a byte from mem*/o I2C_Start();o WriteI2CByte(0 xa0);o acktemp=Check_Acknowledge();o WriteI2CByte(addr);/*address*/o acktemp=Check_Acknowledge();o I2C_

21、Start();o WriteI2CByte(0 xa1);o acktemp=Check_Acknowledge();o mydata=ReadI2CByte();o acktemp=Check_Acknowledge();o return mydata;o I2C_Stop();o2021-11-10Hwadee39CAT24WC01CAT24WC16单片机程序设计o/*读n个单元的数据*/ovoid Read_N_Bytes(uchar *buffer,uchar n,uchar addr)oo bit acktemp=1;o int i=0;o /*read 8 bytes from mem*/o I2C_Start();o Wri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论