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

📄 spi-eerom.c

📁 dsp2812利用SPI接口读取EEPROM的程序
💻 C
字号:
#include "DSP281x_Device.h"     // DSP281x Headerfile Include File
#include "DSP281x_GlobalPrototypes.h"
#include "f2812a.h"
//#include "DSP281x_Examples.h"   // DSP281x Examples Include File
//#include "f2812a.h"
// Prototype statements for functions found within this file.
// interrupt void ISRTimer2(void);
//使用中断:interrupt void ISRTimer2(void);
//变量声明


void delay_loop(void);
void spi_dlb8(void);
void spi_xmit(int a);
int  spi_rev();
void spi_fifo_init(void);
unsigned int Ret_var1=0;
unsigned int Ret_var2=0;

//void dac_loop(void);
void main(void)
{

  
   
   //Step 1,初始化系统控制寄存器、锁相环、看门狗以及时钟默认状态
//   int i;
   //为充分发挥片上RAM M0/M1/L0/L1/H0的特性,设置下列寄存器
   //DevEmuRegs.M0RAMDFT=0x0300;
   //DevEmuRegs.M1RAMDFT=0x0300;
   //DevEmuRegs.L0RAMDFT=0x0300;
   //DevEmuRegs.L1RAMDFT=0x0300;
   //DevEmuRegs.H0RAMDFT=0x0300;
   
   InitSysCtrl();
   //HISPCP/LOSPCP预定标定寄存器设置
   SysCtrlRegs.HISPCP.all=0x0001;
   SysCtrlRegs.LOSPCP.all=0x0002;
   
   
   
   //Step3,初始化外设中断向量表
   //屏蔽和清除所有CPU中断
   DINT;
   IER=0x0000;
   IFR=0x0000;
   

   

   //初始化PIE向量表
   //InitPieVectTable()函数参考中断一章中DSP28_DefaultIsr.c相关代码
   //InitPieVectTable();
   
   //Step4,使用特定的函数重新分配向量使能中断
   spi_fifo_init();// 初始化Spi FIFO
   spi_dlb8();    //设置自测试模式
   
   //Step5,循环等待
   asm ("ESTOP0");//设置软断点
  // for(;;);
}

   
   //Step5,所有中断服务程序和函数
   void delay_loop()
   {
      long i;
      for (i=0;i<1000000;i++){}
   }
   

   
   //测试1,SPI 8位字符,自测试,主模式,上升沿,波特率设置0x07F

   void spi_xmit(int a)
   {
      SpiaRegs.SPITXBUF=a;
      //SpiaRegs.SPIDAT=a;
   }
   
   int spi_rev()
   {
      return SpiaRegs.SPIRXBUF;
   }
   
   void spi_fifo_init()
   {
      //初始化SPI FIFO寄存器
      SpiaRegs.SPIFFTX.all=0xE040;
      SpiaRegs.SPIFFRX.all=0x204F;
      SpiaRegs.SPIFFCT.all=0x0;
   }
    //测试1,SPI 8位字符,自测试,主模式,上升沿,波特率设置0x07F
   void spi_dlb8()
   {

       SpiaRegs.SPICCR.all=0x000F;//SPI复位,设置时钟为上升沿,8位字符长度
       SpiaRegs.SPICTL.all=0x0006;// 使能主模式,标准相位
                                  // 使能Talk,SPIINT屏蔽
       SpiaRegs.SPIBRR=0x0009;//设置波特率
       
       //Step2,配置芯片的通用数字I/O为希望的功能引脚
       EALLOW;
       GpioMuxRegs.GPFMUX.all=0x000F;//设置GPIO工作在SPI的功能
                         //Port F MUX-x000 0000 0000 1111
       EDIS;
       
       //退出复位状态
       SpiaRegs.SPICCR.all=0x008F;//使SPI退出复位状态
                                  //使能自测试模式
       //位Changes for the test
       //var3=WREN;
       spi_xmit(WREN);//发送SPI
       
       
       
       SpiaRegs.SPICTL.bit.TALK=0;
       SpiaRegs.SPICTL.bit.TALK=1;
       //SpiaRegs.SPICCR.bit.SPISWRESET=1;
       
       spi_xmit(WRITE);
       spi_xmit(0x0F);
       spi_xmit(0x0A);
       spi_xmit(0x56);
       
       
       while(1){
       spi_xmit(0x55);
       //
       }
       
       
       //SpiaRegs.SPICCR.bit.SPISWRESET=0;
       //SpiaRegs.SPICCR.bit.SPISWRESET=1;
       SpiaRegs.SPICTL.bit.TALK=0;
       SpiaRegs.SPICTL.bit.TALK=1;
       
       spi_xmit(READ);
       spi_xmit(0x0F);
       spi_xmit(0x0A);
       Ret_var1=spi_rev();
       
       spi_xmit(RDSR);
       Ret_var2=spi_rev();
       
       SpiaRegs.SPICCR.bit.SPISWRESET=0;
       //while (SpiaRegs.SPIFFRX.bit.RXFFST!=1) {}
       //Test_flag4=SpiaRegs.SPIRXBUF;
       //if (Test_flag4!=0x4141) error(1);
       //Test_status[Test_var]=0x8000;//刷新测试状态
       //Test_var++;
   }     
   

⌨️ 快捷键说明

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