optical/NxFuncs/fram/fram.c

75 lines
1.5 KiB
C
Raw Normal View History

2025-09-04 01:45:08 +00:00
#include "fram.h"
#include "inout.h"
//-------------------------------------------------------------------------------
// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
//----------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define FRAM_CMD_WREN 0x06 // <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
#define FRAM_CMD_WRDI 0x04 // <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
#define FRAM_CMD_RDSR 0x05 // <20><>״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>
#define FRAM_CMD_WRSR 0x01 // д״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>
#define FRAM_CMD_READ 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define FRAM_CMD_WRITE 0x02 // д<><D0B4><EFBFBD><EFBFBD>
//------------------------------------------------------------------------------------------
// <20><>ʼ<EFBFBD><CABC> Fram
void InitFram(void)
{
InitFramSpi();
}
//------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int ReadFramData(u16 addr, u8 * pBuf, u16 len)
{
int i;
if (len != 0 && pBuf != NULL)
{
FramNceOn();
FramWriteByte(FRAM_CMD_READ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FramWriteByte(HIBYTE(addr));
FramWriteByte(LOBYTE(addr));
for (i = 0; i < len; i++)
{
*pBuf++ = FramReadByte();
}
FramNceOff();
return len;
}
return 0;
}
//------------------------------------------------------------------------------------------
// д<><D0B4><EFBFBD><EFBFBD>
int WriteFramData(u16 addr, u8 * pBuf, u16 len)
{
int i;
if (len != 0 && pBuf != NULL)
{
FramNceOn();
FramWriteByte(FRAM_CMD_WREN); // <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
FramNceOff();
FramNceOn();
FramWriteByte(FRAM_CMD_WRITE); // д<><D0B4><EFBFBD><EFBFBD>
FramWriteByte(HIBYTE(addr));
FramWriteByte(LOBYTE(addr));
for (i = 0; i < len; i++)
{
FramWriteByte(*pBuf++);
}
FramNceOff();
return len;
}
return 0;
}