⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.c

📁 TMS320F2812的SPI配置
💻 C
字号:
#include "DSP281x_Device.h"    
#include "DSP281x_Examples.h" 
Uint16 table[10]={0x0000,0x00001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009};
void delay();
void spi_fifo_init(void);
void main(void)
{   
	Uint16 k=0,m=0,n=0,p=0,num=0; 
    InitSysCtrl();                          //系统初始化
	EALLOW;                                 //关闭保护 
	GpioMuxRegs.GPFMUX.all=0x000F;          //设置通用引脚为SPI引脚                        
	EDIS;                                   // 打开保护
	DINT;                                   //关总中断
	IER = 0x0000;                            		
	IFR = 0x0000;                           //清除中断标志
	InitPieCtrl();                          //初始化PIE控制寄存器
	InitPieVectTable();                     //初始化PIE向量表
	PieCtrlRegs.PIECRTL.bit.ENPIE = 1;      //使能从PIE单元获取中断向量   
	PieCtrlRegs.PIEIER6.bit.INTx2=1;     
	IER=0x20;  
	spi_fifo_init();                        //SPI初始化    				
/////////////////////MAX7219初始化/////////////////////			
			SpiaRegs.SPITXBUF=0x09ff;      //译码方式
			while(SpiaRegs.SPISTS.bit.INT_FLAG==0);  //等待数据发送完
     	 	delay();                      
		//	delay(); 
			
			SpiaRegs.SPITXBUF=0x0A0a;      ///亮度0-f
			while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
     		delay();
		//	delay();
			 
			SpiaRegs.SPITXBUF=0x0B03;      //扫描范围,0-7位数码管
			while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
		 	delay();
		// 	delay();
		 	 
		   	SpiaRegs.SPITXBUF=0x0C01;       //停机方式,开启(1);停机(0)
		   	while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
		 delay();
		//	delay();
			 
			SpiaRegs.SPITXBUF=0x0F00;        //测试模式,开(1),关(0)
			while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
    	 delay();
    	//	delay(); 	
////////////////向MAX7219发送数字//////////////////////    
   while(1)
          { 
            p=num/1000;                       //千位
			SpiaRegs.SPITXBUF=0x0100|table[p];  //|p;   
			while(SpiaRegs.SPISTS.bit.INT_FLAG==0);  //等待数据发送完
            delay();			
		//	delay();
			
			n=(num-p*1000)/100;		          //百位
    	 	SpiaRegs.SPITXBUF=0x0200|table[n];
			while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
            delay();
           // delay();
            
	        m=(num-p*1000-n*100)/10;           //十位
			SpiaRegs.SPITXBUF=0x0300|table[m];
			while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
	    	delay();
	       // delay();

	        k=num-p*1000-n*100-m*10;           //个位
			SpiaRegs.SPITXBUF=0x0400|table[k];
			while(SpiaRegs.SPISTS.bit.INT_FLAG==0);
		    delay();
			//delay();
    	
    	    num++;                     
    	    if(num==9999){num=0;}
    	    delay();
    		//delay();                                 
      }
} 
void spi_fifo_init()										
{
		SpiaRegs.SPICCR.bit.SPISWRESET=0;   //清除SPI操作标志位,改变SPI配置
		SpiaRegs.SPICCR.all=0x000F;         //SPI配置寄存器,字符长度为16        
		SpiaRegs.SPICTL.all=0x000e;         //SPI操作寄存器,为主机模式    
		SpiaRegs.SPIBRR=0x0066;             //SPI波特率寄存器,         
		SpiaRegs.SPICCR.bit.SPISWRESET=1;   //完成SPI配置
}
void delay(void)
{
	int i,j;
	 for(i=0;i<500;i++)
      { for(j=0;j<300;j++);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -