?? eeprom.c.bak
字號(hào):
/*************************************************************************
filename EEPROM.c
designer 戴展波
date 2004/12/29
*************************************************************************/
#include "DSP28_Device.h"
#include "EEPROM.h"
/*********************************************************************
函數(shù)名: void EEPROM_Write_Enable(void)
目的: EEPROM的寫(xiě)使能
輸入: 無(wú)
輸出: 無(wú)
*********************************************************************/
void EEPROM_Write_Enable(void)
{
unsigned int i;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
//
//delay_time(250);
//發(fā)送SPI
SpiaRegs.SPITXBUF = WREN;
//
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
delay_time(60);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
//
//for(i = 0; i < 100; i++);
}
/*********************************************************************
函數(shù)名: void EEPROM_Write_Disable(void)
目的: EEPROM的寫(xiě)關(guān)閉
輸入: 無(wú)
輸出: 無(wú)
*********************************************************************/
void EEPROM_Write_Disable(void)
{
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
//
//delay_time(250);
//發(fā)送SPI
SpiaRegs.SPITXBUF = WRDI;
//
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
delay_time(100);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
//
//for(i = 0; i < 100; i++);
}
/*********************************************************************
函數(shù)名: unsigned int EEPROM_Read_Status(void)
目的: EEPROM的讀狀態(tài)
輸入: 無(wú)
輸出: 無(wú)
*********************************************************************/
unsigned int EEPROM_Read_Status(void)
{
unsigned int i,data;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
//發(fā)送SPI
SpiaRegs.SPITXBUF = RDSR;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//發(fā)送SPI
SpiaRegs.SPITXBUF = 0xff;
for(i = 0; i < 100; i++);
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_RxReady() == 0);
//發(fā)送SPI
data = SpiaRegs.SPIRXBUF;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
//delay_time(100);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
//
//delay_time(100);
//
return data;
}
/*********************************************************************
函數(shù)名: void EEPROM_Write_Status(unsigned int write_status)
目的: EEPROM的寫(xiě)狀態(tài)
輸入: write_status 寫(xiě)狀態(tài)寄存器的控制字
輸出: 無(wú)
*********************************************************************/
void EEPROM_Write_Status(unsigned int write_status)
{
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
//
//delay_time(250);
//發(fā)送SPI
SpiaRegs.SPITXBUF = WRSR;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//發(fā)送SPI
SpiaRegs.SPITXBUF = write_status;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
delay_time(100);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
//
for(i = 0; i < 100; i++);
}
/*********************************************************************
函數(shù)名: unsigned int EEPROM_Read(unsigned int address)
目的: EEPROM的讀
輸入: length 讀EEPROM的8位BYTE長(zhǎng)度
address 讀EEPROM的首地址,16BIT
輸出: 無(wú)
*********************************************************************/
unsigned int EEPROM_Read(unsigned int address)
{
unsigned int i,j;
unsigned int data;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
//
//delay_time(250);
//發(fā)送SPI
SpiaRegs.SPITXBUF = READ;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//發(fā)送SPI
SpiaRegs.SPITXBUF = address;
//for(i = 0; i < 10000; i++);
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//發(fā)送SPI
SpiaRegs.SPITXBUF = address << 8;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//發(fā)送SPI
SpiaRegs.SPITXBUF = 0x5500;
for(j = 0; j < 100; j++);
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_RxReady() == 0);
//發(fā)送SPI
data = SpiaRegs.SPIRXBUF;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
delay_time(50);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
//for(i = 0; i < 100; i++);
//
return data;
}
/*********************************************************************
函數(shù)名: void EEPROM_Write(unsigned int address,unsigned int *data)
目的: EEPROM的寫(xiě)
輸入: address 寫(xiě)地址
*data 寫(xiě)數(shù)據(jù)
輸出: 無(wú)
*********************************************************************/
void EEPROM_Write(unsigned int address,unsigned int data)
{
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
//
//delay_time(250);
//發(fā)送SPI
SpiaRegs.SPITXBUF = WRITE;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//發(fā)送SPI
SpiaRegs.SPITXBUF = address & 0xff00;
//
//for(i = 0; i < 10000; i++);
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//發(fā)送SPI
SpiaRegs.SPITXBUF = (address << 8) & 0xff00 ;
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//發(fā)送SPI
SpiaRegs.SPITXBUF = (data << 8) & 0xff00;
//
//delay_time(100);
//判斷SPI發(fā)送準(zhǔn)備好
while(Spi_TxReady() == 0);
//
delay_time(50);
//
GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
//
//for(i = 0; i < 10000; i++);
}
void delay_time(unsigned int data)
{
unsigned int i;
for(i = 0; i < data; i++);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -