75 lines
1.5 KiB
C
75 lines
1.5 KiB
C
|
|
|
|||
|
|
#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;
|
|||
|
|
}
|