#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; }