121 lines
3.6 KiB
C
121 lines
3.6 KiB
C
|
|
/*
|
|||
|
|
*********************************************************************************************************
|
|||
|
|
* IAR Development Kits
|
|||
|
|
* on the
|
|||
|
|
*
|
|||
|
|
* M451
|
|||
|
|
*
|
|||
|
|
* Filename : spi_fram.h
|
|||
|
|
* Version : V1.00
|
|||
|
|
* Programmer(s) : Qian Xianghong
|
|||
|
|
*********************************************************************************************************
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef USER_SPI_FRAM_PRESENT
|
|||
|
|
#define USER_SPI_FRAM_PRESENT
|
|||
|
|
|
|||
|
|
// FRAM<41>洢<EFBFBD>滮<EFBFBD><E6BBAE><EFBFBD>£<EFBFBD>
|
|||
|
|
// 0~21: <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB>CRC<52><43>)
|
|||
|
|
// 22~4117: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>4K<34><4B><EFBFBD>棬<EFBFBD><E6A3AC>δд<CEB4><D0B4>SFlash<73>У<EFBFBD>
|
|||
|
|
|
|||
|
|
// ---------- GPS ----------
|
|||
|
|
// 4118~4125: GPSѭ<53><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB>CRC<52><43>)
|
|||
|
|
// 4126~16290: GPS<50><53>¼<EFBFBD><C2BC>ÿ<EFBFBD><C3BF>15<31>ֽڣ<D6BD><DAA3><EFBFBD>810 + 1<><31><EFBFBD><EFBFBD>12165<36>ֽڣ<D6BD><DAA3><EFBFBD>4<EFBFBD><34>һ<EFBFBD><D2BB><EFBFBD>㣬<EFBFBD>ɱ<EFBFBD><C9B1><EFBFBD>54<35><34><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// ---------- GPRS (<28><>Ϊʱ<CEAA><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD>ʵ<EFBFBD><CAB5>粻<EFBFBD><E7B2BB><EFBFBD><EFBFBD>GPRS<52><53>¼<EFBFBD><C2BC>----------
|
|||
|
|
// 16291~16298: GPRSѭ<53><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB>CRC<52><43>)
|
|||
|
|
// 16299~32098: GPRS<52><53>¼<EFBFBD><C2BC>ÿ<EFBFBD><C3BF>158<35>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>99 + 1<><31><EFBFBD><EFBFBD>15800<30>ֽڣ<D6BD>
|
|||
|
|
|
|||
|
|
// ---------- BD_GPRS (<28><>Ϊʱ<CEAA><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD>ʵ<EFBFBD><CAB5>粻<EFBFBD><E7B2BB><EFBFBD><EFBFBD>GPRS<52><53>¼<EFBFBD><C2BC>----------
|
|||
|
|
// 32099~32106: BD_GPRSѭ<53><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB>CRC<52><43>)
|
|||
|
|
// 32107~32580: BD_GPRS<52><53>¼<EFBFBD><C2BC>ÿ<EFBFBD><C3BF>158<35>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD>2 + 1<><31><EFBFBD><EFBFBD>474<37>ֽڣ<D6BD>
|
|||
|
|
// 32581~32656: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ76<37>ֽڣ<D6BD>
|
|||
|
|
|
|||
|
|
// 32657~32767: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>111<31>ֽڣ<D6BD>
|
|||
|
|
|
|||
|
|
// GPS<50><53>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD>810+1<><31>)
|
|||
|
|
#define FRAM_GPS_DATA_COUNT 810
|
|||
|
|
// GPRS<52><53>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD>117+1<><31><EFBFBD><EFBFBD>
|
|||
|
|
#define FRAM_GPRS_DATA_COUNT 99
|
|||
|
|
// BD-GPRS<52><53>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD>2+1<><31><EFBFBD><EFBFBD>
|
|||
|
|
#define FRAM_BD_GPRS_DATA_COUNT 2
|
|||
|
|
|
|||
|
|
// <20>洢<EFBFBD><E6B4A2>ʼ<EFBFBD><CABC>ַ
|
|||
|
|
#define FRAM_UPGRADE_INFO_BASE 0
|
|||
|
|
#define FRAM_UPGRADE_DATA_BASE 22 // =0+22
|
|||
|
|
|
|||
|
|
// ---------- <20>۳<EFBFBD>-GPS ----------
|
|||
|
|
#define FRAM_GPS_INFO_BASE 4118 // =22+4096
|
|||
|
|
#define FRAM_GPS_DATA_BASE 4126 // =4118+8
|
|||
|
|
|
|||
|
|
// ---------- GPRS(<28><>Ϊʱ<CEAA><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD>ʵ<EFBFBD><CAB5>粻<EFBFBD><E7B2BB><EFBFBD><EFBFBD>GPRS<52><53>¼<EFBFBD><C2BC> ----------
|
|||
|
|
#define FRAM_GPRS_INFO_BASE 16291 // =4126+15*811
|
|||
|
|
#define FRAM_GPRS_DATA_BASE 16299 // =16291+8
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define FRAM_GPRS_BD_INFO_BASE 32099 // =16299+158*100
|
|||
|
|
#define FRAM_GPRS_BD_DATA_BASE 32107 // =32099+8
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>洢λ<E6B4A2><CEBB>
|
|||
|
|
#define FRAM_ALIYUN_SECRET_BASE 32581 // =32107+158*3
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>: 32K bytes
|
|||
|
|
#define FRAM_SIZE 32768ul
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void FRAM_Init();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
void FRAM_Open();
|
|||
|
|
|
|||
|
|
void FRAM_ReadID();
|
|||
|
|
uint8_t FRAM_WriteEN();
|
|||
|
|
uint16_t FRAM_BufferWrite(uint32_t Addr, uint8_t *buf, uint32_t nbytes);
|
|||
|
|
uint16_t FRAM_BufferRead(uint32_t Addr, uint8_t *buf, uint32_t nbytes);
|
|||
|
|
uint32_t FRAM_BufferVerify(uint32_t Addr, uint8_t *buf, uint32_t nbytes);
|
|||
|
|
void FRAM_Sleep(uint8_t sleep);
|
|||
|
|
|
|||
|
|
#pragma pack(push, 1)
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
uint16_t check; // <20><>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0x55AA
|
|||
|
|
volatile uint16_t rdPtr;
|
|||
|
|
volatile uint16_t wtPtr;
|
|||
|
|
uint16_t crc; // У<><D0A3>λ
|
|||
|
|
} loopbuff_info_t;
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
loopbuff_info_t info;
|
|||
|
|
uint16_t itemSize;
|
|||
|
|
uint16_t maxItemCount;
|
|||
|
|
uint32_t info_base;
|
|||
|
|
union
|
|||
|
|
{
|
|||
|
|
uint32_t data_base;
|
|||
|
|
uint8_t *data;
|
|||
|
|
};
|
|||
|
|
} loopbuff_t;
|
|||
|
|
|
|||
|
|
#pragma pack(pop)
|
|||
|
|
|
|||
|
|
// ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
|
|||
|
|
|
|||
|
|
void LoopBuff_Create(loopbuff_t *lpbuf, uint16_t itemSize, uint16_t maxItemCount, uint32_t info_base, uint32_t data_base);
|
|||
|
|
|
|||
|
|
void LoopBuff_Clear(loopbuff_t *lpbuf);
|
|||
|
|
uint16_t LoopBuff_GetCount(loopbuff_t *lpbuf);
|
|||
|
|
uint16_t LoopBuff_GetNextPtr(loopbuff_t *lpbuf, uint16_t ptr);
|
|||
|
|
void LoopBuff_PutItem(loopbuff_t *lpbuf, uint8_t *item);
|
|||
|
|
void LoopBuff_RemoveItems(loopbuff_t *lpbuf, uint16_t count);
|
|||
|
|
uint32_t LoopBuff_GetDataPos(loopbuff_t *lpbuf, uint16_t ptr);
|
|||
|
|
uint8_t *LoopBuff_GetDataPtr(loopbuff_t *lpbuf, uint16_t ptr);
|
|||
|
|
|
|||
|
|
// <20><>FRAM<41><4D>ȡ<EFBFBD><C8A1>¼<EFBFBD><C2BC>ǰ<EFBFBD><C7B0>2<EFBFBD><32><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>־0x55AA<41><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊcrc<72><63>
|
|||
|
|
uint32_t FRAM_LoadInfo(uint32_t Addr, uint8_t *buf, uint32_t nbytes);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>FRAM<41>У<EFBFBD>ǰ<EFBFBD><C7B0>2<EFBFBD><32><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>־0x55AA<41><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊcrc<72><63>
|
|||
|
|
uint32_t FRAM_SaveInfo(uint32_t Addr, uint8_t *buf, uint32_t nbytes);
|
|||
|
|
|
|||
|
|
#endif
|