第章SPI与模拟量转换.doc
《第章SPI与模拟量转换.doc》由会员分享,可在线阅读,更多相关《第章SPI与模拟量转换.doc(33页珍藏版)》请在咨信网上搜索。
1、个人收集整理 勿做商业用途第10章 SPI与模拟量转换SPI(串行外设接口)是Freescale公司推出的一种同步串行通信接口,用于MCU和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。目前,各半导体公司推出了大量的带有SPI接口的芯片,如RAM、EEPROM、Flash ROM、A/D、D/A转换、LED/LCD驱动、I/O接口、实时时钟等。本章首先讨论SPI及编程方法。计算机只能处理数字量,对于温度、压力、速度和流量等模拟量必须经过A/D转换才能为计算机所处理。计算机要干预对外部需要模拟量进行控制的装置,需要通过D/A转换.GP32内部有8路8位A/D转换,没有D/A转换。本章给出
2、GP32内部A/D转换的编程方法。本章随后给出利用MCU的SPI进行12位A/D转换芯片TLC2543及10位D/A芯片的扩充,并给出具体实例。所给出A/D实例,包含的基本的滤波方法,可以直接应用于实际工程。对常见传感器的简介,有助于初学者对A/D转换的理解与实践.作为知识积累,还对常用传感器进行了介绍.10.1 SPI的基本工作原理10.1.1 SPI概述串行外设接口(SPI,Serial Peripheral Interfac)是Freescale公司推出的一种同步串行通信接口,用于微处理器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。目前,各半导体公司推出了大量的带有SPI接口
3、的具有各种各样功能的芯片,如RAM、EEPROM、Flash ROM、A/D转换器、D/A 转换器、LED/LCD显示驱动器、I/O 接口芯片、实时时钟、UART收发器等,为用户的外围扩展提供了极其灵活而价廉的选择.Freescale 08系列MCU中含有串行外设接口模块,它是MCU与外界联系的重要方式之一。SPI特性描述如下:全双工。主、从工作方式。发送和接收的数据寄存器相互独立从而实现双缓存操作。主机可以设定4种工作频率(最大可达总线频率的二分之一)。从机最大工作频率等于总线频率。发送结束、接收结束、工作方式错误和溢出错误四种中断标志。一个主控MCU和几个从控MCU相互连接。几个MCU相互
4、连接构成一个多主机系统。一个主控MCU和一个或多个从属外设相互连接。SPI系统最常见的应用是一个主控MCU做主机,主机发起并控制数据的传送和流向,只有在主机发出通知后,从设备才能从主机读取数据或向主机发送数据.10。1。2 SPI的数据传输利用SPI进行MCU之间的数据传输时,有个主机(master)和从机(slave)的概念,主机的程序控制着数据传输,从机的程序必须配合主机工作,完成传输过程。在MCU扩展外设结构中,仍使用主机从机(masterslave)概念,那么MCU必须工作于主机方式,外设处于从机方式。图10-1是SPI的主从连接示意图,参与数据传输的有三个引脚,它们是:时钟引脚SPS
5、CK、主入从出引脚MISO、主出从入引脚MOSI。下面一节将对它们作详细的说明,这里仅说明其数据传输过程:图中的移位寄存器为8位,所以每一工作过程相互传送8位数据,工作从主机CPU发出启动传输信号开始,此时要传送的数据装入8位移位寄存器,同时产生8个时钟信号从SPSCK引脚依次送出,在SPSCK信号的控制下,主机中8位移位寄存器中的数据依次从MOSI引脚送出,到从机的MOSI引脚送入它的8位移位寄存器,在此过程中,从机的数据也通过MISO引脚到主机中。所以,我们称之为全双工主从连接(FullDuplex Master-Slave Connections)。其数据的传输格式是高位(MSB)在前,
6、低位(LSB)在后.图101是一个主MCU和一个从MCU的连接,也可以一个主MCU与多个从MCU进行连接形成一个主机多个从机的系统;还可以多个MCU互联构成多主机系统;另外也可以一个MCU挂接多个从属外设。但是,SPI系统最常见的应用是利用一个MCU作为主机,其它处于从机地位,这样,主机的程序启动并控制数据的传送和流向,在主机的控制下,从属设备从主机读取数据或向主机发送数据。MISO MISO主MCUMOSI MOSI波特率发生器从MCUSPSCK SPSCK移位寄存器移位寄存器SSSSVDDR图101 SPI全双工主从连接至于传送速度、何时数据移入移出、一次移动完成是否中断、如何定义主机从机
7、等问题,可通过对寄存器编程来解决,随后会阐述这些问题。10.1。3 SPI模块的时序SPI是在同步信号SPSCK的控制下完成数据的传输,根据控制位CPHA和CPOL的不同,数据线和时钟线产生4种可能的时序。图10-2、图103、图10-4和图105给出了数据线与SPSCK之间的关系。从时序图上可以看出,CPOL为1或0时,时钟信号SPSCK的出现正好是反相关系,CPHA用来选择两种不同的定时协议中的一种,以对允许SPI系统与各种同步外设通信。主机和从机必须使用同样的时序模式,才能正常通信.从图102可以看出,当CPHA=0,CPOL=0时,MISO引脚上的数据在第一个SPSCK沿跳变之前已经上
8、线了,而为了保证正确传输,MOSI引脚的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,首先将数据上线,然后在同步时钟信号的上升沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束.图103是当CPHA=0,CPOL=1时的数据线和时钟线的时序,与图10-2唯一不同之处只是在同步时钟信号的下降沿时捕捉位信号,上升沿时下一位数据上线.SPSCK周期信号捕捉点图102 CPHA=0,CPOL=0时的数据/时钟时序图SPSCK周期信号捕捉图10-3 CPHA=0,CPOL=1时的数据/时钟时序图从图10
9、-4可以看出,在CPHA=1,CPOL=0时,MISO引脚和MOSI引脚上的数据的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,在同步时钟信号周期开始时(上升沿)数据上线,然后在同步时钟信号的下降沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(上升沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。图105是当CPHA=1,CPOL=1时的数据线和时钟线的时序,与图104唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号,下降沿时下一位数据上线。SPSCK周期信号捕捉图104 CPHA=1,CPOL=0时的数据/时钟时序图SPSCK周期信号捕捉
10、点图10-5 CPHA=1,CPOL=1时的数据/时钟时序图10.2 GP32的SPI模块编程基础10。2。1 SPI模块的引脚SPI模块通常引出4个引脚,分别为:、MISO、MOSI、SPSCK,下面分别介绍它们的含义。1从机选择引脚(Slave Select)若一个MCU的SPI工作于主机方式,置为高电平。若一个MCU的SPI工作于从机方式时,当=0时,表示主机选中了该从机,反之则未选中该从机。对于单主单从(One master and one slave) 系统,可以采用图101的接法.对于一个主MCU带多个从属MCU的系统,主机MCU的接高电平,每一个从机MCU的接主机的I/O输出线,
11、由主机控制其电平高低,以便主机选中该从机。2主出从入引脚MOSI(Master Out/Slave In)主出从入引脚MOSI,是主机输出、从机输入数据线。对于MCU被设置为主机方式,主机送向从机的数据从该引脚输出.对于MCU被设置为从机方式,来自主机的数据从该引脚输入.3主入从出引脚MISO(Master In/Slave Out)从机的数据从该引脚输入主机,对于MCU被设置为从机方式,送向主机的数据从该引脚输出。4SPI串行时钟引脚SPSCK(SPI Serial Clock)SPI串行时钟引脚SPSCK用于控制主机与从机之间的数据传输.串行时钟信号只能由主机发出,经主机的SPSCK引脚输
12、出给从机的SPSCK引脚,控制整个数据传输过程.在主机启动一次传送过程中,自动产生8个时钟周期信号从SPSCK引脚输出,SPSCK信号的一个跳变进行一位数据移位过程。10。2。2 SPI模块的寄存器从程序员角度看,SPI模块有3个8位寄存器,只要理解和掌握了这3个寄存器的用法,就可以进行SPI编程.下面分别阐述这些寄存器的功能及用法。1SPI数据寄存器(SPI Data Register,SPDR) SPI数据寄存器SPDR的地址是:0012。写入时,为要发送的8位数据,记为:T7T0;读出时,为接收的8位数据,记为:R7R0。它们的特点与SCI数据寄存器相似。在实际内部结构上,SPDR由两个
13、独立的数据寄存器组成,即只能写入的发送数据寄存器和只能读出的接收数据寄存器,它们共用一个地址。2SPI控制寄存器(SPI Control Register,SPCR) SPI控制寄存器一般情况下只能复位时写一次,以后不再对其写入,不再更改对SPI的设置。SPCR的地址:0010,定义为:数据位D7D6D5D4D3D2D1D0定义SPRIEDMASSPMSTRCPOLCPHASPWOMSPESPTIE复位00101000D7 - SPRIE位:SPI接收中断允许位(SPI Receiver Interrupt Enable Bit),SPRIE=1,允许SPI接收中断;SPRIE=0,不允许SP
14、I接收中断。当收到一个字节的数据时,状态及控制寄存器SPSCR(下面将介绍该寄存器)的SPRF位(SPI接收器满标志位)被置1,此时,若SPCR寄存器的SPRIE=1,则产生SPI中断。通常情况下SPRIE=0,即收到数据不产生中断.D6 - DMAS位:DMA选择位(DMA Select Bit).目前没用,为0。D5 - SPMSTR位:SPI主机位(SPI Master Bit),该位决定SPI工作方式,SPMSTR =1,主机方式;SPMSTR=0,从机方式。D4 CPOL位:时钟极性选择位(Clock Polarity Bit),该位决定SPSCK引脚空闲时的极性。此位对数据的传输格
15、式没有影响。CPOL=1,SPSCK空闲时为高电平;CPOL=0,SPSCK空闲时为低电平。时钟极性选择位CPOL与时钟相位位CPHA配合使用。D3 CPHA位:时钟相位位(Clock Phase Bit),该位控制串行时钟与SPI数据的时序关系.见图10-6.CPHA=1,从机以SPSCK的第一次沿跳变为移位开始信号,在多个字节的连续传送过程中,从机的引脚信号可始终保持为低电平;CPHA=0,从机以的下降沿作为移位开始信号,在SPSCK的第一次沿跳变启动第一次数据采样,在多个字节的连续传送过程中,从机的引脚信号需要不断地恢复为高电平,来为每一个字节的传送产生移位开始信号(在的下降沿)。一般情
16、况下设置CPHA=1,复位时CPHA=1。图106 CPHA/SS时序D2 SPWOM位:SPI线或模式位(SPI Wired-OR Mode Bit)。该位决定三个引脚SPSCK、MOSI、MISO是否有内部上拉电阻,因而成为开漏输出(opendrain output)。SPWOM=1,设置SPSCK,MOSI和MISO引脚为线或模式;SPWOM=0,设置SPSCK,MOSI和MISO引脚为普通推拉(push-pull)模式。D1 - SPE位:SPI允许位(SPI Enable)。该位决定是否允许SPI。SPE=1,允许SPI;SPE=0,不允许SPI,相应引脚成为普通I/O引脚。D0 S
17、PTIE位:SPI发送中断允许位(SPI Transmit Interrupt Enable)。SPTIE=1,允许SPI发送中断;SPRIE=0,不允许SPI发送中断.当一个字节的数据发送完毕时,状态及控制寄存器SPSCR(下面将介绍该寄存器)的SPTE位(SPI发送器空标志位)被置1,此时,若SPCR寄存器的SPTIE=1,则产生SPI中断.通常情况下SPTIE=0,即发送数据完成不产生中断.(请类比本寄存器的SPI接收中断允许位SPRIE的功能).3SPI状态和控制寄存器(SPI Status and Control Register,SPSCR) SPSCR的地址:$0011,定义为:
18、数据位D7D6D5D4D3D2D1D0定义SPRFERRIEOVRFMODFSPTEMODFENSPR1SPR0复位00001000D7 SPRF位(只读):SPI接收器满标志位(SPI Receiver Full Bit).当收到一个字节的数据时,SPRF位被置1,程序读取该位得知此位为1后,可以通过数据寄存器SPDR读取收到的数据,读取数据后SPRF位被自动清零.D6 ERRIE位:错误中断允许位(Error Interrupt Enable Bit).ERRIE=1,允许MODF和OVRF产生CPU中断请求;ERRIE=0,禁止MODF和OVRF产生CPU中断请求。D5 OVRF位(只读
19、):溢出标志位(Overflow Bit)。当接收数据寄存器中的数据还没有被读取时,若有新的数据进入移位寄存器,OVRF位被置1。OVRF被置1后,读SPSCR寄存器及接收数据寄存器后,OVRF位被自动清零。D4 MODF位(只读):模式错误标志位(Mode Fault Bit).若本寄存器的MODFEN=1,在数据传输过程中,若在从机方式,引脚为高电平,或在主机方式引脚为低电平,说明引脚逻辑发生错误(与图106相违背),MODF被置1。MODF被置成1后,若读SPSCR寄存器后再对SPDR进行写操作,MODF位被自动清零。D3 - SPTE位(只读):SPI发送器空标志位(SPI Trans
20、mitter Empty Bit)。当发送数据寄存器的数据进入移位寄存器中,SPTE被置1,表示发送结束.SPTE被置成1后,若又向发送数据寄存器中写入新的数据,SPTE位被自动清零。D2 MODFEN位:模式错误标志允许位(Mode Fault Enable Bit).MODFEN=1,允许MODF标志的置位,MODFEN=0,禁止MODF标志的置位.但如果MODF位已经被置1,将MODFEN清零,并不会使MODF位也清零。对于主机而言,如果MODFEN为0,引脚就可以作为一般的I/O引脚.D1、D0 - SPR1、SPR0位:SPI波特率选择位(SPI Baud Rate Select B
21、its)。当MCU处于主机模式下,这两位控制串行时钟SPSCK的频率。在从机模式下,这两位没有意义.计算公式为:SPI的波特率 = 上式中:CGMOUT为时钟产生模块CGM的基准时钟输出。BD是分频系数,由SPR1、SPR0位决定:SPR1、SPR0=00,BD=2=01,BD=8=10,BD=32=11,BD=12810.2。3 SPI编程基本方法在进行SPI编程时,首先在程序初始化部分必须进行SPI系统初始化。SPI的初始化,主要是对SPI控制寄存器SPCR进行写入,以便定义工作方式、时钟的空闲电平、是否允许SPI等。同时,还要对SPI控制和状态寄存器SPSCR的控制位部分写入,例如通过对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SPI 模拟 转换
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。