DSP的SPI接口

更新时间:2024-01-12 05:14:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2014~2015学年 第一学期

《DSP原理及应用》

课 程 设 计 报 告

题 目: DSP的SPI接口 班 级: 11电子信息(1)

电气工程学院 2014年11月

《DSP原理及应用》任务书

课题名称 指导教师 执行时间 学生姓名 学号 DSP的SPI接口 陶沙 2014~2015学年第一学期 第 9 周 承担任务 系统方案设计及协调 DA转换实验 DA转换实验 DA转换实验 EEPROM存储区访问 EEPROM存储区访问 EEPROM存储区访问 论文撰写 评分 设计 要求 1完成SPI接口的DA转换实验和EEPROM存储区访问。 2完成硬件原理图,撰写课程设计说明书。

目 录

目 录.............................................................................................................................. 1 摘 要.............................................................................................................................. 1 第1章 硬件电路设计................................................................................................ 3 1.1 TMS320LF2407A的介绍 ................................................................................. 3 1.2 TLV5617的介绍 ............................................................................................... 4 1.3 DA转换系统原理图 ......................................................................................... 5 第2章 软件的设计.................................................................................................... 6 2.1 程序流程图..................................................................................................... 6 2.2 SPI 接口的DA 实验编程 ............................................................................ 6 第3章 SPI接口的EEPROM存储区访问 .............................................................. 8 3.1 接口特点........................................................................................................... 8 3.2 硬件设计........................................................................................................... 8 3.3 软件设计........................................................................................................... 8 总 结...................................................................................... 错误!未定义书签。 参 考 文 献................................................................................ 错误!未定义书签。 附 录...................................................................................... 错误!未定义书签。

1

摘 要

数字信号处理就是用数值计算的方式对信号进行加工的理论和技术,它的英文原名叫digital signal processing,简称DSP。它是集成专用计算机的一种芯片,只有一枚硬币那么大。有时人们也将DSP看作是一门应用技术,称为DSP技术与应用。介绍TMS320LF2407A的SPI的D/A转换芯片采用TLV5617进行数字到模拟的转换通过观察输出的结果来验证通信和转换的情况。TLV5617是单极性,10位串口DA,所以生成的正弦波数据要换算到TLV5617的数据范围,而且根据TLV5617要求的数据格式还要对换算后的数据做相应的变换才能最终通过SPI接口发送给TLV5617.在这个应用中SPI用于控制TLV5617工作,所以配置为主模式。从TLV5617的控制时序中可以发现串行数据在时钟的上升沿锁存。因此SPI时钟配置选择无延下降沿即SPI在时钟的下降沿发送数据在时钟的上升沿数据被锁存在TLV5617。本设计对DA转换的工作原理的分析以及对DSP的数模转换系统进行功能分析设计出数模转换接口的系统框图硬件电路图和软件程序。DSP的串行外设接口(SPI)完成EEPROM的存储区访问。

关键词:数字信号处理器 串行外设接口 D/A转换 TLV5617 EEPROM

2

第1章 硬件电路设计

1.1 TMS320LF2407A的介绍

TMS320LF2407A的D/A转换是基于2407的SPI接口以及TLV5617芯片里完成。SPI参与数据传输的寄存器有9个,其中SPICCR、SPICTL用于设置SPI的工作状态工作方式、数据长。作为主器件时,时钟模式的选择要参考工作方式。SPIBRR用于设定SPI的波特率;SPISTS反映数据传输的状态;SPIRXBUF、SPITXBUF用于数据的接收和发送;SPIDAT为数据的发送/接收缓冲寄存器。

(1)2407A的SPI工作方式和时钟模式

工作方式:2407A的SPI功能模块是一种真正的同步串行接方式无延时上升沿有延时上升沿无延时下降沿有延时下降沿SPICLK信号上升沿发送数据,下降沿接00收数据提前SPICLK信号上升沿半个周期发送数据,上升沿接收数据SPICLK信号下降沿发送数据,上升沿接01口,可以工作于主动和从动方式。将SPICTL寄存器的位2(MASTER/SLAVE)设置为1,即选择了主动工作方式,2407A作为主器件;反之,为从动方式,2407A作为从器件。当SPI工作在主动方式时,SPICLK为时钟信号输出端,与从器件的时钟信号输入引脚相连接,二者共用2407A的时钟信号。SPI数据传输由第30、32、33、35引脚完成。引脚功能见表1。

表1 引脚功能表

引脚名称:SPISIMO(30引脚)SPISOMI(32引脚)SPISTE(33引脚)SPICLK(35引脚)

2407A数据字长度可以是1到16位,收发数据的功能从动输入/主动输出从动输出

3

/主动输入从动发送使能串行时钟输入/输出位数由SPI的配置控制寄存器SPICCR的低四位(SPICHAR3~SPICHAR0)决定。在二进制中,这四位共有16种组合,每一个组合对应一种数据长度,比如:组合是0000时,规定收发数据的位数是1位;当组合是1111时,就规定了收发数据位数为16位。SPI数据的收发都经过发送/接收缓冲寄存器SPIDAT。SPIDAT是一个16位寄存器,SPI发送采用左对齐方式,所以当要发送的数据小于16位时,需对要发送的数据进行调整,有效位要从高位开始放置(靠左),无效位可为随意的数据。

(2) 时钟模式

SPI的时钟模式有四种。时钟模式的选择由配置控制寄存器SPICCR的时钟极性位(位6:CLOCKPO2LARITY)和接口操作控制寄存器SPICTL的时钟相位位(位3:CLOCKPHASE)的组合状态来决定。

图2 SPI数据传输格式时序

波特率的设定要参考外设的最大传输频率。通过向波特率寄存器(SPIBRR)写入设定值,就可以得到不同的波特率。波特率计算公式如下:SPI波特率=SYSCLK/(SPIBRR+1)(3ΦSPIBRRΦ127)(SPISPI波特率=SYSCLK/4BRR=0,1,2时)其中,SPIBRR为SPI模块的SPIBRR寄存器中的内容,SYSCLK为倍频或分频后的系统时钟频率。

1.2 TLV5617的介绍

TLV5617A是带有灵活3线串行接口的双10位电压输出数/模转换数,DAC串行接口可与TMS320 SPITM QSPIM和MiscrowaresTM的串行端口兼容。它可用含有4个控制位和10个数据位的串行16位字符串编程。 其特点

双10位电压输出数/模转换器DAC:可编程的内部基准,可编程的稳定时

4

间,快速方式2.5s,慢速方式12s,可与TMS320和SPITM串行端口兼容

应用范围:数据伺服系统控制回路,数据偏置和增益调节器,工业处理控制,机械和运作控制器件,海量存储器一般功能TLV5617A是一个基于串联电阻结构的双10位电源的DAC,它由一个串行接口一个速度和掉电控制逻辑一个电阻字符串和一个轨对轨的输出缓冲器组成输出电压全额度由内部基准决定由一下公式给出:

2REF CODE/0*1000【v】

其中REFSHI 电压基准,CODE是在0x000至0xFFC范围内的数字输入值一次上电复位初始化内部锁存至置位状态所有位均为0。 串行接口

CS引脚的下降沿开始将数据一位接一位从最高有效位开始转移到在SCLK引脚的下降沿上的内部寄存器中在16位数据传送完或CS上升时转移寄存器的内部被移入目标锁存DACA DACB缓冲器或控制中这取决于数据字中的控制位。

1.3 DA转换系统原理图

图3 DA转换系统原理图

5

第二章 软件的设计

2.1 程序流程图

图4 SPI模块软件流程

当SPICTL的使能发送允许位TALK位为1时,写数据到SPIDAT或SPITXBUF就启动了SPISIMO引脚的数据发送,数据从SPIDAT的最高位依次发送出去。在数据移出SPIDAT时,将置位SPI的接口状态寄存器SPISTS的中断标志位SPIINTFLAG;若中断使能,将发生中断事件。2407A发送数据的状态可以用两种方法检测:一是中断方式,二是查询方式。查询方式查询SPI中断标志位SPIINTFLAG是否为1,若为1,则数据发送完毕。

2.2 SPI 接口的DA 实验编程

DA转换程序 #include \SPI_Init(); void DA_OUT(unsigned CHANNEL,unsigned int RNG,unsigned int SPI_DATA); int numled0=200; unsigned int t0=0,i=0; int Voltage=0; main() { SystemInit(); //系统初始化

6

MCRA=MCRA & 0xC0FF; //IOPB0-6设为IO口模式 PBDATDIR=0xFFC2; //所有LED=0 PBDATDIR=PBDATDIR | 0x003D; //所有LED=1 SPI_Init(); // CreateDASigal(); /* while(1) { CreateDASigal(); i=10; for(i=0;i<100;i++); } */ Timer1Init(); //定时器初始化 asm(\CLRC INTM \while(1); } void SystemInit() { asm(\SETC INTM \//关闭总中断 asm(\CLRC SXM \禁止符号位扩展 asm(\块映射为 on-chip DARAM asm(\OVM \//累加器结果正常溢出 SCSR1=0x87FE; //系统时钟CLKOUT=20*2=40M //

打开ADC,EVA,EVB,CAN和SCI的时钟 WDCR=0x006F; //禁止看门狗,看门狗时钟64分频 KickDog(); //初始化看门狗 IFR=0xFFFF; //清除中断标志 IMR=0x0003; //打开中断2 } void Timer1Init() { EVAIMRA=0x0080; // 定时器1周期中断使能 EVAIFRA=0xFFFF; // 清除中断标志 GPTCONA=0x0000; T1PR=2500; // 定时器1初值,定时0.4us*2500=1ms T1CNT=0; T1CON=0x144E; //增模式, TPS系数40M/16=2.5M,T1使能 } void SPI_Init() //SPI-DA初始化 { MCRB=MCRB | 0x0014; //SPISIMO,SPICLK特殊功能方式 PBDATDIR=PBDATDIR | 0x0002; //CS_DA=1 SPICCR=0x004a; //11bit数据 SPICTL=0x0006; //禁止中断 SPIBRR=0x0027; //1M波特率,40M/40=1M SPICCR=SPICCR | 0x80; } void DA_OUT(unsigned CHANNEL,unsigned int RNG,unsigned int SPI_DATA) { unsigned char flag=0; SPITXBUF=(CHANNEL<<14)|(RNG<<13)|(SPI_DATA<<5) ; //bit10,9~CHANNEL;bit8~RNG倍数 while(1) { flag=SPISTS&0x40; if(flag==0x40) break; } SPIRXBUF=SPIRXBUF; //虚读寄存器以清除中断标志 PBDATDIR=PBDATDIR & 0xFFFD; //CS_DA=0,更新模拟信号输出 for(i=0;i<5;i++); //延时 PBDATDIR=PBDATDIR | 0x0002; //CS_DA=1,锁存数据 } void c_int2() //定时器1中断服务程序 { if(PIVR!=0x27) { asm(\return; } T1CNT=0; numled0--; if(numled0==0) { numled0=200; if((PBDATDIR & 0x0001)==0x0001) PBDATDIR=PBDATDIR & 0xFFFE; //IOPB0=0;LED灭 else PBDATDIR=PBDATDIR |0x0101; //IOPB0=1;LED亮 } if(Voltage<0) Voltage=0; DA_OUT(0,0,Voltage); //Voltage范围0-255对应0-3.3V DA_OUT(1,0,Voltage); //Voltage范围0-255对应0-3.3V。

7

第三章 SPI接口的EEPROM存储区访问

3.1 SPI接口特点

TMS320F241型DSP是目前应用比较广泛的一款定点DSP,它具有20MIPS的指令执行速度,强大的内部事件管理器、I/O端口和其他外围设备。其中,串行外设接口(SPI)是一个高速同步串行输入/输出(I/O)端口,它允许一个具有可编程长度(1到16位)的串行位流,以可编程的位传送速率从设备移入或移出。SPI通常用于DSP控制器和外部器件或其它控制器间的通讯。

在开发DSP系统时,某些情况下会读取或者存储一些定值,这时我们就需要扩展EEPROM。具有SPI接口的串行EEPROM均可被TMS320F241直接逻辑扩展,方便易行。X5043是Xicor公司最高时钟速率为3.3MHz带有块锁保护的4Kbits的CMOS串行EEPROM。该器件内部组织阵列是X8位,具有串行外围接口(SPI)和软件协议的特点,允许在简单的四线总线上工作;该器件利用Xicor专有的直接写入晶片提供最小为10万次擦写和最少100年的数据保存期。

3.2硬件设计

X5043与TMS320F241型DSP的连接关系如图1所示。DSP作为主控制器,工作于主模式下,SPISIMO为DSP的数据发送端,连接到X5043的数据接收端(SI);SPISOMI为DSP的数据接收端,连接到X5043的数据发送端(SO);SPISTE配置成I/O口连接到X5043的片选端(/CS);SPICLK为SPI数据传送的时钟信号,连接到X5043的串行时钟端(SCK),串行时钟由DSP控制。DSP的数据在SPISIMO引脚上输出并从SPISOMI上锁存, DSP通过写入SPIDAT寄存器的数据启动SPICLK串行时钟信号从而启动数据传送,当8位串行位流传送完毕后,SPICLK信号中止,传送结束。

3.3软件设计

(1)工作模式的选择

TMS320F241的SPI接口有可选择的四种不同的时钟模式,如何选择时钟模式是它与各种扩展SPI接口器件实现时钟同步的关键。X5043的数据在时钟下降沿从SO引脚上输出并在时钟上升沿从SI引脚上锁存。读操作时,在其从SI引脚输入的最低位地址所对应的时钟下降沿,其SO引脚开始输出数据。作为主器件的DSP可以选择 ‘上升沿,无延时’和‘上升沿、有延时’两种时钟工作模式。‘上升沿,无延时’模式与X5043的工作模式一致,数据在SPICLK信号的时钟上升边沿(从低电平到高电平)从移位寄存器移出在SI引脚上锁存,在时钟下降边沿(从高电平到低电平)从SO引脚上输出的数据锁存到移位寄存器中。‘上升沿,有延时’模式如图4所示,数据在SPICLK信号上升沿前半个周期从移位寄存器移出,在紧接着的上升边沿在SI引脚上锁存,在时钟下降边沿(从高电平到低电平)从SO引脚上输出的数据锁存到移位寄存器中。

(2)波特率的选择

8

SPI波特率可以由如下两种情况计算得出:对于SPIBRR=3~127,波特率的计算公式为:

SPI波特率=CLKOUT/(SPIBRR+1)

对于SPIBRR=0~2,波特率的计算公式为:SPI波特率=CLKOUT/4 式中,CLKOUT=器件的CPU时钟频率;SPIBRR=主SPI器件中的SPIBRR内容。 X5043最大的SPI波特率为3.3MHz,若DSP的CPU时钟频率CLKOUT=16MHz,则: 最大的SPI波特率 =16×106/(SPIBRR+1)≤3.3×106Hz SPIBRR≥4+9

(3) DSP的数据传输格式

DSP中SPI有16位的发送和接收能力,且接收和发送均是双缓冲。所有数据寄存器都是16位宽的,而X5043的地址、数据寄存器均是8位的,将DSP中SPI传输字符长度设置成8位宽。要向X5043存储数据时,DSP将一个8位字节长度的数据写入SPIDAT或SPITXBUF的高8位上如图2所示,在时钟信号的作用下,以左对齐方式发送,先发送数据的最高位。DSP接收一个8位字节长度的数据,是以右对齐方式接收如图3所示,8位字节长度的数据写入SPIDAT或SPIRXBUF 的低8位上。

(4)各控制寄存器设置 LDP #SPICCR>>7 SPLK #0007h,SPICCR ;复位字符长度

SPLK #000Eh,SPICTL

;主模式,使能TALK,禁止SPI的中断 ;上升沿发送,下降沿接收,有延时 SPLK #000Fh,SPIBRR ;设置SPI的传输波特率 SPLK #0087h,SPICCR

;SPI准备好发送或接收下一字符

(5)程序设计

RAM块中的变量定义:

.bss SPI_Xdata,1;SPI数据传输暂存器

.bss address1,1;EEPROM存储器地址暂存器 .bss data1,1;EEPROM存储器数据暂存器 X5043存储器地址:

WREN .set 0600h;设置写使能锁存指令地址 WRDI .set 0400h;复位写使能锁存指令地址 RSDR .set 0500h;读状态寄存器指令地址 WRSR .set 0100h;写状态寄存器指令地址 READh .set 0B00h

READl .set 0300h;读存储器阵列数据指令地址

9

WRITEh .set 0A00h

WRITEl .set 0200h;写存储器阵列数据指令地址 (6)DSP的SPI数据发送、接收子程序代码 XMIT_VALUE: LDP #0

LACC SPI_Xdata LDP #SPITXBUF>>7

SACL SPITXBUF;写需发送的值到SPI传输缓冲器 XMIT_RDY:

LDP #SPISTS>>7 BIT SPISTS,BIT6

BCND XMIT_RDY,NTC;测试SPI_INT位,如果SPI_INT=0,则重复循环;等待数据发送完毕进行下一步操作 LDP #SPIRXBUF>>7

LACL SPIRXBUF;读取数据清除SPI_INT标志位 LDP #0

SACL SPI_Xdata;将接收的值存入数据传输暂存器 RET

10

总结

DSP结构特点决定了它尤其适合做数字信号处理的应用,而学好数字信号处理对日后的信息处理的深入学习和应用有着重要的意义,因而学好DSP技术就有很深远的意义。通过此次课程设计详细掌握了TMS320LF2407A的SPI功能模块和TLV5617的性能特点,完成了SPI的DA转换实验和EEPROM存储区访问。 在此次课程设计中我也遇到了很多问题,通过阅读几本参考书和其他一些资料,自己已经基本明白了他们的作用和配置方法。还有就是程序的调试,DSP的结构比单片机要复杂的多,相应的寄存器比较多,而且很多情况下编写DSP程序都需要操作盒配置,这既要对诺依曼体系结构的共性有一定了解,同时也要针对DSP的特点来进行,编程前需对各个硬件模块之间的内在联系进行整体考虑,这样可以训练自己的系统思维。当然这些问题都有一定的难度,但是想办法解决它们的过程也就是学习和进步的过程。

11

参考文献:

[1]刘和平,王维俊,等.TMS320LF240XDSPC语言开发应用.北京:北京航空航天大学出版社,2003.

[2]TLC5620C,TLC5620I数据手册武汉力源电子股份有限公司,1998.

[3]杨永辉,曹丹华,吴裕斌.TMS320LF2407A与SPI的接口设计测控技术,2003,22 [4]王改名,赫苏敏,王忠杰,HD7279A的原理与应用.2007

[5]张毅刚等编著.TMS320LF240x系列DSP原理开发与应用.哈尔滨:哈尔滨工业大学出版社,2007.8

12

答辩记录及评分表

课题名称 答辩教师(职称) 答辩时间 答 辩 评 语 DSP的SPI接口 陶沙 2014~2015学年第一学期 第 9 周 1什么是DSP?(钱叶辉) 答:数字信号处理就是用数值计算的方式对信号进行加工的理论和技术,它的英文原名叫digital signal processing,简称DSP。它是集成专用计算机的一种芯片,只有一枚硬币那么大。有时人们也将DSP看作是一门应用技术,称为DSP技术与应用。 2简述TMS320LF2407A的?(魏伟) 答: TMS320LF2407A的D/A转换是基于2407的SPI接口以及TLV5617芯片里完成。SPI参与数据传输的寄存器有9个,其中SPICCR、SPICTL用于设置SPI的工作状态工作方式、数据长。 3简述SPI工作方式?(孙叶林) 答:2407A的SPI功能模块是一种真正的同步串行接方无延时上升沿有延时上升沿无延时下降沿有延时下降SPICLK信号上升沿发送数据,下降沿接00收数据提SPICL信号上个周期发送数据,上升沿接收数据SPICLK信号下降沿发送数据,上升沿接01口,可以工作于主动和从动方式。 4 DSP的数据传输格式是什么?俞俊明 答:DSP中SPI有16位的发送和接收能力,且接收和发送均是双缓冲。所有数据寄存器都是16位宽的,而X5043的地址、数据寄存器均是8位的,将DSP中SPI传输字符长度设置成8位宽。要向X5043存储数据时,DSP将一个8位字节长度的数据写入SPIDAT或SPITXBUF的高8位上。 5.简述SPI接口?李丰 答:SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。 13

答 辩 评 语 6.SPI有哪些工作模式?(姚姚) 答:工作模式编辑SPI有四种工作模式,各个工作模式的不同在于SCLK不同, 具体工作由CPOL,CPHA决定CPOL: (Clock Polarity),时钟极性。当CPOL为0时,时钟空闲idle时候的电平是低电平;当CPOL为1时,时钟空闲idle时候的电平是高电平;CPHA:(Clock Phase),时钟相位当CPHA为0时,时钟周期的前一边缘采集数据;当CPHA为1时,时钟周期的后一边缘采集数据; 7.串口与SPI口有什么区别?(陈文) 答:串口2条线的 一个RX 一个TX ,SPI是4线串口 分别是 CS(片选) CLK(时钟) MISO(数据输入) MOSI(数据输出),串口一般是一对一接收。SPI可以挂载多个SPI设备,通过CS选通设。 8.简述SPI接口主模式电路设计?(葛自立) 答:内容及要求,SPI接口主模式电路设计。 (1)输出时钟频率可调:主时钟2/4/8/32/64分频; (2)具有主动收发功能; (3)发送、接收数据均为16bit; (4)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、下载验证等。 14

答 辩 评 语 6.SPI有哪些工作模式?(姚姚) 答:工作模式编辑SPI有四种工作模式,各个工作模式的不同在于SCLK不同, 具体工作由CPOL,CPHA决定CPOL: (Clock Polarity),时钟极性。当CPOL为0时,时钟空闲idle时候的电平是低电平;当CPOL为1时,时钟空闲idle时候的电平是高电平;CPHA:(Clock Phase),时钟相位当CPHA为0时,时钟周期的前一边缘采集数据;当CPHA为1时,时钟周期的后一边缘采集数据; 7.串口与SPI口有什么区别?(陈文) 答:串口2条线的 一个RX 一个TX ,SPI是4线串口 分别是 CS(片选) CLK(时钟) MISO(数据输入) MOSI(数据输出),串口一般是一对一接收。SPI可以挂载多个SPI设备,通过CS选通设。 8.简述SPI接口主模式电路设计?(葛自立) 答:内容及要求,SPI接口主模式电路设计。 (1)输出时钟频率可调:主时钟2/4/8/32/64分频; (2)具有主动收发功能; (3)发送、接收数据均为16bit; (4)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、下载验证等。 14

本文来源:https://www.bwwdw.com/article/5zlo.html

Top