• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签: DSP28335  

资源简介

TI公司的DSP28335采用SPI方式读取FM25CL64,根据其数据表,利用地址自增原理,简化了读写时间。

资源截图

代码片段和文件信息

// TI File $Revision: /main/2 $
// Checkin $Date: April 29 2005   11:08:24 $
//###########################################################################
//
// FILE:   DSP281x_Spi.c
//
// title:  DSP281x SPI Initialization & Support Functions.
//
//###########################################################################
// $TI Release: DSP281x Header Files V1.11 $
// $Release Date: September 26 2007 $
//###########################################################################

#include “DSP281x_Device.h“     // DSP281x Headerfile Include File
#include “DSP281x_Examples.h“   // DSP281x Examples Include File
#include “dspCtrl.h“

//---------------------------------------------------------------------------
// InitSPI: 
//---------------------------------------------------------------------------
// This function initializes the SPI(s) to a known state.
//
void InitSpi(void)
{
   // Initialize SPI-A:
   EALLOW;
   SpiaRegs.SPICCR.all=0x0007;       //16-bit character No Loopback mode
   //SpiaRegs.SPICTL.all=0x0017;       //Interrupt enabled Master/Slave XMIT enabled
   SpiaRegs.SPICTL.all=0x0006;       //Interrupt disabled
   //SpiaRegs.SPISTS.all=0x0000;
   SpiaRegs.SPIBRR = 3;           // Baud rate  30Mhz /(3 + 1) = 7.5MHz
   SpiaRegs.SPIPRI.all = 0x30; // free run
   Init_Spi_GPIO();
   SpiaRegs.SPICCR.all=0x0087;//使SPI退出复位状态
   SpiaRegs.SPICCR.bit.CLKPOLARITY = 0;
   SpiaRegs.SPICTL.bit.CLK_PHASE   = 1;
   EDIS;
   //tbd...
 
}

void Init_Spi_GPIO(void)
{
   EALLOW;
   GpioMuxRegs.GPFMUX.all |= 0x0f;
   GpioMuxRegs.GPFMUX.bit.SPISTEA_GPIOF3 = As_GPIO;
   GpioMuxRegs.GPFDIR.bit.GPIOF3 = OUT_DIR;
   GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
   EDIS;
}

Uint16 EEPROM_Read(Uint16 address)
{
Uint16 data;
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
SpiWrite(READ);
      SpiWrite(address & 0xff00);
SpiWrite(address<<8);
data = SpiWrite(0x00);
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
return data;
}

void EEPROM_Write_Enable(void)
{
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
SpiWrite(WREN);
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
}


void EEPROM_Write(Uint16 addressUint16 data)
{
      Uint16 i;
EEPROM_Write_Enable();
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
SpiWrite(WRITE);
SpiWrite(address & 0xff00);
SpiWrite(address<<8);
SpiWrite(data << 8);
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1; 
}

Uint16 EEPROM_Read_Status()
{
Uint16 i1data;
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
SpiWrite(RDSR);
data = SpiWrite(0x00);
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
//判断SPI发送准备好
return data;
}

Uint16 SpiWrite(Uint16 data)
{
   Uint16 ret;
   SpiaRegs.SPITXBUF = data;
   while(Spi_RxReady() == 0);
   ret = SpiaRegs.SPIRXBUF;
   return ret;
}

Uint16 Spi_TxReady(void)
{
Uint16 in;
if(SpiaRegs.SPISTS.bit.BUFFULL_FLAG == 1)
{
in = 0;
}
else
{
in = 1;
}
return(in);
}

Uint16 Spi_RxReady(void)
{
Uint16 im;
if(SpiaRegs.SPISTS.bit.INT_FLAG == 1)
{
im 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3241  2008-07-23 20:32  08643012812_fm25cl64\DSP281x_Spi.c

     文件       6565  2008-07-23 20:12  08643012812_fm25cl64\DSP281x_Spi.h

     文件        142  2008-07-23 20:27  08643012812_fm25cl64\main.c

     目录          0  2013-03-25 10:25  08643012812_fm25cl64

----------- ---------  ---------- -----  ----

                10166                    5


评论

共有 条评论