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

📄 x5043.c

📁 英飞凌C166之XC164CS的eeprom数据读写程序
💻 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 + -