//////////////////////////////////////////////////////////////////////////// ///@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 _asp_weight_save_H #define _asp_weight_save_H #include "TTSS_task.h" #include "c_lib.h" #include "../bsp/bsp_config.h" #include "msp_uart1.h" #include "msp_uartN.h" ///#include "asp_para.h" ///#include "app_weight.h" ////#include "asp_adc.h" extern void L4_iap_2_reg(void); void L4_print_iap(TS_weight_SPara_ *s); u8 L4_reg_2_iap(void); #endif // #ifndef _APP_TASK_ADC_H