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.
 
 
 
 

127 lines
3.0 KiB

////////////////////////////////////////////////////////////////////////////
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
///-------------------------------------------------------------------------
/// @file bsp_drv.h
/// @brief bsp @ driver config
///-------------------------------------------------------------------------
/// @version 1.0
/// @author CC
/// @date 20180331
/// @note cc_AS_stc02
//////////////////////////////////////////////////////////////////////////////
#ifndef _asp_schain_H
#define _asp_schainH
#include "../bsp/bsp_config.h"
#include "TTSS_task.h"
#include "c_lib.h"
///#include "app_config.h"
#define D_Wch1 0
#define D_Wch2 1
#define D_Wch3 2
#define D_Wch4 3
#define ADC_CHANNEL_STATUS_UNREADY 0 //UnReady状态,不能读取
#define ADC_CHANNEL_STATUS_READY 1 //ready状态,可以读取
#define D_ADC_CHANNEL_NUM 4
#define D_ADC_CH_SAMPLE_BUF_MAX 50
#define D_ADC_CH_BLUE_POOL_NUM 3
typedef struct
{
vU32 average; ///
vU8 shift; ///移动的位数 1-2 2-4 3-8 4-16
vU32 sum;
vU32 new; ///新的输出值
vU16 out4; ///
}TS_shift_averge_;
////cc 比较重要的滤波调整参数,根据实际需要进行调整
#define D_ADC_shiftaverage_a 2
#define D_ADC_shiftaverage_b 4
///vtype i; vU32 rdata = 0;
//任务读
/// 单个传感器 D_sensor_zoom=8 2kg 289 80kg 8374
/// D_sensor_zoom=6 1274 31787
///#define D_sensor_zoom 6
///#define D_sensor_zoom_FF 0xFFfc0000
#define D_sensor_zoom 7
#define D_sensor_zoom_FF 0xFFfe0000
///#define D_sensor_zoom 8///实际上8位不需要,因为强制转换成16位后自动符合要求
///#define D_sensor_zoom_FF 0xfF000000
//// 31688 80kg 31688/80= =400
//#define D_ADC_PER_KG 400 ///每公斤adc
//#define D_ADC_OFFSET (20*D_ADC_PER_KG)
///134
///extern TS_GlobalRegister R;
#define D_ADC_PER_KG 0x134///每公斤adc
#define D_ADC_OFFSET(ch) ts_adc_samples[ch].offset////(30*D_ADC_PER_KG)
///#define D_ADC_OFFSET(ch) 0////(30*D_ADC_PER_KG)
/*****
000028FE 1kg 81.984375
00015D85 3kg 699.0390625 617.0546875
2^7 128 0x134
******/
//AD_CHANNEL_SAMPLE 采样
#define MAX_OUT_NUM 10
typedef struct _s_task_adc_sample
{
TS_task task;
vU8 ok;
vU8 ch;
/// vS32 adcval;
// vS32 pool;
vU8 jitter_start; ///刚开始的抖动,先去掉几个最开始的数据
vU32 out0;
vU16 out1;
S16 out1a;
vU16 outm[3];///中值移位滤波的缓存
vU16 out2;
vU16 out3;
/****************
^
|
|--------------------------zeroout
| | | | | offset
| | | | .
| . | |
0------.----|-------------> 0
| .
四个点是四个传感器的采样值
*********************/
vU16 offset;
vU16 zeroout;
TS_shift_averge_ ts_SAa;
TS_shift_averge_ ts_SAb;
vU16 out4;//滤波输出
vU16 out5;////选择后的
}TS_TASK_ADC_SAMPLE;
extern TS_TASK_ADC_SAMPLE ts_adc_samples[D_ADC_CHANNEL_NUM];
extern void L2_task_adc_init(U8 ch);
extern void L2_task_adc_sample(TS_TASK_ADC_SAMPLE *s);
extern void L2_task_adc_SAinit(U8 ch,U8 *a,U8 *b);
void L3_out_zero(u8 ch);
#endif // #ifndef _asp_adc_H