20260324
This commit is contained in:
327
RTX5_20220316/Driver/eeprom/eeprom.c
Normal file
327
RTX5_20220316/Driver/eeprom/eeprom.c
Normal file
@ -0,0 +1,327 @@
|
||||
/*
|
||||
*********************************************************************************
|
||||
ͷ<>ļ<EFBFBD>
|
||||
*********************************************************************************
|
||||
*/
|
||||
#include "eeprom.h"
|
||||
#include "bsp.h"
|
||||
#include "stm32l1xx_flash.h"
|
||||
|
||||
/*
|
||||
************************************************************************************
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
************************************************************************************
|
||||
*/
|
||||
Init_Data Init_Data_Equipment;
|
||||
|
||||
/*------------------------------------------------------------
|
||||
Func: EEPROM<4F><4D><EFBFBD>ݰ<EFBFBD><DDB0>ֽڶ<D6BD><DAB6><EFBFBD>
|
||||
Note:
|
||||
-------------------------------------------------------------*/
|
||||
void EEPROM_ReadBytes(u16 Addr,u8 *Buffer,u16 Length)
|
||||
{
|
||||
u8 *wAddr;
|
||||
wAddr=(u8 *)(EEPROM_BASE_ADDR+Addr);
|
||||
while(Length--){
|
||||
*Buffer++=*wAddr++;
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------
|
||||
Func: EEPROM<4F><4D><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
|
||||
Note:
|
||||
-------------------------------------------------------------*/
|
||||
void EEPROM_ReadWords(u16 Addr,u16 *Buffer,u16 Length)
|
||||
{
|
||||
u32 *wAddr;
|
||||
wAddr=(u32 *)(EEPROM_BASE_ADDR+Addr);
|
||||
while(Length--){
|
||||
*Buffer++=*wAddr;
|
||||
wAddr+=2;
|
||||
}
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------
|
||||
Func: EEPROM<4F><4D><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>˫<EFBFBD><CBAB>
|
||||
Note:
|
||||
-------------------------------------------------------------*/
|
||||
void EEPROM_ReadDWords(u16 Addr,u32 *Buffer,u16 Length)
|
||||
{
|
||||
u32 *wAddr;
|
||||
wAddr=(u32 *)(EEPROM_BASE_ADDR+Addr);
|
||||
while(Length--){
|
||||
*Buffer++=*wAddr;
|
||||
wAddr+=4;
|
||||
}
|
||||
}
|
||||
/*------------------------------------------------------------
|
||||
Func: EEPROM<4F><4D><EFBFBD>ݰ<EFBFBD><DDB0>ֽ<EFBFBD>д<EFBFBD><D0B4>
|
||||
Note:
|
||||
-------------------------------------------------------------*/
|
||||
void EEPROM_WriteBytes(u16 Addr,u8 *Buffer,u16 Length)
|
||||
{
|
||||
u8 *wAddr;
|
||||
wAddr=(u8 *)(EEPROM_BASE_ADDR+Addr);
|
||||
FLASH->PEKEYR=PEKEY1; //unlock
|
||||
FLASH->PEKEYR=PEKEY2;
|
||||
while(FLASH->PECR&FLASH_PECR_PELOCK);
|
||||
FLASH->PECR|=FLASH_PECR_FTDW; //not fast write
|
||||
while(Length--){
|
||||
*wAddr++=*Buffer++;
|
||||
while(FLASH->SR&FLASH_SR_BSY);
|
||||
}
|
||||
FLASH->PECR|=FLASH_PECR_PELOCK;
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------
|
||||
Func: EEPROM<4F><4D><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>д<EFBFBD><D0B4>
|
||||
Note: <20>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-------------------------------------------------------------*/
|
||||
void EEPROM_WriteWords(u16 Addr,u16 *Buffer,u16 Length)
|
||||
{
|
||||
u32 *wAddr;
|
||||
wAddr=(u32 *)(EEPROM_BASE_ADDR+Addr);
|
||||
|
||||
FLASH->PEKEYR=PEKEY1; //unlock
|
||||
FLASH->PEKEYR=PEKEY2;
|
||||
while(FLASH->PECR&FLASH_PECR_PELOCK);
|
||||
FLASH->PECR|=FLASH_PECR_FTDW; //not fast write
|
||||
while(Length--){
|
||||
*wAddr=*Buffer++;
|
||||
wAddr+=2;
|
||||
while(FLASH->SR&FLASH_SR_BSY);
|
||||
}
|
||||
FLASH->PECR|=FLASH_PECR_PELOCK;
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------
|
||||
Func: EEPROM<4F><4D><EFBFBD>ݰ<EFBFBD>˫<EFBFBD><CBAB>д<EFBFBD><D0B4>
|
||||
Note:
|
||||
-------------------------------------------------------------*/
|
||||
void EEPROM_WriteDWords(u16 Addr,u32 *Buffer,u16 Length)
|
||||
{
|
||||
u32 *wAddr;
|
||||
wAddr=(u32 *)(EEPROM_BASE_ADDR+Addr);
|
||||
FLASH->PEKEYR=PEKEY1; //unlock
|
||||
FLASH->PEKEYR=PEKEY2;
|
||||
while(FLASH->PECR&FLASH_PECR_PELOCK);
|
||||
FLASH->PECR|=FLASH_PECR_FTDW; //not fast write
|
||||
while(Length--){
|
||||
*wAddr=*Buffer++;
|
||||
wAddr+=4;
|
||||
while(FLASH->SR&FLASH_SR_BSY);
|
||||
}
|
||||
FLASH->PECR|=FLASH_PECR_PELOCK;
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: Read_Equipment_Par()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: EERPOM<4F><4D>ȡ<EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
* <20><> <20><> <20><>Init_Data_Equipmend
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
Init_Data Read_Equipment_Par(void)
|
||||
{
|
||||
|
||||
Init_Data Init_Data_Equipmend={'\0'};
|
||||
EEPROM_ReadBytes(0, (u8*)Init_Data_Equipmend.Bc25_Ip,Bc25_Ip_len);
|
||||
EEPROM_ReadBytes(20, (u8*)Init_Data_Equipmend.Bc25_Port,Bc25_Port_len);
|
||||
EEPROM_ReadBytes(30, (u8*)Init_Data_Equipmend.ESP8266_AP_Ports,ESP8266_AP_Ports_len);
|
||||
EEPROM_ReadBytes(60, (u8*)Init_Data_Equipmend.ESP8266_AP_PWDs,ESP8266_AP_PWDs_len);
|
||||
EEPROM_ReadBytes(40, (u8*)Init_Data_Equipmend.ESP8266_AP_SSIDs,ESP8266_AP_SSIDs_len);
|
||||
EEPROM_ReadBytes(100, (u8*)Init_Data_Equipmend.Measure_Interval,Measure_Interval_len);
|
||||
EEPROM_ReadBytes(110, (u8*)Init_Data_Equipmend.Pub_Mode,Pub_Mode_len);
|
||||
EEPROM_ReadBytes(120, (u8*)Init_Data_Equipmend.Pub_Time,Pub_Time_len);
|
||||
EEPROM_ReadBytes(130, (u8*)Init_Data_Equipmend.Equipment_ID,Equipment_ID_len);
|
||||
EEPROM_ReadBytes(150, (u8*)Init_Data_Equipmend.appointment_time,appointment_time_len);
|
||||
EEPROM_ReadBytes(166, (u8*)Init_Data_Equipmend.measure_mode,measure_mode_len);
|
||||
EEPROM_ReadBytes(185, &Init_Data_Equipmend.par_change,1);
|
||||
EEPROM_ReadBytes(186, &Init_Data_Equipmend.Bc25_Send_Header,1);
|
||||
EEPROM_ReadBytes(240, (u8*)Init_Data_Equipmend.IOT_Username,IOT_Username_len);
|
||||
EEPROM_ReadBytes(260, (u8*)Init_Data_Equipmend.IOT_Password,IOT_Password_len);
|
||||
EEPROM_ReadBytes(280, (u8*)Init_Data_Equipmend.IOT_Theme_name,IOT_Theme_name_len);
|
||||
|
||||
return Init_Data_Equipmend;
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: Write_Equipment_Par()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20>洢<EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
* <09><> <20><> <20><><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> Init_Data_Equipmend
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void Write_Equipment_Par(Init_Data Init_Data_Equipmend)
|
||||
{
|
||||
Clear_eeprom_par();
|
||||
EEPROM_WriteBytes(0, (u8*)Init_Data_Equipmend.Bc25_Ip,strlen(Init_Data_Equipmend.Bc25_Ip));
|
||||
EEPROM_WriteBytes(20, (u8*)Init_Data_Equipmend.Bc25_Port,strlen(Init_Data_Equipmend.Bc25_Port));
|
||||
EEPROM_WriteBytes(30, (u8*)Init_Data_Equipmend.ESP8266_AP_Ports,strlen(Init_Data_Equipmend.ESP8266_AP_Ports));
|
||||
EEPROM_WriteBytes(60, (u8*)Init_Data_Equipmend.ESP8266_AP_PWDs,strlen(Init_Data_Equipmend.ESP8266_AP_PWDs));
|
||||
EEPROM_WriteBytes(40, (u8*)Init_Data_Equipmend.ESP8266_AP_SSIDs,strlen(Init_Data_Equipmend.ESP8266_AP_SSIDs));
|
||||
EEPROM_WriteBytes(100, (u8*)Init_Data_Equipmend.Measure_Interval,strlen(Init_Data_Equipmend.Measure_Interval));
|
||||
EEPROM_WriteBytes(110, (u8*)Init_Data_Equipmend.Pub_Mode,strlen(Init_Data_Equipmend.Pub_Mode));
|
||||
EEPROM_WriteBytes(120, (u8*)Init_Data_Equipmend.Pub_Time,strlen(Init_Data_Equipmend.Pub_Time));
|
||||
EEPROM_WriteBytes(130, (u8*)Init_Data_Equipmend.Equipment_ID,strlen(Init_Data_Equipmend.Equipment_ID));
|
||||
EEPROM_WriteBytes(150, (u8*)Init_Data_Equipmend.appointment_time,appointment_time_len);
|
||||
EEPROM_WriteBytes(166, (u8*)Init_Data_Equipmend.measure_mode,1);
|
||||
EEPROM_WriteBytes(185, &Init_Data_Equipmend.par_change,1);
|
||||
EEPROM_WriteBytes(185, &Init_Data_Equipmend.Bc25_Send_Header,1);
|
||||
EEPROM_WriteBytes(140,&Par_store_flag,1);
|
||||
EEPROM_WriteBytes(240, (u8*)Init_Data_Equipmend.IOT_Username,strlen(Init_Data_Equipmend.IOT_Username));
|
||||
EEPROM_WriteBytes(260, (u8*)Init_Data_Equipmend.IOT_Password,strlen(Init_Data_Equipmend.IOT_Password));
|
||||
EEPROM_WriteBytes(280, (u8*)Init_Data_Equipmend.IOT_Theme_name,strlen(Init_Data_Equipmend.IOT_Theme_name));
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: clear_Init_Data_Equipment()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void clear_Init_Data_Equipment(void)
|
||||
{
|
||||
memset(Init_Data_Equipment.Bc25_Ip,0,Bc25_Ip_len);
|
||||
memset(Init_Data_Equipment.Bc25_Port,0,Bc25_Port_len);
|
||||
memset(Init_Data_Equipment.ESP8266_AP_Ports,0,ESP8266_AP_Ports_len);
|
||||
memset(Init_Data_Equipment.ESP8266_AP_PWDs,0,ESP8266_AP_PWDs_len);
|
||||
memset(Init_Data_Equipment.ESP8266_AP_SSIDs,0,ESP8266_AP_SSIDs_len);
|
||||
memset(Init_Data_Equipment.Measure_Interval,0,Measure_Interval_len);
|
||||
memset(Init_Data_Equipment.Pub_Mode,0,Pub_Mode_len);
|
||||
memset(Init_Data_Equipment.Pub_Time,0,Pub_Time_len);
|
||||
memset(Init_Data_Equipment.Equipment_ID,0,Equipment_ID_len);
|
||||
memset(Init_Data_Equipment.appointment_time,0,appointment_time_len);
|
||||
memset(Init_Data_Equipment.measure_mode,0,measure_mode_len);
|
||||
memset(Init_Data_Equipment.IOT_Username,0,IOT_Username_len);
|
||||
memset(Init_Data_Equipment.IOT_Password,0,IOT_Password_len);
|
||||
memset(Init_Data_Equipment.IOT_Theme_name,0,IOT_Theme_name_len);
|
||||
Init_Data_Equipment.par_change=0;
|
||||
Init_Data_Equipment.Bc25_Send_Header=0;
|
||||
// Write_Equipment_Par(Init_Data_Equipment);
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: Clear_eeprom_par()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD>EEPROM
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void Clear_eeprom_par(void)
|
||||
{
|
||||
uint8_t data=0x00;
|
||||
int i=0;
|
||||
for(i=0;i<300;i++)
|
||||
{
|
||||
EEPROM_WriteBytes(i,&data,1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: Write_Factory_Par()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
* <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void Write_Factory_Par(void)
|
||||
{
|
||||
clear_Init_Data_Equipment();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2>
|
||||
sprintf(Init_Data_Equipment.Bc25_Ip,"%s","\"39.105.230.197\"");
|
||||
sprintf(Init_Data_Equipment.Bc25_Port,"%s","1883");
|
||||
|
||||
// sprintf(Init_Data_Equipment.Bc25_Ip,"%s","\"219.238.240.58\"");
|
||||
// sprintf(Init_Data_Equipment.Bc25_Port,"%s","9027");
|
||||
|
||||
|
||||
sprintf(Init_Data_Equipment.ESP8266_AP_Ports,"%s","8080");
|
||||
sprintf(Init_Data_Equipment.ESP8266_AP_PWDs,"%s","88888888");
|
||||
sprintf(Init_Data_Equipment.ESP8266_AP_SSIDs,"%s","licawifi");
|
||||
sprintf(Init_Data_Equipment.Measure_Interval,"%s","00001");
|
||||
sprintf(Init_Data_Equipment.Pub_Mode,"%s","00");
|
||||
sprintf(Init_Data_Equipment.Pub_Time,"%s","5");
|
||||
sprintf(Init_Data_Equipment.Equipment_ID,"%s","123456789");
|
||||
sprintf(Init_Data_Equipment.appointment_time,"%s","20221130114400");
|
||||
sprintf(Init_Data_Equipment.measure_mode,"%s","0");
|
||||
sprintf(Init_Data_Equipment.IOT_Username,"%s","\"lichao\"");
|
||||
sprintf(Init_Data_Equipment.IOT_Password,"%s","\"910517@lc\"");
|
||||
sprintf(Init_Data_Equipment.IOT_Theme_name,"%s","SM-1000M");
|
||||
Init_Data_Equipment.par_change=0;
|
||||
Init_Data_Equipment.Bc25_Send_Header=0;
|
||||
Write_Equipment_Par(Init_Data_Equipment);
|
||||
Par_store_flag=0x01;
|
||||
EEPROM_WriteBytes(140,&Par_store_flag,1);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: get_meaidv()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
* <20><> <20><> <20><>measurt_idv_set*60;
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
u32 get_meaidv(void)
|
||||
{
|
||||
uint32_t measurt_idv_set;
|
||||
measurt_idv_set= hexToDec(Init_Data_Equipment.Measure_Interval);
|
||||
return measurt_idv_set*60;
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: get_pubidv()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><>ȡԶ<C8A1><D4B6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S
|
||||
* <09><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
* <20><> <20><> <20><>pub_idv_set*60
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
u32 get_pubidv(void)
|
||||
{
|
||||
uint32_t pub_idv_set;
|
||||
pub_idv_set=hexToDec(Init_Data_Equipment.Pub_Time);
|
||||
return pub_idv_set*60 + 60*2;
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: hexToDec()
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת10<31><30><EFBFBD><EFBFBD>
|
||||
* <09><> <20><> <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>shex
|
||||
* <20><> <20><> <20><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mid
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
u16 hexToDec(char *shex)
|
||||
{
|
||||
u16 len,i,mid=0;
|
||||
len=strlen(shex);
|
||||
if(len>8)return 0;
|
||||
for(i=0;i<len;i++)
|
||||
{
|
||||
if (shex[i] >= '0' && shex[i] <= '9')
|
||||
{
|
||||
if(i>0)mid*=10;
|
||||
//mid *= (u16)pow(10,1);
|
||||
mid += (shex[i] - '0');
|
||||
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
return mid;
|
||||
}
|
||||
|
||||
/***************************** END OF FILE *********************************/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user