75 lines
1.5 KiB
C
75 lines
1.5 KiB
C
|
|
#include "fram.h"
|
|
#include "inout.h"
|
|
|
|
//-------------------------------------------------------------------------------
|
|
// 读写函数
|
|
|
|
|
|
//----------------------------------------
|
|
// 访问命令
|
|
|
|
#define FRAM_CMD_WREN 0x06 // 设置写保护
|
|
#define FRAM_CMD_WRDI 0x04 // 清除写保护
|
|
#define FRAM_CMD_RDSR 0x05 // 读状态寄存器
|
|
#define FRAM_CMD_WRSR 0x01 // 写状态寄存器
|
|
#define FRAM_CMD_READ 0x03 // 读数据
|
|
#define FRAM_CMD_WRITE 0x02 // 写数据
|
|
|
|
|
|
//------------------------------------------------------------------------------------------
|
|
// 初始化 Fram
|
|
void InitFram(void)
|
|
{
|
|
InitFramSpi();
|
|
}
|
|
|
|
//------------------------------------------------------------------------------------------
|
|
// 读数据
|
|
int ReadFramData(u16 addr, u8 * pBuf, u16 len)
|
|
{
|
|
int i;
|
|
if (len != 0 && pBuf != NULL)
|
|
{
|
|
FramNceOn();
|
|
FramWriteByte(FRAM_CMD_READ); // 读命令
|
|
FramWriteByte(HIBYTE(addr));
|
|
FramWriteByte(LOBYTE(addr));
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
*pBuf++ = FramReadByte();
|
|
}
|
|
FramNceOff();
|
|
|
|
return len;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------------------
|
|
// 写数据
|
|
int WriteFramData(u16 addr, u8 * pBuf, u16 len)
|
|
{
|
|
int i;
|
|
|
|
if (len != 0 && pBuf != NULL)
|
|
{
|
|
FramNceOn();
|
|
FramWriteByte(FRAM_CMD_WREN); // 清除写保护
|
|
FramNceOff();
|
|
|
|
FramNceOn();
|
|
FramWriteByte(FRAM_CMD_WRITE); // 写命令
|
|
FramWriteByte(HIBYTE(addr));
|
|
FramWriteByte(LOBYTE(addr));
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
FramWriteByte(*pBuf++);
|
|
}
|
|
FramNceOff();
|
|
return len;
|
|
}
|
|
return 0;
|
|
}
|