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

下载本文档

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

文档简介

单原及接片理口技术机12第九章

SPI通信协议与典型电路应用01BCD码02SPI(串行外设接口)通信协议03使用SPI通信协议的应用芯片DS130204DS1302与单片机通信的典型示例PrincipleandinterfacetechnologyofMicrocomputer01习题 SPI通信协议与典型电路应用在前面的课程中我们已经了解到了不少关于时钟的概念,比如我们用的单片机的主时钟是11.0592M(或者12M),时钟本质上都是一个某一频率的方波信号。那么除了这些在前面新学到的时钟概念外,还有一个我们早已熟悉的不能再熟悉的时钟概念——“年-月-日时:分:秒”,就是我们的钟表和日历给出的时间,在单片机系统里我们把它称作实时时钟,以区别于前面提到的几种方波时钟信号。在本章节,我们将学习实时时钟的应用,除此之外,本章还会接触和学习到C语言的结构体,它也是C语言的精华部分,在以后使用到的嵌入式程序设计过程中,结构体使用几率更高,我们通过本章先来了解它的基础,后面再逐渐达到熟练、灵活运用它。01BCD码在日常生产生活中用的最多的数字是十进制数字,而单片机系统的所有数据本质上都是二进制的,如何在十进制和二进制之间建立简单而快速的转换,使用BCD码转换实现这个目的。BCD码的概念BCD码也称二进码十进数,BCD码可分为有权码和无权码两类。其中,常见的有权BCD码有8421码、2421码、5421码,无权BCD码有余3码、余3循环码、格雷码。8421BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。5421BCD码和2421BCD码同为有权码,它们从高位到低位的权值分别为5、4、2、1和2、4、2、1。余3码是由8421码加3后形成的,是一种“对9的自补码”。余3循环码是一种变权码,每一位的在不同代码中并不代表固定的数值,主要特点是相邻的两个代码之间仅有一位的状态不同。格雷码(也称循环码)是由贝尔实验室的FrankGray在1940年提出的,用于PCM方法传送信号时防止出错。格雷码是一个数列集合,它是无权码,它的两个相邻代码之间仅有一位取值不同。余3循环码是取4位格雷码中的十个代码组成的,它同样具相邻性的特点。1.1BCD码的分类1、8421码8421BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。1.22、5421和2421码5421BCD码和2421BCD码为有权BCD码,它们从高位到低位的权值分别为5、4、2、1和2、4、2、1。这两种有权BCD码中,有的十进制数码存在两种加权方法,例如,5421BCD码中的数码5,既可以用1000表示,也可以用0101表示;2421BCD码中的数码6,既可以用1100表示,也可以用0110表示。3、余3码余3码是8421BCD码的每个码组加3(0011)形成的。常用于BCD码的运算电路中。4、Gray码Gray码(格雷码)也称循环码,在一组数的编码中,若任意两个相邻数的代码只有一位二进制数不同[2]。Gray码的编码方案有多种,典型的Gray码如下表所示。从表中看出,这种代码除了具有单位距离码的特点外,还有一个特点就是具有反射特性,即按表中所示的对称轴为界,除最高位互补反射外,其余低位数沿对称轴镜像对称。利用这一反射特性可以方便地构成位数不同的Gray码。常用BCD编码1.3最常用的BCD编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在称之为“8421码”(日常所说的BCD码大都是指8421BCD码形式)。除此以外,对应不同需求,还有不同的编码方法,以适应不同的需求,常见的BCD示例码如表9-1所示。SPI(串行外设接口)通信协议02SPI(串行外设接口)介绍2.1SPI是英语SerialPeripheralInterface的缩写,顾名思义就是串行外设接口。SPI是一种高速的、全双工、同步通信总线,标准的SPI也仅仅使用4个引脚,常用于单片机和EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。SPI通信原理比I2C要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准的SPI是4根线,分别是SSEL(片选,也写为SCS)、SCLK(时钟,也写为SCK)、MOSI(主机输出从机输入MasterOutput/SlaveInput)和MISO(主机输入从机输出MasterInput/SlaveOutput)。SSEL:从设备片选使能信号。如果从设备是低电平使能的话,当拉低这个引脚后,从设备就会被选中,主机和这个被选中的从机进行通信。SCLK:时钟信号,由主机产生,和I2C通信的SCL有点类似。MOSI:主机给从机发送指令或者数据的通道。MISO:主机读取从机的状态或者数据的通道。产生时钟信号的器件称为主机。主机和从机之间传输的数据与主机产生的时钟同步。同I2C接口相比,SPI器件支持更高的时钟频率。用户应查阅产品数据手册以了解SPI接口的时钟频率规格。SPI接口只能有一个主机,但可以有一个或多个从机。图9-1显示了主机和单从机之间的SPI连接设置,图9-2显示了单主机与多从机的SPI连接设置。来自主机的片选信号用于选择从机。这是一个低电平有效信号,拉高时从机与SPI总线断开连接。当使用多个从机时,主机需要为每个从机提供单独的片选信号。SPI(串行外设接口)数据传输2.2同步通信的一个特点就是所有数据的变化和采样都是伴随着时钟沿进行的,也就是说数据总是在时钟的边沿附近变化或被采样。而一个时钟周期必定包含了一个上升沿和一个下降沿,这是周期的定义所决定的,只是这两个沿的先后并无规定。又因为数据从产生的时刻到它的稳定是需要一定时间的,那么,如果主机在上升沿输出数据到MOSI上,从机就只能在下降沿去采样这个数据了。反之如果一方在下降沿输出数据,那么另一方就必须在上升沿采样这个数据。CPHA=1,就表示数据的输出是在一个时钟周期的第一个沿上,至于这个沿是上升沿还是下降沿,这要视CPOL的值而定,CPOL=1那就是下降沿,反之就是上升沿。那么数据的采样自然就是在第二个沿上了。CPHA=0,就表示数据的采样是在一个时钟周期的第一个沿上,同样它是什么沿由CPOL决定。那么数据的输出自然就在第二个沿上了。仔细想一下,这里会有一个问题:就是当一帧数据开始传输第一个bit时,在第一个时钟沿上就采样该数据了,那么它是在什么时候输出来的呢?有两种情况:一是SSEL使能的边沿,二是上一帧数据的最后一个时钟沿,有时两种情况还会同时生效。开始SPI(串行外设接口)数据传输之前,主机必须发送时钟信号,并且能够通过CS信号选择从机,片选信号一般是低电平有效信号。因此,主机必须在该信号上发送逻辑0选择从机。SPI是全双工接口,主机和从机可以分别通过MOSI和MISO线路同时发送和接收数据。在通信期间,数据的发送(串行数据移出到MOSI/SDO总线上)和接收(采样或读入MISO/SDI总线上)可以同时进行,互不干扰和影响。SPI通信协议也允许用户灵活选择时钟的上升沿和下降沿来采样或者移位数据。SPI通信时序分析图2.3大家看图9-3所示,当数据未发送时以及发送完毕后,SCK都是高电平,因此CPOL=1。可以看出,在SCK第一个沿的时候,MOSI和MISO会发生变化,同时SCK第二个沿的时候,数据是稳定的,此刻采样数据是合适的,也就是上升沿即一个时钟周期的后沿锁存读取数据,即CPHA=1。注意最后最隐蔽的SSEL片选,这个引脚通常用来决定是哪个从机和主机进行通信。剩余的三种模式,这里通过图形展示出来,简化起见把MOSI和MISO合在一起了,大家仔细对照看看研究一下,把所有的理论过程都弄清楚,有利于你对SPI通信的深刻理解,如图9-4所示。我们以CPOL=1/CPHA=1为例,把时序图画出来给大家看一下,如图9-3所示。使用SPI通信协议的应用芯片DS130203DS1302是个实时时钟芯片,我们可以用单片机写入时间或者读取当前的时间数据,下面通过阅读这个芯片的数据手册来学习和掌握这个器件。DS1302芯片描述3.1DS1302是DALLAS(达拉斯)公司推出的一款涓流充电时钟芯片,2001年DALLAS被MAXIM(美信)收购,因此我们看到的DS1302的数据手册既有DALLAS的标志,又有MAXIM的标志。DS1302包含一个实时时钟/日历和31字节的静态RAM,通过简单的串行接口与微处理器通讯,这个实时时钟/日历提供年月日,时分秒信息。对于少于31天的月份月末会自动调整,还有闰年校正.由于有一个AM/PM指示器,时钟可以工作在12小时制或者24小时制。最关键的是,使用SPI通信协议简化了DS1302与单片机的接口连接过程,与时钟/RAM通讯只需要三根线:CE(片选线)、I/O(数据线)和SCLK(时钟线)。DS1302被设计工作在非常低的功率控制下还能继续完成工作,例如在低于1μW时还能保持数据和时钟信息。相比较上一代DS1202芯片DS1302还具有双管脚主电源和备用电源,可编程涓流充电器VCC1,并附加七个字节的暂存器。此外,DS1302芯片还具有以下特性:1、DS1302是一个实时时钟芯片,可以提供秒、分、小时、日期、月、年等信息,并且还有软件自动调整的能力,可以通过配置AM/PM来决定采用24小时格式还是12小时格式。2、串行I/O通信方式,相对并行来说比较节省IO口的使用。3、DS1302的工作电压比较宽,在2.0~5.5V的范围内都可以正常工作。4、DS1302这种时钟芯片功耗一般都很低,它在工作电压2.0V的时候,工作电流小于300nA。5、当供电电压是5V的时候,兼容标准的TTL电平标准,这里的意思是,可以完美的和单片机进行通信。6、由于DS1302是DS1202的升级版本,所以所有的功能都兼容DS1202。此外DS1302有两个电源输入,一个是主电源,另外一个是备用电源,比如可以用电池或者大电容,这样做是为了在系统掉电的情况下,我们的时钟还会继续走。如果使用的是充电电池,还可以在正常工作时,设置充电功能,给我们的备用电池进行充电。DS1302引脚封装3.2DS1302共有8个引脚,有两种封装形式,这里主要以DIP-8封装为例,芯片宽度(不含引脚)是300mil,如图9-5所示。所谓的DIP(DualInlinePackage)封装,就是双列直插式封装技术,就如同我们开发板上的STC89C52单片机,就是个典型的DIP封装,当然这个STC89C52还有其它的封装样式,为了方便学习使用,我们采用的是DIP封装。DS1302一共有8个引脚,下边要根据引脚分布图和典型电路图来介绍一下每个引脚的功能:1脚VCC2是主电源正极的引脚,2脚X1和3脚X2是晶振输入和输出引脚,4脚GND是负极,5脚CE是使能引脚,接单片机的IO口,6脚I/O是数据传输引脚,接单片机的IO口,7脚SCLK是通信时钟引脚,接单片机的IO口,8脚VCC1是备用电源引脚。考虑到KST-51开发板是一套以学习为目的的板子,加上备用电池对航空运输和携带不方便,所以8脚没有接备用电池,而是接了一个10uF的电容,这个电容就相当于一个电量很小的电池,经过试验测量得出其可以在系统掉电后仍维持DS1302运行1分钟左右,如果大家想运行时间再长,可以加大电容的容量或者换成备用电池,如果掉电后不需要它再维持运行,也可以干脆悬空,如图9-6和图9-7所示。我们把8个引脚功能分别介绍,如表9-2所示。DS1302电路的一个重点就是晶振电路,它所使用的晶振是一个32.768k的晶振,晶振外部也不需要额外添加其它的电容或者电阻了。时钟的精度,首先取决于晶振的精度以及晶振的引脚负载电容。如果晶振不准或者负载电容过大或过小,都会导致时钟误差过大。在这一切都搞定后,最终一个考虑因素是晶振的温漂。随着温度的变化,晶振的精度也会发生变化,因此,在实际的系统中,其中一种方法就是经常校对。DS1302典型电路3.3DS1302与单片机的连接也仅需要3条线:CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2为备用电源,外接32.768kHz晶振,为芯片提供计时脉冲,图9-8是DS1302的典型应用示意图。如何与单片机连接和互相通信是DS1302芯片应用的重点,如图9-9是DS1302与单片机连接示意图。DS1302寄存器介绍3.4DS1302的一条指令一个字节共8位,其中第7位(即最高位)固定为1,这一位如果是0的话,那写进去也是无效的。第6位是选择RAM还是CLOCK的,本节主要讲CLOCK时钟的使用,它的RAM功能不用,所以如果选择CLOCK功能,第6位是0,如果要用RAM,那第6位就是1。从第5到第1位,决定了寄存器的5位地址,而第0位是读写位,如果要写,这一位就是0,如果要读,这一位就是1。指令字节直观位分配如图9-10所示。DS1302时钟的寄存器,其中8个和时钟有关的,5位地址分别是0b00000~0b00111,还有一个寄存器的地址是01000,这是涓流充电所用的寄存器,本节不讲。在DS1302的数据手册里的地址,直接把第7位、第6位和第0位值给出来了,所以指令就成了0x80、0x81那些了,最低位是1,那么表示读,最低位是0表示写,如图9-11所示是DS1302时钟寄存器。寄存器0:最高位CH是一个时钟停止标志位。如果时钟电路有备用电源,上电后,我们要先检测一下这一位,如果这一位是0,那说明时钟芯片在系统掉电后,由于备用电源的供给,时钟是持续正常运行的;如果这一位是1,那么说明时钟芯片在系统掉电后,时钟部分不工作了。如果Vcc1悬空或者是电池没电了,当我们下次重新上电时,读取这一位,那这一位就是1,我们可以通过这一位判断时钟在单片机系统掉电后是否还正常运行。剩下的7位高3位是秒的十位,低4位是秒的个位,这里再提请注意一次,DS1302内部是BCD码,而秒的十位最大是5,所以3个二进制位就够了。寄存器1:最高位未使用,剩下的7位中高3位是分钟的十位,低4位是分钟的个位。寄存器2:bit7是1的话代表是12小时制,0代表是24小时制;bit6固定是0,bit5在12小时制下0代表的是上午,1代表的是下午,在24小时制下和bit4一起代表了小时的十位,低4位代表的是小时的个位。寄存器3:高2位固定是0,bit5和bit4是日期的十位,低4位是日期的个位。寄存器4:高3位固定是0,bit4是月的十位,低4位是月的个位。寄存器5:高5位固定是0,低3位代表了星期。寄存器6:高4位代表了年的十位,低4位代表了年的个位。请特别注意,这里的00~99指的是2000年~2099年。寄存器7:最高位一个写保护位,如果这一位是1,那么是禁止给任何其它寄存器或者那31个字节的RAM写数据的。因此在写数据之前,这一位必须先写成0。DS1302通信时序介绍3.5DS1302我们前边也有提起过,是三根线,分别是CE、I/O和SCLK,其中CE是使能线,SCLK是时钟线,I/O是数据线,看似与SPI通信协议接口一样。事实上,DS1302的通信是SPI的变异种类,它用了SPI的通信时序,但是通信的时候没有完全按照SPI的规则来,下面我们一点点解剖DS1302的变异SPI通信方式。先看一下单字节写入操作,如图9-12所示。然后我们再对比一下CPOL=0/CPHA=0情况下的SPI的操作时序,如图9-13。所示。图9-12和图9-13的通信时序,其中CE和SSEL的使能控制是反的,对于通信写数据,都是在SCK的上升沿,从机进行采样,下降沿的时候,主机发送数据。DS1302的时序里,单片机要预先写一个字节指令,指明要写入的寄存器的地址以及后续的操作是写操作,然后再写入一个字节的数据。对于单字节读操作,我就不做对比了,把DS1302的时序图贴出来,大家自己看一下即可,如图9-14所示。读操作有两处需要特别注意的地方。第一,DS1302的时序图上的箭头都是针对DS1302来说的,因此读操作的时候,先写第一个字节指令,上升沿的时候DS1302来锁存数据,下降沿我们用单片机发送数据。到了第二个字数据,由于我们这个时序过程相当于CPOL=0/CPHA=0,前沿发送数据,后沿读取数据,第二个字节是DS1302下降沿输出数据,我们的单片机上升沿来读取,因此箭头从DS1302角度来说,出现在了下降沿。第二个需要注意的地方就是,我们的单片机没有标准的SPI接口,和I2C一样需要用IO口来模拟通信过程。在读DS1302的时候,理论上SPI是上升沿读取,但是程序是用IO口模拟的,所以数据的读取和时钟沿的变化不可能同时了,必然就有一个先后顺序。通过实验发现,如果先读取IO线上的数据,再拉高SCLK产生上升沿,那么读到的数据一定是正确的,而颠倒顺序后数据就有可能出错。这个问题产生的原因还是在于DS1302的通信协议与标准SPI协议存在的差异造成的,如果是标准SPI的数据线,数据会一直保持到下一个周期的下降沿才会变化,所以读取数据和上升沿的先后顺序就无所谓了;但DS1302的IO线会在时钟上升沿后被DS1302释放,也就是撤销强推挽输出变为弱下拉状态,而此时在51单片机引脚内部上拉的作用下,IO线上的实际电平会慢慢上升,从而导致在上升沿产生后再读取IO数据的话就可能会出错。因此这里的程序我们按照先读取IO数据,再拉高SCLK产生上升沿的顺序。DS1302与单片机通信的典型示例04项目要求:利用单片机(示例型号AT89C51)的P0、P1和P2端口分别与显示部分(LCD1602),按键(四个独立KEY)和SPI协议时钟芯片(DS1302)连接,最终在LCD1602显示的万年历程序,在设置日期的时候,程序基于蔡勒(Zeller)公式会自动计算星期,包含了BCD码的处理转换。蔡勒公式介绍4.1蔡勒公式是一种计算任何一日属一星期中哪一日的算法,由蔡勒(JuliusChristianJohannesZeller)推算出,公式如图9-15所示。公式中的符号含义如下:w:星期(计算所得的数值对应的星期:0-星期日;1-星期一;2-星期二;3-星期三;4-星期四;5-星期五;6-星期六),c:年份前两位数,y:年份后两位数,m:月(m的取值范围为3至14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算),d:日,[]:称作高斯符号,代表向下取整,即,取不大于原数的最大整数,mod:同余(这里代表括号里的答案除以7后的余数)。项目仿真和电路图设计4.2通过Proteus绘制项目电路图,并且通过该软件能够制作PCB板的功能,实现电路的设计、仿真和实现,Proteus仿真电路图如图9-16所示。利用Proteus绘制基于DS1302的万年历仿真电路图有以下器件:LM016L:2行16列液晶(EN三个控制端口(共14线),工作电压为5V。无背光,可显示2行16列英文字符,有8位数据总线D0-D7);RESPACK:排阻;DS1302:涓流充电时钟芯片;POT:滑线变阻器;BUTTON:独立按键;CRYSTAL:晶体振荡器;RES:电阻。1、理解BCD码的原理。2、理解SPI的通信原理,SPI通信过程的四种模式配置。3、能够结合教程阅读DS1302的英文数据手册,学会DS1302的读写操作。4、理解复合数据类型的结构和用法。5、能够独立完成带按键功能的万年历程序。习题05单原及接片理口技术机39第十章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

温馨提示

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

评论

0/150

提交评论