📄 x5043.c
字号:
//****************************************************************************
// 文件名: X5043.C
// 功 能: SPI EEPROM X5043 读写C程序
// 作 者: 乐志梅
// 版 本: V1.0
// 日 期: 2007.06.01
// 修 订:
// 说 明:
//****************************************************************************
//****************************************************************************
// @Project Includes
//****************************************************************************
#include "MAIN.H"
//****************************************************************************
// @Function ubyte Read_Data(unsigned char address)
//
//----------------------------------------------------------------------------
// @Description 从X5043的某个地址读取一个字节的数据
//
//----------------------------------------------------------------------------
// @Returnvalue 从X5043的某个地址读取的一个字节数据
//
//----------------------------------------------------------------------------
// @Parameters address X5043的地址
//
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
ubyte Read_Data(unsigned char address)
{
//读数据序列
CS_X5043 = 0; //片选信号激活(‘0’有效)
delay(50);
SSC0_vSendData(READ); //读数据指令
delay(500);
SSC0_vSendData(address); //发送地址
delay(500);
SSC0_RIC_IR = 0;
SSC0_vSendData(0xff); //为了产生SCLK信号,发送一个无效的数据
delay(500);
CS_X5043 = 1; //片选信号无效(‘1’无效)
delay(50);
return((ubyte)(SSC0_uwGetData())); //返回从X5043接收到的数据
}
//****************************************************************************
// @Function ubyte Read_Status(void)
//
//----------------------------------------------------------------------------
// @Description 主设备从X5043读取状态寄存器的值
//
//----------------------------------------------------------------------------
// @Returnvalue X5043状态寄存器的值
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
ubyte Read_Status(void)
{
//读状态寄存器序列
CS_X5043 = 0; //片选信号激活(‘0’有效)
delay(50);
SSC0_vSendData(RDSR); //读状态寄存器指令
delay(500);
SSC0_RIC_IR = 0;
SSC0_vSendData(0xff); //为了产生SCLK信号,发送一个无效的数据
delay(500);
CS_X5043 = 1; //片选信号无效(‘1’无效)
delay(50);
return((ubyte)(SSC0_uwGetData())); //返回从X5043接收到的数据
}
//****************************************************************************
// @Function void Write_Enable(void)
//
//----------------------------------------------------------------------------
// @Description X5043写使能
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
void Write_Enable(void)
{
//写使能序列
CS_X5043 = 0;
delay(50);
SSC0_vSendData(WREN); //写使能指令
delay(500);
CS_X5043 = 1;
delay(500);
}
//****************************************************************************
// @Function void Write_Disable(void)
//
//----------------------------------------------------------------------------
// @Description X5043写禁止
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
void Write_Disable(void)
{
//写禁止指令
CS_X5043 = 0;
delay(50);
SSC0_vSendData(WRDI); //写禁止指令
delay(500);
CS_X5043 = 1;
delay(50);
}
//****************************************************************************
// @Function void Write_Data(unsigned char address,unsigned char input_byte)
//
//----------------------------------------------------------------------------
// @Description 向X5043的某个地址写入一个字节
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters address X5043的地址
// input_byte 将要写入X5043的数据
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
void Write_Data(unsigned char address,unsigned char input_byte)
{
//写数据序列
CS_X5043 = 0;
delay(50);
SSC0_vSendData(WRITE); //写数据指令
delay(500);
SSC0_vSendData(address); //发送地址
delay(500);
SSC0_vSendData(input_byte); //发送将要写入X5043的数据
delay(500);
CS_X5043 = 1;
delay(50);
}
//****************************************************************************
// @Function ubyte Read_Data_Page(unsigned int address,unsigned int numBytes)
//
//----------------------------------------------------------------------------
// @Description 从X5043的某个页地址连续读取数据
//
//----------------------------------------------------------------------------
// @Returnvalue 从X5043的某个页地址读取的数据
//
//----------------------------------------------------------------------------
// @Parameters address X5043的地址
// numBytes 读取数据的个数
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
ubyte Read_Data_Page(unsigned int address,unsigned int numBytes)
{
unsigned int i,page_read_data[10];
//读数据序列
CS_X5043 = 0; //片选信号激活(‘0’有效)
delay(50);
SSC0_vSendData(READ); //读数据指令
delay(500);
SSC0_vSendData(address); //发送地址
delay(500);
SSC0_RIC_IR = 0;
for (i=0;i<numBytes;i++)
{
SSC0_vSendData(0xff); //为了产生SCLK信号,发送一个无效的数据
delay(500);
page_read_data[i]= SSC0_uwGetData();
}
CS_X5043 = 1; //片选信号无效(‘1’无效)
delay(50);
return(page_read_data[2]); //返回从X5043接收到的数据
}
//****************************************************************************
// @Function void Write_Data_Page(unsigned int address,unsigned int numBytes,unsigned char *src)
//
//----------------------------------------------------------------------------
// @Description 向X5043的某个页地址连续写入数据
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters address X5043的地址
// numBytes 写入数据的个数
// *src 写入数据指针
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
void Write_Data_Page(unsigned int address,unsigned int numBytes,unsigned char *src)
{
unsigned int page_write_data[10],i;
//写数据序列
CS_X5043 = 0;
delay(50);
SSC0_vSendData(WRITE); //写数据指令
delay(500);
SSC0_vSendData(address); //发送地址
delay(500);
for (i=0; i<numBytes; i++)
{
page_write_data[i] = *src++;
SSC0_vSendData(page_write_data[i]); //发送将要写入X5043的数据
delay(500);
}
CS_X5043 = 1;
delay(50);
}
//****************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -