//////////////////////////////////////////////////////////////////////////// ///@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_schain_H #include "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_shift; /// }TS_shift_averge_; #define D_ch1_0kg_out1_adc (vS16)0xFF77 #define D_ch2_0kg_out1_adc (vS16)0xFFB3 #define D_ch3_0kg_out1_adc (vS16)0x00A4 #define D_ch4_0kg_out1_adc (vS16)0xFFEA #define D_ch1_wantline (vS16)0x18da #define D_ch2_wantline (vS16)0x18da #define D_ch3_wantline (vS16)0x18da #define D_ch4_wantline (vS16)0x18da /////需要通过测试配置 如果不在意符号位 可以优化掉 #define D_ch1_out1_offset (vS16)(D_ch1_wantline-D_ch1_0kg_out1_adc) #define D_ch2_out1_offset (vS16)(D_ch2_wantline-D_ch2_0kg_out1_adc) #define D_ch3_out1_offset (vS16)(D_ch3_wantline-D_ch3_0kg_out1_adc) #define D_ch4_out1_offset (vS16)(D_ch4_wantline-D_ch4_0kg_out1_adc) typedef struct {///!!!!!和 D_TS_adc_SPara_LEN 需要一一对应 u8 rev1; ////= 0x30 第一次运行 u8 ch; // vU16 wantline; ///固定的硬件参数(例如称重中的0kg,压力中的0压力)时想要输出的adc的值 // vU16 offset; ///当前adc被偏移到wantline的时候 和原始值out_adc的差值 一般=(wantline-原始adc) // vU8 ashift; ///移动的位数 1-2 2-4 3-8 4-16 // vU8 bshift444; ///移动的位数 1-2 2-4 3-8 4-16 fixme:需要开放时调整 u16 wantline; ///固定的硬件参数(例如称重中的0kg,压力中的0压力)时想要输出的adc的值 u16 offset; ///当前adc被偏移到wantline的时候 和原始值out_adc的差值 一般=(wantline-原始adc) u8 ashift; ///移动的位数 1-2 2-4 3-8 4-16 u8 bshift444; ///移动的位数 1-2 2-4 3-8 4-16 fixme:需要开放时调整 // u8 rev1; // u8 rev2; // u8 rev2; }TS_adc_SPara_; extern TS_adc_SPara_ TS_adc_SPara[D_ADC_CHANNEL_NUM]; #define D_TS_adc_SPara_LEN (8) //AD_CHANNEL_SAMPLE 采样 #define MAX_OUT_NUM 10 typedef struct { TS_task task; /////S参数区 TS_adc_SPara_ *pSPara; /////S参数区 vU8 firstRun; vU8 ok; vU8 jitter_start; ///刚开始的抖动,先去掉几个最开始的数据 vU32 out0; vU16 out1_adc; vU16 out2_offset; vU16 out3_Peak; TS_shift_averge_ ts_SAa; /// TS_shift_averge_ ts_SAb; fixme:需要开放时调整 vU16 outm[3];///中值移位滤波的缓存 vU16 out4_shift;//滤波输出 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 #if 0 ///cc 2023/04/08--4:7:12 准备删除 ////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 ******/ #endif