📄 at25640.c
字号:
#include "wx_lrwpan.h"
#ifdef LRWPAN_RFD
#define WREN 0X06
#define WRDI 0X04
#define READDAT 0X03
#define WRITEDAT 0x02
//*****************************************************************************************
//函数名:SpisendByte(INT8U dat)
//输入:发送的数据
//输出:无
//功能描述:SPI发送一个字节
//*****************************************************************************************
INT8U SpiTxRxByte(INT8U dat)
{
INT8U i,temp;
temp = 0;
SCK = 0;
for(i=0; i<8; i++)
{
if(dat & 0x80)
{
MOSI = 1;
}
else MOSI = 0;
dat <<= 1;
SCK = 1;
asm("nop");
temp <<= 1;
if(MISO)temp++;
SCK = 0;
asm("nop");
}
return temp;
}
//**********************************************************************************
//函数名:void EEPROM_WREN(void)
//输入:无
//输出:无
//功能描述:EEPROM写使能
//**********************************************************************************
void EEPROM_WREN(void)
{
CS_25640 = 0;
SpiTxRxByte(WREN);
CS_25640 = 1;
}
//**********************************************************************************
//函数名:void EEPROM_WRDI(void)
//输入:无
//输出:无
//功能描述:EEPROM写使能关闭
//**********************************************************************************
void EEPROM_WRDI(void)
{
CS_25640 = 0;
SpiTxRxByte(WRDI);
CS_25640 = 1;
}
//**********************************************************************************
//函数名:void EEPROM_WRITE(unsigned int ADDR, unsigned char dat)
//输入:ADDR-写入地址,dat-写入的数据。
//输出:无
//功能描述:EEPROM写入一个字节的数据。
//**********************************************************************************
void EEPROM_WRITE_BYTE(INT16U ADDR, INT8U dat)
{
INT8U temp;
EEPROM_WREN(); //打开写使能
CS_25640 = 0;
SpiTxRxByte(WRITEDAT); //写入写数据命令
temp = ADDR >> 8;
SpiTxRxByte(temp); //写入高位地址
temp = ADDR;
SpiTxRxByte(temp); //写入低位地址
SpiTxRxByte(dat); //写入数据
CS_25640 = 1;
EEPROM_WRDI(); //关闭写使能
}
//**********************************************************************************
//函数名:unsigned char EEPROM_WRITE(unsigned int ADDR)
//输入:无。
//输出:ADDR-读出地址,
//功能描述:EEPROM读出一个字节的数据。
//**********************************************************************************
INT8U EEPROM_READ_BYTE(INT16U ADDR)
{
INT8U temp;
CS_25640 = 0;
SpiTxRxByte(READDAT); //写入读数据命令
temp = ADDR >> 8;
SpiTxRxByte(temp); //写入高位地址
temp = ADDR;
SpiTxRxByte(temp); //写入低位地址
temp = SpiTxRxByte(0); //读出数据
CS_25640 = 1;
return temp;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -