首页电子与通信技术信息处理技术数字信号处理器DSP原理与应用 10 第十章 串行外设接口SPI.pptx

10 第十章 串行外设接口SPI.pptx

页数:46页文件大小:1.77 MB来源: 数字信号处理器DSP原理与应用ppt课件

本课件讲解SPI高速同步串行输入输出端口的工作原理,说明主从工作方式、SPI控制寄存器各位含义、数据格式与时钟极性相位配置,并给出波特率设置、中断处理、复位初始化流程以及外部器件扩展的应用实例。

第10章SPI接口封面,标示本章主题与主要内容框架
SPI指标说明,:高速同步串行输入/输出端口,传送速率可编程应用:外部移位寄存器、D/A、A/D、串行EEPROM、LED显示驱动器等外部设备进行扩展
第10章SPI接口目录,串行外设接口概述2.串行外设接口控制寄存器3.SPI操作4.串行外设接口中断5.数据格式6.SPI波特率和时钟模式7.SPI的复位和初始化8.SPI应用实例
查看本课件的文字版(共 46 页,供检索与复制)

第1页:第10章SPI接口封面

DSP原理与应用

第2页:SPI

:高速同步串行输入/输出端口,传送速率可编程应用:外部移位寄存器、D/A、A/D、串行EEPROM、LED显示驱动器等外部设备进行扩展

第3页:第10章SPI接口目录

串行外设接口概述2.串行外设接口控制寄存器3.SPI操作4.串行外设接口中断5.数据格式6.SPI波特率和时钟模式7.SPI的复位和初始化8.SPI应用实例

第4页:1. 串行外设接口概述(1)个外部引脚

  • 串行外设接口概述(1)个外部引脚,以下引脚都可用作数字I/O引脚。
  • SPISIMO-SPI从输入、主输出
  • SPISOMI-SPI主输入、从输出
  • SPICLK-SPI时钟
  • SPISTE-SPI从发送使能2主/从操作模式。3发送、接收双缓冲

第5页:

第6页:10.2 串行外设接口控制寄存器

SPI模块中有9个寄存器用于控制该模块的操作:1SPICCR:SPI配置控制寄存器。2SPICTL:SPI操作控制寄存器。3SPISTS:SPI状态寄存器。4SPIBRR:SPI波特率寄存器。

5SPIRXEMU:SPI仿真缓冲寄存器。6SPIRXBUF:SPI串行输入缓冲寄存器。7SPITXBUF:SPI串行发送缓冲寄存器。8SPIDAT:SPI串行数据寄存器。

9SPIPRI:SPI优先级控制

第7页:SPI主控制器SPI从控制器

710.3SPI操作下图是SPI用于两个控制器(一个主控制器和一个从控SPISIMOSPISTE*SPISOMISPICLKSPISIMOSPISTE*SPISOMISPICLK主出/从入SPI选通主入/从出串行时钟SPI主/从控制器连接制器)通信的典型连接方式。SPI主控制器SPI从控制器

第8页:SPI可工作于主模式或从模式

SPI可工作于主模式或从模式。SPICTL.2位---MASTER/SLAVE用来选择操作模式和SPICLK的源。(1)主模式将Master的数据传送给Slave,数据传送完毕,申请中断。

SPIMOSISPICLK时钟8SPIMOSISPICLK

第9页:(2)从模式将Slave的数据传送

给Master,数据传送完毕,申请中断。SPIMISOSPISTESPICLK时钟SPIMISOSPISTESPICLK

第10页:由图知,SPI有两种工作模式

  • 由图知,SPI有两种工作模式:主模式和从模式,操作模式由SPICTL.2(MASTER/SLAVE位)决定。
  • 数据的发送方式有三种:1主控制器发送数据,从控制器发送伪数据;2主控制器发送数据,从控制器发送数据;3主控制器发送伪数据,从控制器发送数据

第11页:主控制器控制SPICLK信号

  • 主控制器控制SPICLK信号,通过发出SPICLK信号启动数据发送,从控制器则通过检测SPICLK信号接收数据。
  • 一个主控制器可以连接多个从控制器,但是一次只允许一个从控制器给主控制器发送数据

第12页:10.4 串行外设接口中断有五个控制位

用于初始化串行外设接口的中断:

  • SPI中断使能位:SPIINTENA(SPICTL.0);
  • SPI中断标志位:SPIINTFLAG(SPISTS.6);
  • SPI超限中断使能位:OVERRUNINTENA(SPICTL.4);
  • SPI接收器超限中断标志位:RECEIVEROVERRUNFLAG(SPISTS.7)
  • SPI中断优先级选择位:SPIPRIORITY(SPIPRI.6)

第13页:SPI数据字符位数(1-16位)

1310.5数据格式

  • SPI通信时,要发送的数据从SPIDAT寄存器的MSB依次移出,接收的数据则从SPIDAT的LSB依次移入。
  • SPI数据字符位数(1-16位)由SPICCR.3-0指定。
  • 当写入SPIDAT或SPITXBUF时,数据必须是左对齐的。
  • 数据从SPIRXBUF读回时是右对齐的。LSB移位寄存器SPIDATMSB

第14页:6. SPI波特率和时钟模式

SPI模块支持125种不同的波特率和4种不同的时钟模式。SPI最大波特率为CLKOUT频率的四分之一。1.SPI波特率的确定SPI波特率取决于CLKOUT和SPIBRR的值。

(1)对于SPIBRR=3-127SPI波特率=CLKOUT/(SPIBRR+1)(2)对于SPIBRR=0-2SPI波特率=CLKOUT/4SPI最大波特率=CLKOUT/4=10MHz

第15页:10.6.2 SPI时钟模式SPI有四种

SPI时钟模式SPI有四种时钟模式,由CLOCKPOLARITY和CLOCKPHASE位控制。CLOCKPOLARITY位:选择时钟的有效沿是上升沿还是下降沿;CLOCKPHASE位:选择是否有半个时钟周期的延时

第16页:(1)下降沿,无延时

(1)下降沿,无延时:SPI在时钟下降沿发送数据,在时钟的上升沿接收数据;(2)下降沿,有延时:SPI在时钟下降沿前半个周期发送数据,在时钟的下降沿接收数据;(3)上升沿,无延时:SPI在时钟上升沿发送数据,在下降沿接收数据;

(4)上升沿,有延时:SPI在时钟上升沿前半个周期发送数据,在上升沿接收数据。4种时钟模式如图所示

第17页:1SPICLK周期数

1SPICLK周期数SPICLK(无延时的上升沿)SPICLK(有延时的上升沿)SPICLK(无延时的下降沿)SPICLK(有延时的下降沿)SPISIMO/接收锁存点SPISOMISPISTE进入从方式第10章串行外设接口SPI7

第18页:10.7 SPI的复位和初始化系统复位

使SPI引脚功能被选定为通用输入,要对SPI的配置,需做以下工作:1设置SPISWRESET位(SPICCR.7)的值为0,强制SPI复位;2初始化SPI的配置、格式、波特率和引脚功能为期望值;

3设置SPISWRESET位为1,从复位状态释放SPI;4向SPIDAT或SPITXBUF写数据;5数据发送完成后(SPISTS.6=1),读取SPIRXBUF以确定接收的数据

第19页:8. SPI应用实例

198.SPI应用实例1.控制串行D/A该程序通过SPI输出一系列递增的字,通过D/A转换输出锯齿波。采用MAX5121芯片连接到SPI。MAX5121是美国MAXIM公司生产的12位低功耗电压输出型串行数模转换器(DAC)。

该器件具有灵活的三线串行接口,可以与SPI、QSPI和MICROWIRE串行口实现无缝联接。在使用内部基准参考电压源时,其最大输出电压为2.0475V

第20页:MAX5121内部带有一个+

1.25V基准参考电压源,如用户需要,也可外接片外参考电压。此外,它内部还包括一个16位的串行移位寄存器、一个输入寄存器、一个DAC寄存器和一个输出放大器。其输出电压的计算公式为:式中,VREF是基准电压,Code是在0x000~0xFFF范围内的输入数字量,VOS为片外输入模拟电压

第21页:MAX5121数模转换器具有两种工作模式

,即正常工作模式(电流500μA)和关断工作模式(电流3μA)。当处于关断工作模式时,OUT输出变为高阻态,但输入寄存器内容将被保存,以便MAX5121被唤醒后能“回忆”起进入关断模式前的输出状态。

MAX512l采用+3V单电源供电,封装为16pin QSOP封装形式

第22页:MAX5121的内部结构框图如图所示

MAX5121的内部结构框图如图所示

第23页:芯片的引脚功能说明

芯片的引脚功能说明

第24页:

第25页:

第26页:MAX512l的串行接口命令

MAX512l的串行接口命令。MAX512l的编程控制由16位串行字组成,即

第27页:串行接口命令及功能描述

串行接口命令及功能描述

第28页:MAX5121的工作时序MAX512I

在工作时,首先将CS置为低电平以使能MAX5121,然后从SCLK的上升沿开始将DIN上的串行数据一位接一位移入MAX5121内部的16bit串行移位寄存器。当CS为高电平后,串行移位寄存器中的数据将被装入MAX5121内部的输入寄存器或送入DAC寄存器,具体取决于。

MAX5121的最高串行工作时钟频率为6.6MHz

第29页:

第30页:MAX512件接口在AX5121的硬件

接口电路时,SPI主机,MAX512l作为从机。MAX5121只接受来自主机的数据,然后进行D/A转换并从OUT引脚输出模拟电压。由于MAX5121是在SCLK的上升沿接收SPI线上的数据,因此,DSP应采用无延时的下降沿来发送SPI数据,这样才能配合MAX5121的工作时序

第31页:AX512l的硬件接口电路

AX512l的硬件接口电路

第32页:SPI总线波特率的设置由于不同

SPI器件的最高工作频率有所不同,为了使SPI总线高效工作,应了解各个SPI器件最高能接受的频率,然后取低频率的SPI器件的最高频率作为通讯波特率。由于MAX5121的最高允许时钟频率为6.6MHz,因此AX512l的应用系统设计中,SPI总线的最高时钟频率不能超过6.6MHz

第33页:

第34页:源程序代该文件利用汇编语言代码定义了复位

源程序代该文件利用汇编语言代码定义了复位和中断向量3title_c_int0,_nothing.rct_c_int0bres

第35页:(2)主程序//该程序利用LF2407

的SPI模块向MAX5121芯片发送数据用于D/A转换,MAX5121的模拟输出端输出一个三角波。用C语言ag1;int GPR3;intintflag;//屏蔽中断//禁止所有的等待状态intinitial()

第36页://16charbits

//16charbits,在SPICLK//使能主动模式,一般的//SPI的波特率为3M,//设置通用引脚为SPI功//SPI模块初始化子程序int SPIINITIAL(){*SPICCR=0X004F;

的下降沿发送数据,与MAX5121在//上升沿接收数据配合*SPICTL=0X0006;时钟方式,使能TALK*SPIBRR=0X0007;CLKOUT=24M*MCRB=0X003C;

能的*SPICCR=*SPICCR|0X0080;//设置IOPE0脚为通用引脚//使SPI退出复位状态}

第37页://SPI发送数据子程序

//SPI发送数据子程序,需要发送的数据存放在GPR3寄存器中int SPITRANS(//设置IOPE0为输出,且输出低电平,以选中MAX5121芯片*SPITXBUF=GPR3;

//向SPI的发送缓冲器写一个发送数据while(1){flag=*SPISTS&0x40;//flag=SPI的中断标志if(flag==0x40)break;

//如果SPI的中断标志的中断标志为1,则证明SPI已经发送成功,则停止等待}*SPIRXBUF=*SPIRXBUF;SPIRXBUF寄存器,以清除SPI中断//虚读//发送完毕,则IOPE0输出高,使发送的数据输出到MAX5121的输入寄存器和DAC寄存器中}

第38页://SPI初始化//根据系统初始化

SPIINITIAL();GPR3=0x4000;MAX5121的格式写一个数据,使其输出的模拟量为0flag1=0x00;//三角波上升沿、下降沿标志,当flag1=0时,为上升沿,当flag1=1时,为下降沿while(1){if(flag1==0x00)GPR3=GPR3+2;

//因为数据从倒数第2位开始,故要使数据加1,则需要在实际的寄存器中加2,此操作对应三角波的上升沿

第39页:elseGPR3=GPR3-2

else GPR3=GPR3-2;//因为数据从倒数第2位开始,故要使数据减1,则需要在实际的寄存器中减2,此操作对应三角波的下降沿39flag1=0x01;//若需要转换的flag1=0x00;

//若需要转换的//调用SPI发送数据子程序if(GPR3==0x5FFE)数据到FFFH,则开始下降沿if(GPR3==0x4000)数据到00H,则开始上升沿SPITRANS();

}}//当发生干扰中断时,执行此中断

第40页:10.8.2 基于nRF905实现

LF2407的无线通信的设计第10章串行外设接口SPI硬件连接

第41页:nRF905工作模式

n RF905工作模式

第42页:nRF905发送模式工作过程

nRF905发送模式工作过程
1当2407A发送数据时,将目标节点的地址和所要发送的数据通过SPI接口锁存到nRF905中,其接口速率是可控的。2置位TRX_CE,TX_EN,激活nRF905发送模式。3nRF905自动完成数据打包(加入报头和CRC校验码),包经过GFSK调制以100kbps发送,当传送完毕DR引脚置位

第43页:4)如果将AUTO_

RETRAN引脚置位,那么nRF905将自动重发数据,直到将TRX_CE引脚复位。5)如果将TRX_CE复位,nRF905完成数据发送进入空闲模式。注意:在数据发送过程中无论将TRX_CE,TX_EN怎样设置,nRF905都会完成此次发送而不受影响,之后进入所设置的工作模式

第44页:nRF905接收模式工作过程

nRF905接收模式工作过程
1将TRX_CE置位,TX_EN复位后,nRF905进入接收模式等待数据到来。2当nRF905在接收频率检测到载波,则CD引脚置位;而后如果接收到有效地址则AM置位;最后将接收到的有效数据包去掉报头、地址、CRC校验码,并将DR引脚置位

第45页:4)2407A复位

TRX_CE引脚,使nRF905进入空闲模式,之后经过SPI接口以特定速率读取数据。5)数据接收完毕后nRF905将DR和AM引脚复位并准备进入下一个工作模式。

注意:如果在接收数据包的过程中TRX_CE或TX_EN状态改变,那么nRF905就会立即改变工作模式,丢失数据

第46页:

顶部目录