Files

76 lines
2.7 KiB
C
Raw Permalink Normal View History

2026-06-22 09:19:00 +08:00
#ifndef __SPI_FLASH_H
#define __SPI_FLASH_H
#include "bsp.h"
#define LOG_SAV_FLAG (0xAA5555AA)
#define LOG_INFO_SAV_FLAG (0xA55A)
#define SpiFlashClrNss() SPI_NSS_CLR()
#define SpiFlashSetNss() SPI_NSS_SET()
#define SPIFLASH_CMD_WRITE 0x02 /* Write to Memory instruction */
#define SPIFLASH_CMD_WRSR 0x01 /* Write Status Register instruction */
#define SPIFLASH_CMD_WREN 0x06 /* Write enable instruction */
#define SPIFLASH_CMD_READ 0x03 /* Read from Memory instruction */
#define SPIFLASH_CMD_RDSR 0x05 /* Read Status Register instruction */
#define SPIFLASH_CMD_RDID 0x9F /* Read identification */
#define SPIFLASH_CMD_SE 0x20 /* 4KSector Erase instruction */
#define SPIFLASH_CMD_BE 0xC7 /* Bulk Erase instruction */
#define SPIFLASH_WIP_FLAG 0x01 /* Write In Progress (WIP) flag */
#define SPIFLASH_DUMMY_BYTE 0xA5
#define SPIFLASH_PAGESIZE 0x100
#define SPIFLASH_SECTORSIZE 4096
#define SPIFLASH_M25P128_ID 0x202018
#define SPIFLASH_M25P64_ID 0x202017
void SpiFlashEraseChip(void);
void SpiFlashEraseSector(uint32_t SectorAddr);
void SpiFlashWriteAnyLengthData(uint8_t* wData, uint32_t wAddr, uint16_t wLen);
void SpiFlashReadAnyLengthData(uint8_t* rData, uint32_t rAddr, uint16_t rLen);
uint32_t SpiFlashReadId(void);
/* USER CODE BEGIN */
#define SPIFLASH_SIZE 16777216
#define SPIFLASH_SECTOR_NUM 4096
#define GATEWEY_PARA_SAV_ADDR 0x00
#define GATEWEY_PARA_SAV_SECTOR 0x00
#define LOG_INFO_START_SECTOR 0x01
#define LOG_SAV_START_SECTOR 0x02
//#if (LORA_MODULE == WH_LR36_L)
//#define LOG_SAV_SIZE 78
//#define LOG_SAV_NUM_SECTOR 52 //每扇区存储数量
//#else
//#define LOG_SAV_SIZE 78 //150
//#define LOG_SAV_NUM_SECTOR 52 //27 //每扇区存储数量
//#endif
#define LOG_SAV_SIZE_MAX 256
#define LOG_SAV_NUM_MAX ((SPIFLASH_SECTOR_NUM - LOG_SAV_START_SECTOR) * LOG_SAV_NUM_SECTOR)
typedef struct {
uint32_t LogSavFlag; //日志存储标志
uint32_t LogIdx; //日志序号
uint32_t LogEndAddr; //日志结束地址
uint32_t TimeStamp; //存储时间
}LogHeader_t, *LogHeader;
void SavMMC5983Calib(uint8_t *wData, uint32_t wLen);
void ReadMMC5983Calib(uint8_t *rData, uint32_t rLen);
void LogInit(void);
uint32_t ReadLogNum(void);
uint32_t ReadLastLogEndAddr(void);
uint32_t ReadFirstLogStartAddr(void);
void SavLogNum(uint32_t LogNum);
void AddLog(uint8_t *wData, uint32_t wLen);
int ReadLog(LogHeader Header, uint8_t **wData, uint32_t LogIdx);
int ReadPara(uint8_t *Para, uint32_t ParaLen);
int WritePara(uint8_t *Para, uint32_t ParaLen);
/* USER CODE END */
#endif