DSP的SPI接口(2)

2019-09-01 15:12

/主动输入从动发送使能串行时钟输入/输出位数由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


DSP的SPI接口(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:生物化学13

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: