139 lines
6.1 KiB
C
139 lines
6.1 KiB
C
/*
|
|
* @Description:
|
|
* @Version: 1.0
|
|
* @Autor: lzc
|
|
* @Date: 2022-09-02 08:59:57
|
|
* @LastEditors: lzc
|
|
* @LastEditTime: 2024-02-27 10:41:30
|
|
*/
|
|
#ifndef __EN25QX64_H
|
|
#define __EN25QX64_H
|
|
#include "sys.h"
|
|
|
|
/***EN25X系列/Q系列芯片列表***/
|
|
// EN25Q80 ID 0XEF13
|
|
// EN25Q16 ID 0XEF14
|
|
// EN25Q32 ID 0XEF15
|
|
// EN25Q64 ID 0XEF16
|
|
// EN25Q128 ID 0XEF17
|
|
// #define EN25Q80 0XEF13
|
|
// #define EN25Q16 0XEF14
|
|
// #define EN25Q32 0XEF15
|
|
// #define EN25Q64 0XEF16
|
|
// #define EN25Q128 0XEF17
|
|
// #define EN25Q64 0XC816
|
|
// #define EN25Q64 0X1C16 //GD25QXX
|
|
// #define EN25Q64 0X2016 //XM25QHXX
|
|
#define EN25Q64 0X1c16 // EN25QX64
|
|
|
|
extern u16 EN25QXX_TYPE; // 定义EN25QXX芯片型号
|
|
|
|
#define EN25QXX_CS PAout(4) // EN25QXX的片选信号
|
|
#define EN25QXX_HOLD PCout(4) // EN25QXX的HOLD信号
|
|
|
|
/***指令表***/
|
|
#define EN25X_WriteEnable 0x06
|
|
#define EN25X_WriteDisable 0x04
|
|
#define EN25X_ReadStatusReg 0x05
|
|
#define EN25X_WriteStatusReg 0x01
|
|
#define EN25X_ReadData 0x03
|
|
#define EN25X_FastReadData 0x0B
|
|
#define EN25X_FastReadDual 0x3B
|
|
#define EN25X_PageProgram 0x02
|
|
#define EN25X_BlockErase 0xD8
|
|
#define EN25X_SectorErase 0x20
|
|
#define EN25X_ChipErase 0xC7
|
|
#define EN25X_PowerDown 0xB9
|
|
#define EN25X_ReleasePowerDown 0xAB
|
|
#define EN25X_DeviceID 0xAB
|
|
#define EN25X_ManufactDeviceID 0x90
|
|
#define EN25X_JedecDeviceID 0x9F
|
|
|
|
// Part 1 配置参数存储位置 --1MB
|
|
#define FLASH_BLOCK_0_START_ADDRESS 0x0000000
|
|
#define FLASH_BLOCK_1_START_ADDRESS 0x0010000
|
|
#define FLASH_BLOCK_2_START_ADDRESS 0x0020000
|
|
#define FLASH_BLOCK_3_START_ADDRESS 0x0030000
|
|
#define FLASH_BLOCK_4_START_ADDRESS 0x0040000
|
|
#define FLASH_BLOCK_5_START_ADDRESS 0x0050000
|
|
#define FLASH_BLOCK_6_START_ADDRESS 0x0060000
|
|
#define FLASH_BLOCK_7_START_ADDRESS 0x0070000
|
|
#define FLASH_BLOCK_8_START_ADDRESS 0x0080000
|
|
#define FLASH_BLOCK_9_START_ADDRESS 0x0090000
|
|
#define FLASH_BLOCK_10_START_ADDRESS 0x00A0000
|
|
#define FLASH_BLOCK_11_START_ADDRESS 0x00B0000
|
|
#define FLASH_BLOCK_12_START_ADDRESS 0x00C0000
|
|
#define FLASH_BLOCK_13_START_ADDRESS 0x00D0000
|
|
#define FLASH_BLOCK_14_START_ADDRESS 0x00E0000
|
|
#define FLASH_BLOCK_15_START_ADDRESS 0x00F0000
|
|
// Part 2 异常数据存储位置 --1MB
|
|
#define FLASH_BLOCK_16_START_ADDRESS 0x0100000
|
|
#define FLASH_BLOCK_17_START_ADDRESS 0x0110000
|
|
#define FLASH_BLOCK_18_START_ADDRESS 0x0120000
|
|
#define FLASH_BLOCK_19_START_ADDRESS 0x0130000
|
|
#define FLASH_BLOCK_20_START_ADDRESS 0x0140000
|
|
#define FLASH_BLOCK_21_START_ADDRESS 0x0150000
|
|
#define FLASH_BLOCK_22_START_ADDRESS 0x0160000
|
|
#define FLASH_BLOCK_23_START_ADDRESS 0x0170000
|
|
#define FLASH_BLOCK_24_START_ADDRESS 0x0180000
|
|
#define FLASH_BLOCK_25_START_ADDRESS 0x0190000
|
|
#define FLASH_BLOCK_26_START_ADDRESS 0x01A0000
|
|
#define FLASH_BLOCK_27_START_ADDRESS 0x01B0000
|
|
#define FLASH_BLOCK_28_START_ADDRESS 0x01C0000
|
|
#define FLASH_BLOCK_29_START_ADDRESS 0x01D0000
|
|
#define FLASH_BLOCK_30_START_ADDRESS 0x01E0000
|
|
#define FLASH_BLOCK_31_START_ADDRESS 0x01F0000
|
|
// Part 3 睡眠报告存储位置 --1MB
|
|
#define FLASH_BLOCK_32_START_ADDRESS 0x0200000
|
|
#define FLASH_BLOCK_33_START_ADDRESS 0x0210000
|
|
#define FLASH_BLOCK_34_START_ADDRESS 0x0220000
|
|
#define FLASH_BLOCK_35_START_ADDRESS 0x0230000
|
|
#define FLASH_BLOCK_36_START_ADDRESS 0x0240000
|
|
#define FLASH_BLOCK_37_START_ADDRESS 0x0250000
|
|
#define FLASH_BLOCK_38_START_ADDRESS 0x0260000
|
|
#define FLASH_BLOCK_39_START_ADDRESS 0x0270000
|
|
#define FLASH_BLOCK_40_START_ADDRESS 0x0280000
|
|
#define FLASH_BLOCK_41_START_ADDRESS 0x0290000
|
|
#define FLASH_BLOCK_42_START_ADDRESS 0x02A0000
|
|
#define FLASH_BLOCK_43_START_ADDRESS 0x02B0000
|
|
#define FLASH_BLOCK_44_START_ADDRESS 0x02C0000
|
|
#define FLASH_BLOCK_45_START_ADDRESS 0x02D0000
|
|
#define FLASH_BLOCK_46_START_ADDRESS 0x02E0000
|
|
#define FLASH_BLOCK_47_START_ADDRESS 0x02F0000
|
|
|
|
// NOTE: 配置参数区域
|
|
#define FLASH_IN_BED_THRESHOLD_ADDRESS FLASH_BLOCK_0_START_ADDRESS // 在床阈值
|
|
#define FLASH_OFF_BED_THRESHOLD_ADDRESS (FLASH_IN_BED_THRESHOLD_ADDRESS + sizeof(float)) // 离床阈值
|
|
// NOTE: 睡眠报告存储区域
|
|
#define FLASH_SLEEP_REPORT_DIRECTORY_ADDRESS FLASH_BLOCK_32_START_ADDRESS // 存储位置对应表(目录)
|
|
#define FLASH_SLEEP_REPORT_START_SAVE_ADDRESS FLASH_BLOCK_33_START_ADDRESS // 睡眠报告起始存储位置
|
|
|
|
#define FLASH_SLEEP_REPORT_INFO_ADDRESS FLASH_SLEEP_REPORT_START_SAVE_ADDRESS // 存储参数其中包含时间戳以及其他——4KB
|
|
#define FLASH_SLEEP_REPORT_DATA_1_ADDRESS (FLASH_SLEEP_REPORT_INFO_ADDRESS + 0x1000) // 存储4k数据块1
|
|
#define FLASH_SLEEP_REPORT_DATA_2_ADDRESS (FLASH_SLEEP_REPORT_DATA_1_ADDRESS + 0x1000) // 存储4k数据块2
|
|
#define FLASH_SLEEP_REPORT_RETAIN_ADDRESS (FLASH_SLEEP_REPORT_DATA_2_ADDRESS + 0x1000) // 存储保留数据
|
|
|
|
#define FLASH_SLEEP_REPORT_TIMESTAMP_ADDRESS FLASH_SLEEP_REPORT_INFO_ADDRESS // 时间戳记录
|
|
#define FLASH_SLEEP_REPORT_SCORE_EFFICIENCY_ADDRESS (FLASH_SLEEP_REPORT_TIMESTAMP_ADDRESS + 0x100) // 睡眠得分和效率地址
|
|
|
|
// NOTE: 在离床参数存储位置
|
|
#define FLASH_IN_OFF_BED_OPM_RECORD_ADDRESS FLASH_BLOCK_16_START_ADDRESS // 在离床光功率记录
|
|
#define FLASH_NET_CONFIG_STATUS_ADDRESS (FLASH_IN_OFF_BED_OPM_RECORD_ADDRESS + 4) // 网络配置状态记录
|
|
|
|
void EN25QXX_Init(void);
|
|
u16 EN25QXX_ReadID(void); // 读取FLASH ID
|
|
u8 EN25QXX_ReadSR(void); // 读取状态寄存器
|
|
void EN25QXX_Write_SR(u8 sr); // 写状态寄存器
|
|
void EN25QXX_Write_Enable(void); // 写使能
|
|
void EN25QXX_Write_Disable(void); // 写保护
|
|
void EN25QXX_Write_NoCheck(u8 *pBuffer, u32 WriteAddr, u16 NumByteToWrite);
|
|
void EN25QXX_Read(u8 *pBuffer, u32 ReadAddr, u16 NumByteToRead); // 读取flash
|
|
void EN25QXX_Write(u8 *pBuffer, u32 WriteAddr, u16 NumByteToWrite); // 写入flash
|
|
void EN25QXX_Erase_Chip(void); // 整片擦除
|
|
void EN25QXX_Erase_Sector(u32 Dst_Addr); // 扇区擦除
|
|
void EN25QXX_Erase_Block(u32 Dst_Addr); // 块擦除
|
|
void EN25QXX_Wait_Busy(void); // 等待空闲
|
|
void EN25QXX_PowerDown(void); // 进入掉电模式
|
|
void EN25QXX_WAKEUP(void); // 唤醒
|
|
#endif
|