版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单原及接片理口技术机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端口分别与显示部分(LC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精密不锈钢管购买合同
- 物业管理服务合同范例案例
- 物流理赔服务合同
- 宣传品采购合同样本集合
- 应季水果购销合同
- 法律咨询服务合同编写
- 房屋买卖居间合同样式
- 防震材料供需合同
- 商业美陈设计服务协议
- 防水工程保证书范文格式要求
- 2024年中考历史(辽宁卷)真题评析
- 厂房屋顶光伏分布式发电项目建议书
- 《中国传统建筑》课件-中国民居建筑
- 知道网课智慧《设计创新思维》测试答案
- 2024年第九届“鹏程杯”六年级语文邀请赛试卷(复赛)
- YBT 6181-2024《耐矿化物腐蚀高强度钢板》
- GB/T 44051-2024焊缝无损检测薄壁钢构件相控阵超声检测验收等级
- 北京中小学2024至2025学年度第一第二学期校历
- 完整加快发展新质生产力课件
- JTS-201-2011水运工程施工通则
- 2023-2024学年四川省绵阳市高二上册第四次月考化学试题(附解析)
评论
0/150
提交评论