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.
146 lines
4.8 KiB
146 lines
4.8 KiB
////////////////////////////////////////////////////////////////////////////
|
|
///@copyright Copyright (c) 2022, 传控科技 All rights reserved.
|
|
///-------------------------------------------------------------------------
|
|
/// @file app_save.h
|
|
/// @brief @ app save
|
|
///-------------------------------------------------------------------------
|
|
/// @version 1.0
|
|
/// @author CC
|
|
/// @date 20220120
|
|
/// @note cc_AS_stc02
|
|
|
|
|
|
/*********
|
|
写操作1字节,
|
|
擦除1扇区 512字节---4-6ms
|
|
字节中的0写为1时 擦除扇区
|
|
最安全最简单,最逻辑清楚的事,就是
|
|
每次擦一个扇区每次写一个扇区,
|
|
--->每次擦一个扇区每次写一个扇区的前面的有效数据,
|
|
|
|
1,要求我们尽量小,最好少于512字节
|
|
次数限制 30万次
|
|
2, 尽量减少写,擦.--->调试的时候要谨慎,最后才可打开写;
|
|
|
|
背景知识和应用需求决定了存储策略是如何设计的
|
|
|
|
|
|
flash 28k 分出8k EEp 则物理地址位28K的最后8K 物理地址为5000h-6FFFh
|
|
|
|
*******/
|
|
|
|
/*******
|
|
app_config 可以调用app_save 偏向应用级别的配置文件
|
|
app_save 保存的策略,不同程序可能要求不同
|
|
|
|
|
|
板子有什么外设,这些几乎是纯硬件的东西,另外根据基本的应用,需要板子的外设如何使用的大部分放到bsp中
|
|
asp 已经有模式的配置了,app通过参数调用asp,来决定使用外设什么模式.
|
|
协议发送,尽量是透明的.
|
|
|
|
|
|
app 结果 重量,保存校准参数
|
|
asp app support program wifi的模式设置,adc的读取后的处理
|
|
bsp board support program 板子上有的外设,wdt,wifi的底层配置函数,sensor
|
|
msp mcu support program ,cpu自身的外设,uart led
|
|
cpu
|
|
|
|
*****/
|
|
|
|
/*******
|
|
adc采样值
|
|
^
|
|
|
|
|
| o
|
|
| |
|
|
| o |
|
|
| | |
|
|
| ---|---- |------------0=adc=0
|
|
0 | |D_ADC_OFFSET
|
|
|____|_____|____________>重量 adc + D_ADC_OFFSET
|
|
|
|
0 40 80 重量点
|
|
|
|
|
|
|
|
称重需要保存的东西:
|
|
1,传感器正负转换的<偏移量 >
|
|
2,传感器找平的偏移量 一般选择四个传感器在0kg的时候的<最小值>
|
|
3,<三个重量点的校准> + <零点偏移量>
|
|
3.1 极端重量的过滤,超过250kg,或者坐偏的时候出现异常值,无效,维持上次值.<超过250kg,>
|
|
4, 上电自动校准零点:零点校准 刚上电的时候如果重量小于某个范围<(+-10kg)>,默认这个重量为此时的<零点>
|
|
所以这个范围需要配置,需要存储.
|
|
5,手工清零的时候,此时重量<零点>需要修改,产生一个偏移量,同时其他的两个校准点需要程序计算时同步更新.
|
|
相当于调用4,但是范围不限.
|
|
|
|
|
|
|
|
策略B:4不用保存零点,只有手工清零才保存一下.
|
|
---->策略C: 4.5 都不保存,只有用户校准状态才保存
|
|
选择c,按键配合,长按按键时重量为0 闪烁(H1sL0.5s)3下
|
|
|
|
本次称重功能需要保存的东西:
|
|
正负转换的<偏移量 > Byte x n=? 出厂才定.
|
|
找平的偏移量 Byte x n=? 出厂才定.
|
|
<三个重量点的校准> Byte x n=? 出厂才定.
|
|
<零点偏移量> 出厂定,校准清零
|
|
极端重量的过滤,超过250kg 出厂定
|
|
|
|
其他需要保存
|
|
版本号,id之类的
|
|
|
|
写3个扇区,之后判定两个扇区以上相同,并且在合理范围内,此参数才可使用.否则使用程序出厂内置的参数.
|
|
|
|
|
|
|
|
*****/
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _APP_SAVE_H
|
|
#define _APP_SAVE_H
|
|
|
|
#include "TTSS_task.h"
|
|
#include "c_lib.h"
|
|
|
|
#include "../bsp/bsp_config.h"
|
|
#include "msp_uart0.h"
|
|
#include "msp_uartN.h"
|
|
#include "asp_para.h"
|
|
#include "app_weight.h"
|
|
////#include "asp_adc.h"
|
|
|
|
|
|
#define D_rev0x55aa55aa 0x55aa55aa
|
|
|
|
////需要向eeprom中存储的数据
|
|
typedef struct _iap_data
|
|
{
|
|
///40Bytes
|
|
S16 slaver_id;
|
|
|
|
vU16 sensor[4];//// 4x2与第一个传感器的差值,第一个传感器为偏移量
|
|
|
|
ts_weight_sheet_ factory_ws[3]; ///4x3=12 出厂的设置,发布出厂指令后更新 由上位机命令更改,实时保存
|
|
ts_weight_sheet_ zerows[3]; ///4x3=12 手工清零后的参数, 没有清零或者出错恢复到和出厂设置一样,需要实时保存
|
|
vS16 zerodiff_max; ///2 上电时,如果和zerows的零点ADC的差值小于 zerodiff_max 说明没有人,启动上电校准;
|
|
vS16 zerodiff; ///2零点的差值 零公斤位置和手工的差值
|
|
////此值上电后更改, 顺便保存(区别于实时保存),
|
|
vU16 zeroout; //2
|
|
u8 ADC_shiftaverage_a; ///2 a路移位滤波的参数 由上位机命令更改,实时保存
|
|
u8 ADC_shiftaverage_b; /// b路移位滤波的参数 由上位机命令更改,实时保存
|
|
U32 rev0x55aa55aa;
|
|
}TS_IapData_;
|
|
extern TS_IapData_ iapData;
|
|
#define D_TS_IapData_SIZE 46///
|
|
|
|
|
|
extern void L4_iap_2_reg(void);
|
|
|
|
void L4_print_iap(TS_IapData_ *s);
|
|
u8 L4_reg_2_iap(void);
|
|
|
|
#endif // #ifndef _APP_TASK_ADC_H
|
|
|
|
|