单片机原理及接口技术 课件 第十章 IIC通信协议与典型电路应用_第1页
单片机原理及接口技术 课件 第十章 IIC通信协议与典型电路应用_第2页
单片机原理及接口技术 课件 第十章 IIC通信协议与典型电路应用_第3页
单片机原理及接口技术 课件 第十章 IIC通信协议与典型电路应用_第4页
单片机原理及接口技术 课件 第十章 IIC通信协议与典型电路应用_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

单原及接片理口技术机12第十章IIC通信协议与典型电路应用01IIC时序初步认识02IIC通信协议AT24C02芯片03AT24C02芯片与单片机通信的典型示例04利用PCF8574芯片扩展I/O端口PrincipleandinterfacetechnologyofMicrocomputer05习题IIC通信协议与典型电路应用单片机常用通信协议中,IIC通信协议是常用协议之一。该通信总线是由PHILIPS公司开发的两线式串行总线,常用于连接微处理器及其外围芯片。IIC总线的主要特点是接口方式简单,只需两条线可挂载多个参与通信的器件,即多机模式,并且任何一个器件都可以作为主机用来发布指令和数据。从原理上来讲,以前学过的UART属于异步通信,比如电脑发送给单片机,电脑只负责把数据通过TXD发送出来即可,接收数据是由单片机负责的事情。而IIC属于同步通信,在IIC通信总线中,SCL时钟总线负责收发时钟节拍,SDA数据总线负责传输数据。IIC的发送方和接收方都要以SCL这个时钟节拍为基准进行数据的发送和接收。从应用上来讲,串行UART通信多用于板间通信,比如单片机和电脑,这个设备和另外一个设备之间的通信。IIC多用于板内通信,比如单片机和板载芯片之间的通信。01IIC时序初步认识IIC时序概述IIC(inter-Integratedcircuit),两线式串行总线,用于MCU和外设间的通信。在硬件上,IIC总线由时钟总线SCL和数据总线SDA两条总线构成,以半双工方式实现MCU和外设之间数据传输,速度可达400kbps,连接到总线上的所有器件的时钟总线SCL都连到一起,所有数据总线SDA连到一起。IIC总线是开漏并联的结构,外部要添加上拉电阻。对于开漏电路外部加上拉电阻,就组成了线“与”的关系。总线上线“与”的关系意义是指,所有接入的器件该条总线保持高电平,这条线才是高电平,但是其中任何一个器件输出低电平,那这条线就会保持低电平,因此可以做到任何一个器件都可以拉低电平,这样也就说明任何一个器件都可以作为主机。绝大多数情况下我们都是用单片机来做主机,通过IIC总线挂载多个器件,其中每一个都像门牌一样有自己唯一的地址,在信息传输的过程中,通过这个地址就可以正常识别到属于自己的信息。如图10-1所示,挂载多个IIC从机的示意图。1.1IIC时序协议过去章节介绍UART串行通信的时候,说明了通信流程分为起始位、数据位、停止位这三部分,同理在IIC中也有起始信号、数据传输和停止信号的定义,如图10-2所示。1.2从图上可以看出来,IIC和UART时序流程类似,同时也有区别。UART每一个字节中,都有一个起始位、8个数据位、1位停止位。而IIC分为起始信号、传输信号、停止信号。其中传输信号部分,可以单次传输很多个字节,字节数是不受限制的,而每个字节的数据最后也跟一个应答位,通常用ACK表示,相当于UART的停止位。下面把IIC通信时序进行具体分析。之前我们已经学过了串行UART,大家心里有了传输的概念,因此学习IIC的过程以UART来作比较,有助于理解。在UART通信过程中,虽然用了TXD和RXD两根线,但是实际使用中,一条线就可以完成,两根线是把发送和接收分开而已,但是IIC每次通信,不管是发送还是接收,必须两根线都参与工作才能完成,为了更方便的看出来每一位的传输流程,下面把IIC的数据传输过程分离出来。1、数据有效性规定IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。如图10-3所示。2、起始和终止信号SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。如图10-4所示是IIC起始和终止信号示意图。起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。连接到IIC总线上的器件,若具有IIC总线的硬件接口,则很容易检测到起始和终止信号。接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。3、数据应答格式每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据,从机应答主机所需要的时钟仍是主机提供的,应答出现在每一次主机完成8个数据位传输后紧跟着的时钟周期,低电平0表示应答,1表示非应答,如图10-5所示。4、数据帧格式IIC总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。{这里小编在驱动MPU6050模块的时候,就犯过这样的错误,它写的MPU6050从机地址是0x68,因为发送从机地址的时候,要加一位读写方向位,因为刚开始应该是向这个MPU6050里写从机里某个寄存器的地址,所以应该是7位地址0x68(1101000)+二进制位0=11010000)也就是0xD0,表示要向该IIC设备里写东西,然后再紧接着写入IIC设备里的寄存器地址,而我直接写入了0x68,导致出错},每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。在总线的一次数据传输过程中,可以有以下几种组合方式:1、主机向从机发送数据,数据传送方向在整个传输过程中不发生改变。具体传输过程如图10-6所示。其中有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。A表示应答(低电平),A非表示非应答(高电平)。S表示起始信号,P表示终止信号。2、主机在第一个字节后,立即从从机读数据,传输数据格式如图10-7所示。在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相,反相的数据传输格式如图10-8所示。单片机模拟IIC时序信号代码51单片机I/O端口不具有IIC数据传输功能,因此我们采取通过软件对电平的高低操作来实现IIC数据传输。下面是起始信号检测、终止信号检测、应答信号、非应答信号、等待应答信号、接收一个字节和读取一个字节的基本代码指令。1.3IIC通信协议AT24C02芯片02AT24C02芯片概述2.1AT24C02是一个2K位串行CMOSEEPROM芯片,该芯片内部含有256个8位字节。有一个8字节页写入缓冲器。器件通过IIC总线接口进行操作,可工作在低电压低功耗模式下,常应用于工业或者商业场景中,封装形式一般为:PDIP、SOIC、MAP、SSOP,图10-9是PDIP封装形式。AT24C02芯片特性:1、可工作于低电压和低功耗模式下;2、两线串行接口,简便连接方式;3、双向数据可同时传输;4、高可靠性:一百万次读写操作,数据保存长达100年;5、满足工业级和高温高湿要求。AT24C02引脚分配和参数工作表:寻址引脚(A0、A1和A2):A0、A1和A2引脚用于多器件之间的寻址操作,将这些输入引脚上的电平与从器件地址中的相应位做比较,如果比较结果为“真”,则该器件被选中,地址寻址工作完成。在本章节讲述实验中,片选信号地址输入引脚A0、A1和A2被直接接到逻辑0(也就是接地)上,直接由单片机控制其应用,寻址功能并没有使用,但是如果有多个器件,该功能被正确使用即可达到寻址的目的和效果。数据引脚(SDA):串行数据引脚为双向引脚,用于把地址和数据输入/输出器件,该引脚为漏极开路电路,需要外接上拉电阻。AT24C02总线工作原理:IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。下面按照芯片使用逻辑将AT24C02起始和终止信号、数据传送信号的总线工作原理总结如下:起始和终止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。数据传送信号:每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。AT24C02芯片与单片机通信的典型示例03项目要求:利用单片机(示例型号AT89C51)的P1、P2和P3端口分别与按键部分(独立按键S),显示部分(LCD1602)和IIC协议存储芯片(AT24C02)连接,最终在LCD1602显示对按键计数的程序,在这个项目中,既能学习对AT24C02的存储、读取过程,又能熟悉P3端口的工作模式。项目仿真和电路图设计3.1通过Proteus绘制项目电路图,并且通过该软件能够制作PCB板的功能,实现电路的设计、仿真和实现,Proteus仿真电路图如图10-12所示。利用Proteus绘制基于AT24C02对按键计数项目有以下器件:LM016L:2行16列液晶(EN三个控制端口(共14线),工作电压为5V。无背光,可显示2行16列英文字符,有8位数据总线D0-D7);AT24C02:2K串行CMOSE2PROM芯片;BUTTON(S):独立按键;项目软件设计3.2根据本章主要内容是对2K串行CMOSE2PROM芯片使用的IIC通信协议进行详细讲解,而本程序中涉及到的定时计数器、LCD1602和串行数据传输等功能程序已经在前序章节介绍,所以在本次程序讲解过程中不详解,请主要关注的是如何利用单片机IO端口高低电平变化而模拟IIC通信协议传输的效果。实验完成需要补充的是,51单片机内部是不具备IIC硬件模块的,所有51单片机都是通过对IO端口高低电平变化的控制模拟IIC通讯协议。当然,使用IO口高低电平变换模拟IIC,更有利于彻底理解透彻IIC通信的实质。今后,如果使用到内部自带IIC模块的单片机(例如STM32),学习IIC通讯协议会更轻松,使用内部的硬件模块,可以提高程序的执行效率。利用PCF8574芯片扩展I/O端口04PCF8574芯片概述4.1PCF8574是CMOS电路。它通过两条双向总线(IIC)可使51单片机实现I/O口扩展。该器件包含一个8位准双向口和一个IIC总线接口。PCF8574电流消耗很低,且I/O口输出锁存具有大电流驱动能力,可直接驱动LED。它还带有一条中断接线(INT)可与MCU的中断逻辑相连。通过INT发送中断信号,远端I/O口不必经过IIC总线通信就可通知MCU是否有数据从端口输入。这意味着PCF8574可以作为一个单被控器。PCF8574芯片具有以下特性:操作电压2.5-6.0V;低备用电流(≤10μA);IIC并行口扩展电路开漏中断输出IIC总线实现8位远程I/O口与大多数MCU兼容输出锁存具有大电流驱动能力,可直接驱动LED通过3个硬件地址引脚可寻址8个器件(PCF8574A可多达16个)DIP16,SO16或SSOP20形式封装PCF8574芯片封装格式如图10-13所示。利用PCF8574芯片实现驱动LCD项目4.2液晶显示一般用到4根或者是8根的数据线,这样的方式会占用较多的I/O口,影响51单片机的使用。PCF

温馨提示

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

评论

0/150

提交评论