You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
421 lines
11 KiB
421 lines
11 KiB
////////////////////////////////////////////////////////////////////////////
|
|
///@copyright Copyright (c) 2022, 传控科技 All rights reserved.
|
|
///-------------------------------------------------------------------------
|
|
/// @file app_save.c
|
|
/// @brief @ app save
|
|
///-------------------------------------------------------------------------
|
|
/// @version 1.0
|
|
/// @author CC
|
|
/// @date 20220120
|
|
/// @note cc_AS_stc02
|
|
|
|
#ifdef doc453453
|
|
|
|
app_save 需要保存的参数 逻辑 数据流
|
|
asp_para L1_para_write 为应用服务的eeprom的读写函数和地址配置
|
|
U8 L1_para_write(U8 *buf, U8 len)
|
|
|
|
msp_eeprom mcu的eeprom的底层驱动函数
|
|
|
|
|
|
----------global_register-------------------------------->
|
|
寄存器化的结构
|
|
全局化调用 里面有需要保存的iapData数据的映射
|
|
TS_GlobalRegisterd R
|
|
..........................................
|
|
|
|
//RO Register
|
|
U16 reserved1;
|
|
//RW Register
|
|
TS_IapData_ sd;//// save data 需要保存的额参数
|
|
|
|
-----------iapData-------------------------------------->
|
|
需要保存的数据
|
|
TS_IapData_ iapData
|
|
TS_IapData_ code iapData_factory
|
|
|
|
..................................................
|
|
|
|
S16 slaver_id;
|
|
|
|
ts_weight_sheet_ factory_ws[3]; ///出厂的设置,发布出厂指令后更新 由上位机命令更改,实时保存
|
|
ts_weight_sheet_ zerows[3]; ///手工清零后的参数, 没有清零或者出错恢复到和出厂设置一样,需要实时保存
|
|
vS16 zerodiff_max; /// 上电时,如果和zerows的零点ADC的差值小于 zerodiff_max 说明没有人,启动上电校准;
|
|
vS16 zerodiff; ///零点的差值 零公斤位置和手工的差值
|
|
////此值上电后更改, 顺便保存(区别于实时保存),
|
|
u8 ADC_shiftaverage_a; ///a路移位滤波的参数 由上位机命令更改,实时保存
|
|
u8 ADC_shiftaverage_b; ///b路移位滤波的参数 由上位机命令更改,实时保存
|
|
|
|
-----------eep_param----------------------------------->
|
|
eeprom中的缓存
|
|
eeprom ---底层硬件,一般按扇区保存,需要批量擦除写入.
|
|
TS_eeprom_param_
|
|
.........................................
|
|
U8 filter;
|
|
U8 len;
|
|
U8 buf[EEPROM_PARAM_DATA_MAX];
|
|
U8 crc[2];
|
|
|
|
#endif
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "app_save.h"
|
|
#include "app_config.h"
|
|
#include "debug_drv.h"
|
|
#define D_20kg 200
|
|
#define D_85kg 850
|
|
///#define D_20kg 190
|
|
TS_IapData_ iapData=
|
|
{
|
|
0xaabcd,
|
|
0x18da,0x18d9,0x18d9,0x18d9,///0x18da,0x18d9 0x18d9 0x18d9
|
|
/// ts_weight_sheet_ factory_ws[3]; ///出厂的设置,发布出厂指令后更新 由上位机命令更改,实时保存
|
|
0,0x1f7f,
|
|
D_20kg,0x25ed,
|
|
D_85kg,0x3236,
|
|
/// ts_weight_sheet_ zerows[3]; ///手工清零后的参数, 没有清零或者出错恢复到和出厂设置一样,需要实时保存
|
|
0,0x1f7f,
|
|
D_20kg,0x25ed,
|
|
D_85kg,0x3236,
|
|
|
|
|
|
/// vS16 zerodiff_max; /// 上电时,如果和zerows的零点ADC的差值小于 zerodiff_max 说明没有人,启动上电校准;
|
|
123,
|
|
/// vS16 zerodiff; ///零点的差值 零公斤位置和手工的差值
|
|
-123, ////此值上电后更改, 顺便保存(区别于实时保存),
|
|
///vU16 zeroout; //2
|
|
8049,///30*0x134
|
|
|
|
|
|
/// u8 ADC_shiftaverage_a; ///a路移位滤波的参数 由上位机命令更改,实时保存
|
|
/// u8 ADC_shiftaverage_b; ///b路移位滤波的参数 由上位机命令更改,实时保存
|
|
2,5,
|
|
D_rev0x55aa55aa
|
|
};
|
|
|
|
TS_IapData_ code iapData_factory=
|
|
{
|
|
0xaabcd,
|
|
0x18da,0x18d9,0x18d9,0x18d9,///
|
|
/// ts_weight_sheet_ factory_ws[3]; ///出厂的设置,发布出厂指令后更新 由上位机命令更改,实时保存
|
|
0,0x1f7f,
|
|
D_20kg,0x25ed,
|
|
D_85kg,0x3236,
|
|
/// ts_weight_sheet_ zerows[3]; ///手工清零后的参数, 没有清零或者出错恢复到和出厂设置一样,需要实时保存
|
|
0,0x1f7f,
|
|
D_20kg,0x25ed,
|
|
D_85kg,0x3236,
|
|
|
|
|
|
/// vS16 zerodiff_max; /// 上电时,如果和zerows的零点ADC的差值小于 zerodiff_max 说明没有人,启动上电校准;
|
|
123,
|
|
/// vS16 zerodiff; ///零点的差值 零公斤位置和手工的差值
|
|
-123, ////此值上电后更改, 顺便保存(区别于实时保存),
|
|
///vU16 zeroout; //2
|
|
8049,///30*0x134
|
|
/// u8 ADC_shiftaverage_a; ///a路移位滤波的参数 由上位机命令更改,实时保存
|
|
/// u8 ADC_shiftaverage_b; ///b路移位滤波的参数 由上位机命令更改,实时保存
|
|
2,5,
|
|
D_rev0x55aa55aa
|
|
};
|
|
|
|
|
|
//读取reg内容,写入iap
|
|
u8 L4_reg_2_iap(void)
|
|
{
|
|
|
|
Lc_buf_copy_uc((u8 *)&iapData,(u8 *)&R.sd,D_TS_IapData_SIZE);
|
|
|
|
//写入eeprom
|
|
if(L1_para_write((U8*)&iapData,sizeof(TS_IapData_)) == 0)
|
|
{
|
|
L0_uart0_sendstr("e2p write success");
|
|
return 0;
|
|
}else
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
|
|
//读取factory内容,写入iap
|
|
u8 L4_factory_2_iap(void)
|
|
{
|
|
|
|
Lc_buf_copy_uc((u8 *)&iapData,(u8 *)&iapData_factory,D_TS_IapData_SIZE);
|
|
|
|
L0_uart0_sendstr("\r\nFFFFF return to factory");
|
|
|
|
//写入eeprom
|
|
if(L1_para_write((U8*)&iapData,D_TS_IapData_SIZE) == 0)
|
|
{ L0_uart0_sendstr(" ok");
|
|
return 0;
|
|
}else
|
|
{ L0_uart0_sendstr(" error");
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
///// 多次读取
|
|
void L4_iap_2_reg(void)
|
|
{
|
|
U8 d,len = 0,i = 0;
|
|
len = D_TS_IapData_SIZE;///sizeof(TS_IapData_);
|
|
/// printf("\r\n len = %d\r\n",len);
|
|
L0_uart0_sendstr("\r\nRRRRRRRRRRRRRRRRRRRRRRRRRRRRR\r\n");
|
|
/// L0_uart0_uchex(len);
|
|
do
|
|
{
|
|
d = L1_para_read((U8*)&iapData,&len);
|
|
if(d == 1)
|
|
{////读取错误
|
|
L0_uart0_sendstr("e2p read failed\r\n");
|
|
L4_factory_2_iap();
|
|
}else
|
|
{
|
|
/// L0_uartD_uchexArray((u8 *)&iapData,len);
|
|
L4_print_iap(&iapData);
|
|
if(D_rev0x55aa55aa != iapData.rev0x55aa55aa)
|
|
{
|
|
L0_uart0_sendstr("iapData_factory\r\n");L0_waitFree_uartN(0);
|
|
L1_para_write((U8*)&iapData_factory,len);
|
|
}else
|
|
{
|
|
L0_uart0_sendstr("e2p read success\r\n");L0_waitFree_uartN(0);
|
|
Lc_buf_copy_uc((u8 *)&R.sd,(u8 *)&iapData,len);
|
|
L4_print_iap(&R.sd);
|
|
break;
|
|
}
|
|
}
|
|
i ++;
|
|
}while(i < 3);
|
|
|
|
|
|
}
|
|
|
|
void L4_print_iap(TS_IapData_ *s)
|
|
{
|
|
|
|
L0_uart0_sendstr("\r\n--print_reg-- \r\na b= ");
|
|
L0_uart0_uchex(s->ADC_shiftaverage_a);
|
|
L0_uart0_uc(' ');
|
|
L0_uart0_uchex(s->ADC_shiftaverage_b);
|
|
|
|
L0_waitFree_uartN(0);///混搭使用printf的时候必须加上
|
|
|
|
printf("\r\nfactory_ws\r\n %d kg = 0x%4x\r\n", s->factory_ws[0].kg,s->factory_ws[0].adc);
|
|
printf(" %d kg = 0x%4x\r\n", s->factory_ws[1].kg,s->factory_ws[1].adc);
|
|
printf(" %d kg = 0x%4x\r\n", s->factory_ws[2].kg,s->factory_ws[2].adc);
|
|
|
|
|
|
printf("\r\nzerows\r\n %d kg = 0x%4x\r\n", s->zerows[0].kg,s->zerows[0].adc);
|
|
printf(" %d kg = 0x%4x\r\n", s->zerows[1].kg,s->zerows[1].adc);
|
|
printf(" %d kg = 0x%4x\r\n", s->zerows[2].kg,s->zerows[2].adc);
|
|
|
|
|
|
printf("\r\ns->zeroout= %d = 0x%4x\r\n", s->zeroout, s->zeroout);
|
|
|
|
|
|
printf("\r\ns->sensor 0x%04x 0x%04x 0x%04x 0x%04x\r\n",s->sensor[0],s->sensor[1],s->sensor[2],s->sensor[3]);
|
|
printf("\r\ns->ADC_shiftaverage_a 0x%02x s->ADC_shiftaverage_b 0x%02x\r\n",(int)s->ADC_shiftaverage_a ,(int)s->ADC_shiftaverage_b );
|
|
printf("\r\n-----print_reg end--------\r\n");
|
|
}
|
|
|
|
|
|
|
|
/*******
|
|
L0_uart0_sendstr("\r\nfactory_ws= ");
|
|
|
|
L0_uart0_ushex(iapData.factory_ws[0].kg);L0_uart0_uc(' ');
|
|
L0_uart0_ushex(iapData.factory_ws[0].adc);L0_uart0_0d0a();
|
|
|
|
|
|
L0_uart0_ushex(iapData.factory_ws[1].kg);L0_uart0_uc(' ');
|
|
L0_uart0_ushex(iapData.factory_ws[1].adc);L0_uart0_0d0a();
|
|
|
|
|
|
L0_uart0_ushex(iapData.factory_ws[2].kg);L0_uart0_uc(' ');
|
|
L0_uart0_ushex(iapData.factory_ws[3].adc);L0_uart0_0d0a();
|
|
|
|
|
|
L0_uart0_sendstr("\r\nzerows= ");
|
|
|
|
L0_uart0_ushex(iapData.zerows[0].kg);L0_uart0_uc(' ');
|
|
L0_uart0_ushex(iapData.zerows[0].adc);L0_uart0_0d0a();
|
|
|
|
|
|
L0_uart0_ushex(iapData.zerows[1].kg);L0_uart0_uc(' ');
|
|
L0_uart0_ushex(iapData.zerows[1].adc);L0_uart0_0d0a();
|
|
|
|
|
|
L0_uart0_ushex(iapData.zerows[2].kg);L0_uart0_uc(' ');
|
|
L0_uart0_ushex(iapData.zerows[3].adc);L0_uart0_0d0a();
|
|
|
|
瞡6辐3 = 0x 3
|
|
|
|
R.sd.zeroout= 8049 = 0x1f71 offset 4 = 0x 4
|
|
4
|
|
v3.4
|
|
|
|
RRRRRRRRRRRRRRRRRRRRRRRRRRRRR
|
|
2800 01 00 02 00 03 00 04 00 00 12 35 00 C8 56 78 01 90 78 9A 00 00 12 34 00 C8 56 78 01 90 78 9B 00 7B FF 85 1F 71 02 05
|
|
|
|
--print_reg--
|
|
a b= 02 05
|
|
factory_ws
|
|
0 kg = 0x1235
|
|
200 kg = 0x5678
|
|
400 kg = 0x789a
|
|
|
|
zerows
|
|
0 kg = 0x1234
|
|
200 kg = 0x5678
|
|
400 kg = 0x789b
|
|
|
|
s->zeroout= 8049 = 0x1f71
|
|
|
|
s->sensor 0x0001 0x0002 0x0003 0x0004
|
|
e2p read success
|
|
|
|
--print_reg--
|
|
a b= 02 05
|
|
factory_ws
|
|
0 kg = 0x1235
|
|
200 kg = 0x5678
|
|
400 kg = 0x789a
|
|
|
|
zerows
|
|
0 kg = 0x1234
|
|
200 kg = 0x5678
|
|
400 kg = 0x789b
|
|
|
|
s->zeroout= 8049 = 0x1f71
|
|
|
|
s->sensor 0x0001 0x0002 0x0003 0x0004
|
|
8
|
|
ADC_SAMPLE
|
|
|
|
ADC_SAMPLE
|
|
|
|
ADC_SAMPLE
|
|
|
|
ADC_SAMPLE
|
|
|
|
R.sd.zeroout= 8049 = 0x1f71 offset 1 = 0x 1
|
|
|
|
R.sd.zeroout= 8049 = 0x1f71 offset 2 = 0x 2
|
|
|
|
R.sd.zeroout= 8049 = 0x1f71 offset 3 = 0x 3
|
|
|
|
R.sd.zeroout= 8049 = 0x1f71 offset 4 = 0x 4
|
|
4Z00 FDAA 21C7 Z02 13EF 0B82 Z03 FD31 2240 Z01 F49D 2AD4 1F3D 1F6D 13F2 1F35 1C74 001E
|
|
1EF0 1F64 13F2 1EF7 1C4F 001D
|
|
1EA8 1F4A 1EAF 1EB8 1ED6 0025
|
|
1E5F 1F44 1E5A 1E55 1E94 0024
|
|
1E14 1F3D 1E19 1E74 1E77 0023
|
|
1DD3 1F2F 1DD4 1E39 1E43 0023
|
|
1D92 1F20 1D8C 1E37 1E1D 0022
|
|
1D4C 1F0E 1D4F 1DCF 1DDE 0022
|
|
1D0B 1EFF 1D01 1D7F 1DA2 0021
|
|
1CEA 1EF4 1CBD 1D49 1D79 0021
|
|
FD 04 33 44 55 00 00 00
|
|
|
|
4sensor zero
|
|
|
|
R.sd.sensor 0x245d 0x2b5a 0x e46 0x2478
|
|
&e2p write success
|
|
RRRRRRRRRRRRRRRRRRRRRRRRRRRRR
|
|
2824 5D 2B 5A 0E 46 24 78 00 00 12 35 00 C8 56 78 01 90 78 9A 00 00 12 34 00 C8 56 78 01 90 78 9B 00 7B FF 85 1F 71 02 05
|
|
|
|
--print_reg--
|
|
a b= 02 05
|
|
factory_ws
|
|
0 kg = 0x1235
|
|
200 kg = 0x5678
|
|
400 kg = 0x789a
|
|
|
|
zerows
|
|
0 kg = 0x1234
|
|
200 kg = 0x5678
|
|
400 kg = 0x789b
|
|
|
|
s->zeroout= 8049 = 0x1f71
|
|
|
|
s->sensor 0x245d 0x2b5a 0x0e46 0x2478
|
|
e2p read success
|
|
|
|
--print_reg--
|
|
a b= 02 05
|
|
factory_ws
|
|
0 kg = 0x1235
|
|
200 kg = 0x5678
|
|
400 kg = 0x789a
|
|
|
|
zerows
|
|
0 kg = 0x1234
|
|
200 kg = 0x5678
|
|
400 kg = 0x789b
|
|
|
|
s->zeroout= 8049 = 0x1f71
|
|
|
|
s->sensor 0x245d 0x2b5a 0x0e46 0x2478
|
|
1F28 1F65 1CAE 1F2D 1E9A 0024
|
|
1EEA 1F58 1EF4 1F37 1F1B 0025
|
|
1EA3 1F45 1EB3 1ECE 1EDA 0025
|
|
1E72 1F35 1E69 1E92 1EA8 0024
|
|
1E2A 1F25 1E2B 1E7B 1E7D 0023
|
|
FD 02 33 44 55 00 00 00
|
|
|
|
--read --
|
|
a b=
|
|
--print_reg--
|
|
a b= 02 05
|
|
factory_ws
|
|
0 kg = 0x1235
|
|
200 kg = 0x5678
|
|
400 kg = 0x789a
|
|
|
|
zerows
|
|
0 kg = 0x1234
|
|
200 kg = 0x5678
|
|
400 kg = 0x789b
|
|
|
|
s->zeroout= 8049 = 0x1f71
|
|
|
|
s->sensor 0x245d 0x2b5a 0x0e46 0x2478
|
|
1DE4 1F16 1DE6 1E20 1E40 0023
|
|
1DA3 1F06 1DA8 1DFB 1E13 0022
|
|
1D7C 1EF4 1D67 1DA9 1DE0 0022
|
|
1D37 1EE6 1D28 1D53 1DA6 0021
|
|
1CE9 1ED4 1CE7 1D37 1D76 0020
|
|
1CA7 1EC2 1CA6 1D02 1D44 0020
|
|
1C5F 1EAF 1C60 1CA3 1D04 001F
|
|
1C2D 1EA1 1C24 1C58 1CD2 001F
|
|
1BEB 1E93 1BDC 1C21 1C9E 001E
|
|
FD 03 33 44 55 00 00 00
|
|
|
|
--read R.sd--
|
|
a b=
|
|
--print_reg--
|
|
a b= 02 05
|
|
factory_ws
|
|
0 kg = 0x1235
|
|
200 kg = 0x5678
|
|
400 kg = 0x789a
|
|
|
|
zerows
|
|
0 kg = 0x1234
|
|
200 kg = 0x5678
|
|
400 kg = 0x789b
|
|
|
|
s->zeroout= 8049 = 0x1f71
|
|
|
|
s->sensor 0x245d 0x2b5a 0x0e46 0x2478
|
|
1BAB 1E83 1B98 1BDB 1C68 001D
|
|
1B7D 1E70 1B5A 1BA3 1C3A 001D
|
|
1B32 1E5F 1B0B 1AF9 1BE5 001C
|
|
1AEA 1E53 1AD3 1AEE 1BBF 001B
|
|
*********/
|
|
|
|
|
|
|