/**
******************************************************************************
* @file EEPROM_Emulation/inc/eeprom.h
* @author MCD Application Team
* @version V3.1.0
* @date 07/27/2009
* @brief This file contains all the functions prototypes for the EEPROM
* emulation firmware library.
******************************************************************************
* @copy
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
*
© COPYRIGHT 2009 STMicroelectronics
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __EEPROM_H
#define __EEPROM_H
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
//#define EEPROM_DEBUG_EN 1
#ifdef EEPROM_DEBUG_EN
#include
#define EEPROM_DEBUG(fmt, x...) \
do \
{ \
printf(fmt,##x); \
}while(0)
#define EEPROM_DEBUG1(fmt, x...) \
do \
{ \
printf("%s(Line %d): "fmt,__FUNCTION__,__LINE__, ##x); \
}while(0)
#define EEPROM_DEBUG_F(fmt, x...) \
do \
{ \
printf("%s %s(Line %d): "fmt,__FILE__,__FUNCTION__,__LINE__, ##x); \
}while(0)
#else
#define EEPROM_DEBUG(fmt, x...)
#define EEPROM_DEBUG1(fmt, x...)
#define EEPROM_DEBUG_F(fmt, x...)
#endif
/* Exported constants --------------------------------------------------------*/
/* Define the STM32F10Xxx Flash page size depending on the used STM32 device */
#if defined (STM32F10X_LD) || defined (STM32F10X_MD)
#define PAGE_SIZE (uint16_t)0x400 /* Page size = 1KByte */
#elif defined (STM32F10X_HD) || defined (STM32F10X_CL)
#define PAGE_SIZE (uint16_t)0x800 /* Page size = 2KByte */
#endif
/* EEPROM start address in Flash */
#define EEPROM_START_ADDRESS ((uint32_t)0x0800F000) /* EEPROM emulation start address:
after 64KByte of used Flash memory */
/* Pages 0 and 1 base and end addresses */
#define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x000))
#define PAGE0_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1)))
#define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + PAGE_SIZE))
#define PAGE1_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1)))
/* Used Flash pages for EEPROM emulation */
#define PAGE0 ((uint16_t)0x0000)
#define PAGE1 ((uint16_t)0x0001)
/* No valid page define */
#define NO_VALID_PAGE ((uint16_t)0x00AB)
/* Page status definitions */
#define ERASED ((uint16_t)0xFFFF) /* PAGE is empty */
#define RECEIVE_DATA ((uint16_t)0xEEEE) /* PAGE is marked to receive data */
#define VALID_PAGE ((uint16_t)0x0000) /* PAGE containing valid data */
/* Valid pages in read and write defines */
#define READ_FROM_VALID_PAGE ((uint8_t)0x00)
#define WRITE_IN_VALID_PAGE ((uint8_t)0x01)
/* Page full define */
#define PAGE_FULL ((uint8_t)0x80)
extern uint16_t VirtAddVarTab[];
/* Variables' number */
//#define NumbOfVar ((uint16_t)0x0041)
#define NumbOfVar (sizeof(VirtAddVarTab)/sizeof(VirtAddVarTab[0]))
/*复位次数*/
#define CURSET_RESET_TIME 0x0000
/*升级状态*/
#define CURSET_UPDATE_STATE 0x0001
/*set版本*/
#define CURSET_SET_VER 0x0002
/*预留*/
#define CURSET_RESERVED1 0x0003
/*预留*/
#define CURSET_RESERVED2 0x0004
/*预留*/
#define CURSET_RESERVED3 0x0005
/*设备唯一ID(MAC)(最低16位/共64位)*/
#define CURSET_DEVICE_DevEUI0 0x0006
/**/
#define CURSET_DEVICE_DevEUI1 0x0007
/**/
#define CURSET_DEVICE_DevEUI2 0x0008
/*设备唯一ID(MAC)(最高16位/共64位)*/
#define CURSET_DEVICE_DevEUI3 0x0009
/*设备地址(IP)(最低16位/共32位)*/
#define CURSET_DEVICE_DevAddr0 0x000A
/*设备地址(IP)(最高16位/共32位)*/
#define CURSET_DEVICE_DevAddr1 0x000B
/*设备类型:
0x01,网关
0x02,液位仪
0x03,采集器
0x04,NB油机
0x05,NB液位仪
0x09,英泰赛福模块*/
#define CURSET_DEVICE_TYPE 0x000C
/*硬件版本*/
#define CURSET_DEVICE_HARD_VER 0x000D
/*生产日期(2020)*/
#define CURSET_DEVICE_MFD0 0x000E
/*生产日期(08/08)*/
#define CURSET_DEVICE_MFD1 0x000F
/*所属网关ID(最低16位/共32位)*/
#define CURSET_GW_ID0 0x0010
/*所属网关ID(最高16位/共32位)*/
#define CURSET_GW_ID1 0x0011
/*Channel通道号*/
#define CURSET_CHANNELL_NUM 0x0012
/*BootLoader软件版本(最低16位/共32位)*/
#define CURSET_BT_SOFT_VER0 0x0013
/*BootLoader软件版本(最高16位/共32位)*/
#define CURSET_BT_SOFT_VER1 0x0014
/*协议版本(最低16位/共32位)*/
#define CURSET_PROTOCOL_VER0 0x0015
/*协议版本(最高16位/共32位)*/
#define CURSET_PROTOCOL_VER1 0x0016
/*app1起始地址(低16位)*/
#define CURSET_APP1_START_ADDR0 0x0017
/*app1起始地址(高16位)*/
#define CURSET_APP1_START_ADDR1 0x0018
/*app1版本存放地址(低16位)*/
#define CURSET_APP1_VER_ADDR0 0x0019
/*app1版本存放地址(高16位)*/
#define CURSET_APP1_VER_ADDR1 0x001A
/*app1长度存放地址(低16位)*/
#define CURSET_APP1_LEN_ADDR0 0x001B
/*app1长度存放地址(高16位)*/
#define CURSET_APP1_LEN_ADDR1 0x001C
/*app1CRC存放地址(低16位)*/
#define CURSET_APP1_CRC_ADDR0 0x001D
/*app1CRC存放地址(高16位)*/
#define CURSET_APP1_CRC_ADDR1 0x001E
/*app2起始地址(低16位)*/
#define CURSET_APP2_START_ADDR0 0x001F
/*app2起始地址(高16位)*/
#define CURSET_APP2_START_ADDR1 0x0020
/*app2版本存放地址(低16位)*/
#define CURSET_APP2_VER_ADDR0 0x0021
/*app2版本存放地址(高16位)*/
#define CURSET_APP2_VER_ADDR1 0x0022
/*app2长度存放地址(低16位)*/
#define CURSET_APP2_LEN_ADDR0 0x0023
/*app2长度存放地址(高16位)*/
#define CURSET_APP2_LEN_ADDR1 0x0024
/*app2CRC存放地址(低16位)*/
#define CURSET_APP2_CRC_ADDR0 0x0025
/*app2CRC存放地址(高16位)*/
#define CURSET_APP2_CRC_ADDR1 0x0026
/*app3起始地址(低16位)*/
#define CURSET_APP3_START_ADDR0 0x0027
/*app3起始地址(高16位)*/
#define CURSET_APP3_START_ADDR1 0x0028
/*app3版本存放地址(低16位)*/
#define CURSET_APP3_VER_ADDR0 0x0029
/*app3版本存放地址(高16位)*/
#define CURSET_APP3_VER_ADDR1 0x002A
/*app3长度存放地址(低16位)*/
#define CURSET_APP3_LEN_ADDR0 0x002B
/*app3长度存放地址(高16位)*/
#define CURSET_APP3_LEN_ADDR1 0x002C
/*app3CRC存放地址(低16位)*/
#define CURSET_APP3_CRC_ADDR0 0x002D
/*app3CRC存放地址(高16位)*/
#define CURSET_APP3_CRC_ADDR1 0x002E
/*app3固件类型*/
#define CURSET_APP3_FIREWARE_TYPE 0x002F
/*BASE_KEY0(最低16位/共128位)*/
#define CURSET_BASE_KEY0 0x0030
/**/
#define CURSET_BASE_KEY1 0x0031
/**/
#define CURSET_BASE_KEY2 0x0032
/**/
#define CURSET_BASE_KEY3 0x0033
/**/
#define CURSET_BASE_KEY4 0x0034
/**/
#define CURSET_BASE_KEY5 0x0035
/**/
#define CURSET_BASE_KEY6 0x0036
/*BASE_KEY7(最高16位/共128位)*/
#define CURSET_BASE_KEY7 0x0037
/*LORA 信道0 参数0
[15]信道0使能,默认1b
[14:08] Power,功率,默认20=0x14
[07:00] (Freq/100)[07:00],默认0x88*/
#define CURSET_LORA_CH0_PARM0 0x0038
/*LORA 信道0 参数0
[15:00] (Freq/100)[24:08],默认0x4A4B
[07]信道0使能
[06:00] Power*/
#define CURSET_LORA_CH0_PARM1 0x0039
/*LORA 信道0 参数1
[15:08]SignalBw,默认9(500 kHz)
[07:00]SpreadingFactor7(128)*/
#define CURSET_LORA_CH0_PARM2 0x003A
/*LORA 信道0 参数2
[15:12]ErrorCoding,默认1(4/5)
[11]CrcOn,默认1(on)
[10]ImplicitHeaderOn,默认0(显示报头模式)
[09]RxSingleOn,默认0(持续接收)
[08]FreqHopOn,默认0
[07:00]PayloadLength,默认128*/
#define CURSET_LORA_CH0_PARM3 0x003B
/*LORA 信道0参数3
[15:08]TxPacketTimeout
[07:00]RxPacketTimeout*/
#define CURSET_LORA_CH0_PARM4 0x003C
/*LORA 信道1 参数0
[15]信道0使能,默认1b
[14:08] Power,功率,默认20=0x14
[07:00] (Freq/100)[07:00],默认0x68*/
#define CURSET_LORA_CH1_PARM0 0x003D
/*LORA 信道1 参数0
[15:00] (Freq/100)[24:08],默认0x4D68
[07]信道0使能
[06:00] Power*/
#define CURSET_LORA_CH1_PARM1 0x003E
/*LORA 信道1 参数1
[15:08]SignalBw,默认9(500 kHz)
[07:00]SpreadingFactor7(128)*/
#define CURSET_LORA_CH1_PARM2 0x003F
/*LORA 信道1 参数2
[15:12]ErrorCoding,默认1(4/5)
[11]CrcOn,默认1(on)
[10]ImplicitHeaderOn,默认0(显示报头模式)
[09]RxSingleOn,默认0(持续接收)
[08]FreqHopOn,默认0
[07:00]PayloadLength,默认128*/
#define CURSET_LORA_CH1_PARM3 0x0040
/*LORA 信道1参数3
[15:08]TxPacketTimeout
[07:00]RxPacketTimeout*/
#define CURSET_LORA_CH1_PARM4 0x0041
/*税控口是否加解密,即英泰赛福模块是否使能*/
#define CURSET_YTSF_EN 0x0042
/*税控口轮询间隔*/
#define CURSET_LOOP_PERIOD 0x0043
/*税控口0参数
[15:8] 税控口0有效标记,0为无效,非0有效
[07] 枪7有效标记
[06] 枪6有效标记
[05] 枪5有效标记
[04] 枪4有效标记
[03] 枪3有效标记
[02] 枪2有效标记
[01] 枪1有效标记
[00] 枪0有效标记*/
#define CURSET_SKK_PORT0 0x0044
/*税控口1参数
[15:8] 税控口1有效标记,0为无效,非0有效
[07] 枪7有效标记
[06] 枪6有效标记
[05] 枪5有效标记
[04] 枪4有效标记
[03] 枪3有效标记
[02] 枪2有效标记
[01] 枪1有效标记
[00] 枪0有效标记*/
#define CURSET_SKK_PORT1 0x0045
/*税控口0序列号
[15:08] SN第1个字节(首字节)ASCII格式
[07:00] SN第1个字节(首字节)BCD格式*/
#define CURSET_YTSF_PORT0_SN0 0x0046
/*税控口0序列号
[15:08] SN第2个字节BCD格式
[07:00] SN第3个字节BCD格式*/
#define CURSET_YTSF_PORT0_SN1 0x0047
/*税控口0序列号
[15:08] SN第4个字节BCD格式
[07:00] SN第5个字节BCD格式*/
#define CURSET_YTSF_PORT0_SN2 0x0048
/*税控口1序列号
[15:08] SN第1个字节(首字节)ASCII格式
[07:00] SN第1个字节(首字节)BCD格式*/
#define CURSET_YTSF_PORT1_SN0 0x0049
/*税控口1序列号
[15:08] SN第2个字节BCD格式
[07:00] SN第3个字节BCD格式*/
#define CURSET_YTSF_PORT1_SN1 0x004A
/*税控口1序列号
[15:08] SN第4个字节BCD格式
[07:00] SN第5个字节BCD格式*/
#define CURSET_YTSF_PORT1_SN2 0x004B
/*除此字段以外所有参数做CRC(高16位)*/
#define CURSET_CRC0 0x004C
/*除此字段以外所有参数做CRC(低16位)*/
#define CURSET_CRC1 0x004D
/* Exported types ------------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
uint16_t EE_Init(void);
uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data);
uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data);
uint16_t eeprom_test(void);
#endif /* __EEPROM_H */
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/