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

📄 fm25l512.c

📁 一个DSP2812的源代码
💻 C
字号:
/*******************************************************************************
  Copyright (c) 2005,2006 北京中盛华旭电子科技有限公司(VSUNTEK, Ltd.)
  FileName: FM25L512.C
  Author: 王在东
  Date: 2008.05.20
  Version: 1.0
  Description: SPI读写时序.
  History:
    <Author>wzd
  <Date>  
  <Ver>    
  <Desc>  
  Todo:
*******************************************************************************/

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

// Prototype statements for functions found within this file.
void delay_loop(Uint32 delay);
void error(void);
void SPI_WriteByte(Uint32 Data);
unsigned int  SPI_ReadByte();
unsigned int FM25L512_Write(Uint32 Addr,Uint32 Length,Uint32 *Data);
unsigned int FM25L512_Read(Uint32 Addr,Uint32 Length,Uint32 *Data);






// Some Useful local functions
void delay_loop(Uint32 delay)
{
    long      i;
    for (i = 0; i < delay; i++) {}
}


void error(void)
{
    asm("     ESTOP0");  // test failed!! Stop!
    for (;;);
}


void  SPI_WriteByte(Uint32 Data)        //往FRAM中写入一个字节
{
    int  i;
   // delay_loop(10);
    for(i=0;i<8;i++)
    {
       
        if((Data<<i) & 0x80)
            MOSI=1;
        else
            MOSI=0; 
        SCK_H;
        delay_loop(10);
        SCK_L;
		delay_loop(10);

    }
    
}

unsigned int  SPI_ReadByte()        //读取FRAM中的一个字节
{
    unsigned int  i;
    unsigned int  temp_buffer=0;

    for(i=0;i<8;i++)
    {
       
        temp_buffer<<=1;
        if(MISO)
            temp_buffer+=1;
         SCK_H;
         delay_loop(10);
         SCK_L;
         delay_loop(10);
    }

    return temp_buffer;
}


unsigned int FM25L512_Write(Uint32 Addr,Uint32 Length,Uint32 *Data)        //往FRAM中写入数据
{
    unsigned int i;
    SCK_L;
    CS_H;
	CS_L;
    delay_loop(10);
    SPI_WriteByte(WREN);                     // write enable command    
    SCK_L;
    CS_H;
    delay_loop(10);
    CS_L;
    SPI_WriteByte(WRSR);                        // write memory command
    SPI_WriteByte(0xC2);
    SCK_L;
	CS_H;
    delay_loop(10);
	CS_L;
    SPI_WriteByte(WRITE);                   // high 8 bits address
    SPI_WriteByte(Addr>>8);                   // high 8 bits address
    SPI_WriteByte((unsigned int)(0x00ff & Addr));    // low 8 bits address
    for(i=0;i<Length;i++)
    {
        SPI_WriteByte(*Data);
        Data++;
    }
    SCK_L;
    CS_H;
    delay_loop(10);
    CS_L;
    SPI_WriteByte(WRDI);                     // write disable command
    CS_H;
    SCK_L;
    return 0;
}

unsigned int FM25L512_Read(Uint32 Addr,Uint32 Length,Uint32 *Data)        //读FRAM中的信息
{
    unsigned int i;
    SCK_L;
    CS_H;
    CS_L;    
    SPI_WriteByte(READ);                        // read memory command
    SPI_WriteByte(Addr>>8);                   // high 8 bits address
    SPI_WriteByte((unsigned int)(0x00ff & Addr));    // low 8 bits address
    for(i=0;i<Length;i++)
    {
        *Data = SPI_ReadByte();
        Data++;
    }
    CS_H;
    SCK_L;
    return 0;
}

//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

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