页数:46页文件大小:1.77 MB来源: 数字信号处理器DSP原理与应用ppt课件
本课件讲解SPI高速同步串行输入输出端口的工作原理,说明主从工作方式、SPI控制寄存器各位含义、数据格式与时钟极性相位配置,并给出波特率设置、中断处理、复位初始化流程以及外部器件扩展的应用实例。
DSP原理与应用
:高速同步串行输入/输出端口,传送速率可编程应用:外部移位寄存器、D/A、A/D、串行EEPROM、LED显示驱动器等外部设备进行扩展
串行外设接口概述2.串行外设接口控制寄存器3.SPI操作4.串行外设接口中断5.数据格式6.SPI波特率和时钟模式7.SPI的复位和初始化8.SPI应用实例
SPI模块中有9个寄存器用于控制该模块的操作:1SPICCR:SPI配置控制寄存器。2SPICTL:SPI操作控制寄存器。3SPISTS:SPI状态寄存器。4SPIBRR:SPI波特率寄存器。
5SPIRXEMU:SPI仿真缓冲寄存器。6SPIRXBUF:SPI串行输入缓冲寄存器。7SPITXBUF:SPI串行发送缓冲寄存器。8SPIDAT:SPI串行数据寄存器。
9SPIPRI:SPI优先级控制
710.3SPI操作下图是SPI用于两个控制器(一个主控制器和一个从控SPISIMOSPISTE*SPISOMISPICLKSPISIMOSPISTE*SPISOMISPICLK主出/从入SPI选通主入/从出串行时钟SPI主/从控制器连接制器)通信的典型连接方式。SPI主控制器SPI从控制器
SPI可工作于主模式或从模式。SPICTL.2位---MASTER/SLAVE用来选择操作模式和SPICLK的源。(1)主模式将Master的数据传送给Slave,数据传送完毕,申请中断。
SPIMOSISPICLK时钟8SPIMOSISPICLK
给Master,数据传送完毕,申请中断。SPIMISOSPISTESPICLK时钟SPIMISOSPISTESPICLK
用于初始化串行外设接口的中断:
1310.5数据格式
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
SPI时钟模式SPI有四种时钟模式,由CLOCKPOLARITY和CLOCKPHASE位控制。CLOCKPOLARITY位:选择时钟的有效沿是上升沿还是下降沿;CLOCKPHASE位:选择是否有半个时钟周期的延时
(1)下降沿,无延时:SPI在时钟下降沿发送数据,在时钟的上升沿接收数据;(2)下降沿,有延时:SPI在时钟下降沿前半个周期发送数据,在时钟的下降沿接收数据;(3)上升沿,无延时:SPI在时钟上升沿发送数据,在下降沿接收数据;
(4)上升沿,有延时:SPI在时钟上升沿前半个周期发送数据,在上升沿接收数据。4种时钟模式如图所示
1SPICLK周期数SPICLK(无延时的上升沿)SPICLK(有延时的上升沿)SPICLK(无延时的下降沿)SPICLK(有延时的下降沿)SPISIMO/接收锁存点SPISOMISPISTE进入从方式第10章串行外设接口SPI7
使SPI引脚功能被选定为通用输入,要对SPI的配置,需做以下工作:1设置SPISWRESET位(SPICCR.7)的值为0,强制SPI复位;2初始化SPI的配置、格式、波特率和引脚功能为期望值;
3设置SPISWRESET位为1,从复位状态释放SPI;4向SPIDAT或SPITXBUF写数据;5数据发送完成后(SPISTS.6=1),读取SPIRXBUF以确定接收的数据
198.SPI应用实例1.控制串行D/A该程序通过SPI输出一系列递增的字,通过D/A转换输出锯齿波。采用MAX5121芯片连接到SPI。MAX5121是美国MAXIM公司生产的12位低功耗电压输出型串行数模转换器(DAC)。
该器件具有灵活的三线串行接口,可以与SPI、QSPI和MICROWIRE串行口实现无缝联接。在使用内部基准参考电压源时,其最大输出电压为2.0475V
1.25V基准参考电压源,如用户需要,也可外接片外参考电压。此外,它内部还包括一个16位的串行移位寄存器、一个输入寄存器、一个DAC寄存器和一个输出放大器。其输出电压的计算公式为:式中,VREF是基准电压,Code是在0x000~0xFFF范围内的输入数字量,VOS为片外输入模拟电压
,即正常工作模式(电流500μA)和关断工作模式(电流3μA)。当处于关断工作模式时,OUT输出变为高阻态,但输入寄存器内容将被保存,以便MAX5121被唤醒后能“回忆”起进入关断模式前的输出状态。
MAX512l采用+3V单电源供电,封装为16pin QSOP封装形式
MAX5121的内部结构框图如图所示
芯片的引脚功能说明
MAX512l的串行接口命令。MAX512l的编程控制由16位串行字组成,即
串行接口命令及功能描述
在工作时,首先将CS置为低电平以使能MAX5121,然后从SCLK的上升沿开始将DIN上的串行数据一位接一位移入MAX5121内部的16bit串行移位寄存器。当CS为高电平后,串行移位寄存器中的数据将被装入MAX5121内部的输入寄存器或送入DAC寄存器,具体取决于。
MAX5121的最高串行工作时钟频率为6.6MHz
接口电路时,SPI主机,MAX512l作为从机。MAX5121只接受来自主机的数据,然后进行D/A转换并从OUT引脚输出模拟电压。由于MAX5121是在SCLK的上升沿接收SPI线上的数据,因此,DSP应采用无延时的下降沿来发送SPI数据,这样才能配合MAX5121的工作时序
AX512l的硬件接口电路
SPI器件的最高工作频率有所不同,为了使SPI总线高效工作,应了解各个SPI器件最高能接受的频率,然后取低频率的SPI器件的最高频率作为通讯波特率。由于MAX5121的最高允许时钟频率为6.6MHz,因此AX512l的应用系统设计中,SPI总线的最高时钟频率不能超过6.6MHz
源程序代该文件利用汇编语言代码定义了复位和中断向量3title_c_int0,_nothing.rct_c_int0bres
的SPI模块向MAX5121芯片发送数据用于D/A转换,MAX5121的模拟输出端输出一个三角波。用C语言ag1;int GPR3;intintflag;//屏蔽中断//禁止所有的等待状态intinitial()
//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退出复位状态}
//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寄存器中}
SPIINITIAL();GPR3=0x4000;MAX5121的格式写一个数据,使其输出的模拟量为0flag1=0x00;//三角波上升沿、下降沿标志,当flag1=0时,为上升沿,当flag1=1时,为下降沿while(1){if(flag1==0x00)GPR3=GPR3+2;
//因为数据从倒数第2位开始,故要使数据加1,则需要在实际的寄存器中加2,此操作对应三角波的上升沿
else GPR3=GPR3-2;//因为数据从倒数第2位开始,故要使数据减1,则需要在实际的寄存器中减2,此操作对应三角波的下降沿39flag1=0x01;//若需要转换的flag1=0x00;
//若需要转换的//调用SPI发送数据子程序if(GPR3==0x5FFE)数据到FFFH,则开始下降沿if(GPR3==0x4000)数据到00H,则开始上升沿SPITRANS();
}}//当发生干扰中断时,执行此中断
LF2407的无线通信的设计第10章串行外设接口SPI硬件连接
n RF905工作模式
RETRAN引脚置位,那么nRF905将自动重发数据,直到将TRX_CE引脚复位。5)如果将TRX_CE复位,nRF905完成数据发送进入空闲模式。注意:在数据发送过程中无论将TRX_CE,TX_EN怎样设置,nRF905都会完成此次发送而不受影响,之后进入所设置的工作模式
TRX_CE引脚,使nRF905进入空闲模式,之后经过SPI接口以特定速率读取数据。5)数据接收完毕后nRF905将DR和AM引脚复位并准备进入下一个工作模式。
注意:如果在接收数据包的过程中TRX_CE或TX_EN状态改变,那么nRF905就会立即改变工作模式,丢失数据
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}