2026-03-20 21:16:58 +08:00
|
|
|
#include "../main/SystemInclude.h"
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
void FRAMInit(void)
|
|
|
|
|
{
|
2026-03-20 21:19:04 +08:00
|
|
|
// FRAM_WP_OUTPUT();
|
|
|
|
|
// FRAM_CS_OUTPUT();
|
|
|
|
|
// DisableFRAM();
|
|
|
|
|
// DisableFRAMWrite();
|
2026-03-20 21:16:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
void ProtectFRAM(void)
|
|
|
|
|
{
|
2026-03-20 21:19:04 +08:00
|
|
|
// EnableFRAMWrite();
|
|
|
|
|
// EnableFRAM();
|
|
|
|
|
//
|
|
|
|
|
// SPIWriteData(FRAM_WREN);
|
|
|
|
|
// SPIWriteData(FRAM_WRSR);
|
|
|
|
|
// SPIWriteData(FULL_ARRAY_PROTECTION);
|
|
|
|
|
// SPIWriteData(FRAM_WRDI);
|
|
|
|
|
//
|
|
|
|
|
// DisableFRAM();
|
|
|
|
|
// DisableFRAMWrite();
|
2026-03-20 21:16:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
void UnProtectFRAM(void)
|
|
|
|
|
{
|
2026-03-20 21:19:04 +08:00
|
|
|
// EnableFRAMWrite();
|
|
|
|
|
// EnableFRAM();
|
|
|
|
|
//
|
|
|
|
|
// SPIWriteData(FRAM_WREN);
|
|
|
|
|
// SPIWriteData(FRAM_WRSR);
|
|
|
|
|
// SPIWriteData(NO_PROTECTION);
|
|
|
|
|
// SPIWriteData(FRAM_WREN);
|
|
|
|
|
//
|
|
|
|
|
// DisableFRAM();
|
2026-03-20 21:16:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
void WriteByteToFRAM(u16 address, u8 data)
|
|
|
|
|
{
|
2026-03-20 21:19:04 +08:00
|
|
|
// EnableSPI(SPI_MODE3);
|
2026-03-20 21:16:58 +08:00
|
|
|
|
2026-03-20 21:19:04 +08:00
|
|
|
// UnProtectFRAM();
|
|
|
|
|
//
|
|
|
|
|
// EnableFRAM();
|
|
|
|
|
// SPIWriteData(FRAM_WRITE);
|
|
|
|
|
// SPIWriteData(address>>8);
|
|
|
|
|
// SPIWriteData(address);
|
|
|
|
|
// SPIWriteData(data);
|
|
|
|
|
// DisableFRAM();
|
2026-03-20 21:16:58 +08:00
|
|
|
|
2026-03-20 21:19:04 +08:00
|
|
|
// ProtectFRAM();
|
|
|
|
|
// DisableSPI();
|
2026-03-20 21:16:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
u8 ReadByteFromFRAM(u16 address)
|
|
|
|
|
{
|
2026-03-20 21:19:04 +08:00
|
|
|
// u8 data;
|
|
|
|
|
//
|
|
|
|
|
// EnableSPI(SPI_MODE3);
|
|
|
|
|
//
|
|
|
|
|
// EnableFRAM();
|
|
|
|
|
// SPIWriteData(FRAM_READ);
|
|
|
|
|
// SPIWriteData(address>>8);
|
|
|
|
|
// SPIWriteData(address);
|
|
|
|
|
// data = SPIReadData();
|
|
|
|
|
// DisableFRAM();
|
|
|
|
|
//
|
|
|
|
|
// DisableSPI();
|
|
|
|
|
//
|
|
|
|
|
// return data;
|
2026-03-20 21:16:58 +08:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
void WriteMultiByteToFRAM(u16 address, u8 *pointer, u8 length)
|
|
|
|
|
{
|
2026-03-20 21:19:04 +08:00
|
|
|
// u8 I;
|
|
|
|
|
//
|
|
|
|
|
// EnableSPI(SPI_MODE3);
|
|
|
|
|
// delay_ms(1);
|
|
|
|
|
//
|
|
|
|
|
// UnProtectFRAM();
|
|
|
|
|
//
|
|
|
|
|
// EnableFRAM();
|
|
|
|
|
// SPIWriteData(FRAM_WRITE);
|
|
|
|
|
// SPIWriteData(address>>8);
|
|
|
|
|
// SPIWriteData(address);
|
|
|
|
|
// for(I=0; I<length; I++)
|
|
|
|
|
// {
|
|
|
|
|
// SPIWriteData(*pointer);
|
|
|
|
|
// pointer++;
|
|
|
|
|
// }
|
2026-03-20 21:16:58 +08:00
|
|
|
|
2026-03-20 21:19:04 +08:00
|
|
|
// DisableFRAM();
|
2026-03-20 21:16:58 +08:00
|
|
|
|
2026-03-20 21:19:04 +08:00
|
|
|
// ProtectFRAM();
|
|
|
|
|
// DisableSPI();
|
2026-03-20 21:16:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
void ReadMultiByteFromFRAM(u16 address, u8 *pointer, u8 length)
|
|
|
|
|
{
|
2026-03-20 21:19:04 +08:00
|
|
|
// u16 I;
|
|
|
|
|
//
|
|
|
|
|
// EnableSPI(SPI_MODE3);
|
|
|
|
|
// delay_ms(1);
|
|
|
|
|
//
|
|
|
|
|
// EnableFRAM();
|
|
|
|
|
// SPIWriteData(FRAM_READ);
|
|
|
|
|
// SPIWriteData(address>>8);
|
|
|
|
|
// SPIWriteData(address);
|
|
|
|
|
// for(I=0; I<length; I++) *(pointer+I) = SPIReadData();
|
|
|
|
|
// DisableFRAM();
|
|
|
|
|
//
|
|
|
|
|
// DisableSPI();
|
2026-03-20 21:16:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/******************************************************************************/
|
|
|
|
|
u8 ReadFRAMDeviceID(void)
|
|
|
|
|
{
|
2026-03-20 21:19:04 +08:00
|
|
|
// u8 temp[8];
|
|
|
|
|
//
|
|
|
|
|
// //DisableSPI();
|
|
|
|
|
// DisableFRAM();
|
|
|
|
|
// EnableSPI(SPI_MODE3);
|
|
|
|
|
// delay_10us(100);
|
|
|
|
|
// EnableFRAM();
|
|
|
|
|
//
|
|
|
|
|
// SPIWriteData(FRAM_RDID);
|
|
|
|
|
// delay_10us(10);
|
|
|
|
|
// temp[0] = SPIReadData();
|
|
|
|
|
// temp[1] = SPIReadData();
|
|
|
|
|
// temp[2] = SPIReadData();
|
|
|
|
|
// temp[3] = SPIReadData();
|
|
|
|
|
// temp[4] = SPIReadData();
|
|
|
|
|
// temp[5] = SPIReadData();
|
|
|
|
|
// temp[6] = SPIReadData();
|
|
|
|
|
// temp[7] = SPIReadData();
|
|
|
|
|
// DisableFRAM();
|
|
|
|
|
//// DisableSPI();
|
|
|
|
|
//
|
|
|
|
|
// if(temp[0] != 0x04) return 1;
|
|
|
|
|
// if(temp[1] != 0x7f) return 1;
|
2026-03-20 21:16:58 +08:00
|
|
|
return 0;
|
|
|
|
|
}
|