|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
|
|
|
|
///-------------------------------------------------------------------------
|
|
|
|
/// @file bsp_drv.h
|
|
|
|
/// @brief bsp @ driver config
|
|
|
|
///-------------------------------------------------------------------------
|
|
|
|
/// @version 1.0
|
|
|
|
/// @author CC
|
|
|
|
/// @date 20220109
|
|
|
|
/// @note cc_AS_stc02
|
|
|
|
|
|
|
|
|
|
|
|
/*******************
|
|
|
|
xxx.x
|
|
|
|
Layer4: send/show
|
|
|
|
|
|
|
|
write to buffer -->send
|
|
|
|
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
weight = cal(adc32)
|
|
|
|
|
|
|
|
Layer3: app weight
|
|
|
|
|
|
|
|
|
|
|
|
tst_weight.adc32 = ts_adc_samples[0].out5;
|
|
|
|
选择曲线 line
|
|
|
|
|
|
|
|
单路到多路
|
|
|
|
-----------------------------
|
|
|
|
out3 滤波啊
|
|
|
|
out2 滤波啊
|
|
|
|
|
|
|
|
Layer2: asp asp_adc
|
|
|
|
|
|
|
|
out1 读取adc
|
|
|
|
|
|
|
|
-------------------------
|
|
|
|
void L0_ADS1231_readCH2(vtype ch,vU16 *d)
|
|
|
|
|
|
|
|
Layer1: bsp: bsp_cs1232 最底层的adc的采样
|
|
|
|
|
|
|
|
*******************/
|
|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef _APP_WEIGHT_H
|
|
|
|
#define _APP_WEIGHT_H
|
|
|
|
|
|
|
|
#include "TTSS_task.h"
|
|
|
|
#include "c_lib.h"
|
|
|
|
#include "asp_schain.h"
|
|
|
|
#include "tpc_debug.h"
|
|
|
|
|
|
|
|
/////////#include "asp_weight_save.h"
|
|
|
|
#include "bsp_config.h"
|
|
|
|
#include "msp_uart1.h"
|
|
|
|
#include "../bsp/bsp_cs1232.h"
|
|
|
|
/////水一般是18-19升,再加上桶,就是大约20公斤
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
vU16 kg;
|
|
|
|
vU16 adc; ///kg 对应的adc的采样值
|
|
|
|
|
|
|
|
}TS_weight_point_;///8Bytes
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
///40Bytes
|
|
|
|
u8 fx;///
|
|
|
|
u8 num;///从fx开始算起 到结束//12,
|
|
|
|
|
|
|
|
vU16 sensor_adc[4];//// 34 56 78 90
|
|
|
|
|
|
|
|
vU16 kgx10_out;//// 12
|
|
|
|
|
|
|
|
vU16 adc32;//// 12
|
|
|
|
|
|
|
|
u8 ocr;//// 3
|
|
|
|
|
|
|
|
vU16 out6;//// 12
|
|
|
|
|
|
|
|
}TS_weight_out_;
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
u8 filter;
|
|
|
|
u8 slaveId;
|
|
|
|
u8 cmd;
|
|
|
|
u8 num[2];
|
|
|
|
vU16 sensor_adc[4];
|
|
|
|
vU16 kgx10_out;
|
|
|
|
vU16 adc32;
|
|
|
|
u8 ocr;
|
|
|
|
vU16 out6;
|
|
|
|
}TS_weight_out_;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
u8 filter;
|
|
|
|
u8 slaveId;
|
|
|
|
u8 cmd;
|
|
|
|
u8 num[2];
|
|
|
|
TS_weight_point_ wpoint[3];
|
|
|
|
u8 ocr;
|
|
|
|
vU16 out6;
|
|
|
|
}TS_WPoint_out_;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
u8 filter;
|
|
|
|
u8 slaveId;
|
|
|
|
u8 cmd;
|
|
|
|
u8 num[2];
|
|
|
|
u8 kgx10zero[2];
|
|
|
|
u8 ocr;
|
|
|
|
vU16 out6;
|
|
|
|
}TS_Kgx10zero_out_;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define D_rev0x55aa55aa 0x55aa55aa
|
|
|
|
|
|
|
|
////需要向eeprom中存储的数据
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
///40Bytes
|
|
|
|
u8 rev1;
|
|
|
|
u8 rev2;
|
|
|
|
TS_weight_point_ ts_WPoint[3]; ///4x3=12 手工清零后的参数, 没有清零或者出错恢复到和出厂设置一样,需要实时保存
|
|
|
|
u8 rev3;
|
|
|
|
u8 rev4;
|
|
|
|
}TS_weight_SPara_;
|
|
|
|
////extern TS_weight_SPara_ ts_weight_SPara;
|
|
|
|
#define D_TS_weight_SPara_len 16///
|
|
|
|
|
|
|
|
extern TS_weight_SPara_ ts_weight_SPara;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
TS_task task;////如果
|
|
|
|
|
|
|
|
/////S参数区
|
|
|
|
TS_weight_SPara_ *pSPara; ///
|
|
|
|
/////S参数区
|
|
|
|
|
|
|
|
vS32 rough_weight;
|
|
|
|
vU32 adc32;
|
|
|
|
vU32 sum32;
|
|
|
|
vU32 sum32b;
|
|
|
|
vU32 out6;
|
|
|
|
vU32 t32a,t32b; //计算重量所用参数
|
|
|
|
/// ts_weight_sheet_
|
|
|
|
u8 slow;
|
|
|
|
u8 zero;
|
|
|
|
u8 pp;
|
|
|
|
vU16 kgx10;///计算出来的重量
|
|
|
|
vU16 kgx10_zero;/// 重量零点值
|
|
|
|
vU16 kgx10_out;/// 串口对外输出的重量数值,受kgx10_zero影响: s->kgx10_out = s->kgx10 - s->kgx10_zero;
|
|
|
|
}TS_TASK_weight_;
|
|
|
|
extern TS_TASK_weight_ tst_weight;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*******
|
|
|
|
^
|
|
|
|
|
|
|
|
|
| o
|
|
|
|
| |
|
|
|
|
| o |
|
|
|
|
| | |
|
|
|
|
o | |
|
|
|
|
| | |
|
|
|
|
|____|_____|____________>
|
|
|
|
|
|
|
|
0 40 80
|
|
|
|
[0] [1] [2]
|
|
|
|
20KG 40kg
|
|
|
|
190 290
|
|
|
|
19kg 29kg
|
|
|
|
|
|
|
|
|
|
|
|
上电时候 ,如果adc在一定范围内 自动清零
|
|
|
|
出厂:0 40 80
|
|
|
|
上电 0+-% 40+-% 80+-%
|
|
|
|
|
|
|
|
/// ts_weight_sheet_ factory_ws[3]; ///出厂的设置,发布出厂指令后更新 由上位机命令更改,实时保存
|
|
|
|
0,0x1235,
|
|
|
|
D_20kg,0x5678,
|
|
|
|
D_40kg,0x789a,
|
|
|
|
/// ts_weight_sheet_ zerows[3]; ///手工清零后的参数, 没有清零或者出错恢复到和出厂设置一样,需要实时保存
|
|
|
|
0,0x1234,
|
|
|
|
D_20kg,0x5678,
|
|
|
|
D_40kg,0x789b,
|
|
|
|
|
|
|
|
factory_ws
|
|
|
|
0 kg = 0x1235
|
|
|
|
190 kg = 0x5678
|
|
|
|
290 kg = 0x789a
|
|
|
|
|
|
|
|
zerows
|
|
|
|
0 kg = 0x1234
|
|
|
|
190 kg = 0x5678
|
|
|
|
290 kg = 0x789b
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
|
|
|
|
////
|
|
|
|
extern void L3_task_weight_cal(void);
|
|
|
|
extern void L3_task_weight_init(void);
|
|
|
|
extern void L3_task_weight_handler(TS_TASK_weight_ *s);
|
|
|
|
///extern void L3_task_weight_set(Ts_uart_rev_ *ph4);
|
|
|
|
///extern void L3_weight_setPara(u8 filter);
|
|
|
|
extern void L3_weight_ONdebug(u8 filter);
|
|
|
|
extern void L4_weight_print(void);
|
|
|
|
extern void L4_weight_out(void);
|
|
|
|
extern void L4_WPoint_out(void);
|
|
|
|
extern void L4_kgx10zero_out(void);
|
|
|
|
|
|
|
|
#define D_get_weight() tst_weight.kgx10 //计算出的重量值
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // #ifndef _APP_TASK_ADC_H
|
|
|
|
|