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.
228 lines
7.4 KiB
228 lines
7.4 KiB
////////////////////////////////////////////////////////////////////////////
|
|
///@copyright Copyright (c) 2020, 传控科技 All rights reserved.
|
|
///-------------------------------------------------------------------------
|
|
/// @file cs1232.h
|
|
/// @brief hard cs1232 include
|
|
/// @info FILE FOR HARDWARE cs1232
|
|
///-------------------------------------------------------------------------
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/// @version 1.0
|
|
/// @author CC
|
|
/// @date 20200530
|
|
/// @note
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
#ifndef _BSP_cs1232_H
|
|
#define _BSP_cs1232_H
|
|
|
|
#include "../bsp/bsp_config.h"
|
|
#include "../msp/msp_uart0.h"
|
|
#include "../ctask/task.h"
|
|
|
|
|
|
|
|
#define D_ADCCH_1 0
|
|
#define D_ADCCH_2 1
|
|
#define D_ADCCH_3 2
|
|
#define D_ADCCH_4 3
|
|
|
|
#define D_ADCCH_T 8
|
|
#define D_ADCCH_Toff 9
|
|
|
|
///数字部分需要有四个数据转换周期满足模拟输入信号的建立和滤波器的建立时间要求。芯
|
|
///片从外部差分输入信号切换到温度传感器、从温度传感器切换到外部差分输入信号,或通
|
|
///道间切换,到新的正确的数据到来都需要四个数据转换周期。整个建立过程如下图所示:
|
|
///A0/TEMP _______________/````````
|
|
///'DRDY/DOUT----------------/``\'
|
|
///改变 A0 或 TEMP 后的建立时间 40--50 us
|
|
//// 建立时间 ( 保持高电 平)
|
|
/// SPEED = 1 57--57 ms
|
|
/// SPEED = 0 407--407 ms
|
|
|
|
////值是在 fclk=4.9152MHz 时对应的值,不同的 fclk 频率,数值等比例变化
|
|
|
|
/// CS1232 在连续转换过程中,若外部差分输入信号发生突然变化,同样需要建立时间。突变
|
|
///的信号需要 4 个转换周期进行建立,第 5 个转换周期得到最终的 AD 值。图 7 描述突变信
|
|
///号建立的过程。若在建立的过程中,信号再发生突变,则忽略之前的建立,需要新的 4 个
|
|
///转换周期进行建立,之后紧接着的第 5 个转换周期得到最终的 AD 值。
|
|
|
|
/// 内部振荡器频率 4.6 5 5.4 MHz
|
|
/// 内置时钟温漂 250 ppm/℃----40``85 125*250= 31250 /1000000 = 0.03125 变化为3.125%
|
|
|
|
/// 电阻的2113温度系数值(TCR)的单位为PPM或者PPM/摄氏度5261。
|
|
|
|
/// 其含义为当温度上升或者下降1摄氏度时,电阻的41021653阻值的变化为百万分之几。
|
|
|
|
/// 例如15PPM 1kΩ的 0.1%精度的电阻,如下图。
|
|
|
|
/// 温漂的含义在这回里为,当温度上升或下降1摄氏度时,阻值上升或者降低,百万分之答15.
|
|
|
|
//// 温度系数:±ppm/℃,bai即单位温度引起的电阻值的变化。ppm(Part Per Million)表示百万分之几,
|
|
////比如:标称阻值为1k的电du阻,温度系数为±100ppm/℃,意为温度变化一摄zhi氏度,
|
|
///电阻值的变化为1k±0.1Ω,变化100℃,阻值变化为1k±10Ω,精度非常高了。
|
|
////电阻的温度系数精密级的在几十ppm,普通dao的是200~250ppm,最差的也不过500ppm。
|
|
#define D_adc_delay() Lc_delay_nop(2)
|
|
#define D_adc_delay2() Lc_delay_nop(1)
|
|
|
|
/**************
|
|
|
|
IO DEFINE PIN
|
|
P1.0 DOUT2 1
|
|
P1.6 SCLK2 2
|
|
P1.7 LED1 3
|
|
P5.4 LED2 7
|
|
P5.5 485_RE 9
|
|
P1.1 PDWN 20
|
|
P1.2 GAIN0 19
|
|
P3.7 DOUT3 18
|
|
P3.6 DOUT1 17
|
|
P3.5 SCLK1 16
|
|
P3.4 SCLK3 15
|
|
P3.3 DOUT4 14
|
|
P3.2 SCLK4 13
|
|
P3.1 TXD0 12
|
|
P3.0 RXD0 11
|
|
*****************/
|
|
|
|
|
|
#define D_ADC_DOUT1_INIT() ///D_P17_INIT()
|
|
#define D_ADC_SCLK1_INIT() ///D_P16_INIT()
|
|
#define D_ADC_CS_A0_INIT() ///D_P55_INIT()
|
|
#define D_ADC_DOUT1_AT() D_P36_AT()
|
|
#define D_ADC_DOUT1_ON() D_P36_ON()
|
|
#define D_ADC_SCLK1_ON() D_P35_ON();D_adc_delay2();
|
|
#define D_ADC_CS_A0_ON() //D_P55_ON()
|
|
#define D_ADC_DOUT1_OFF() D_P36_OFF()
|
|
#define D_ADC_SCLK1_OFF() D_P35_OFF();D_adc_delay();
|
|
#define D_ADC_CS_A0_OFF() //D_P55_OFF()
|
|
|
|
|
|
//#define D_ADC_CS2_A0_ON() D_P13_ON()
|
|
#define D_ADC_DOUT2_ON() D_P10_ON()
|
|
#define D_ADC_DOUT2_AT() D_P10_AT()
|
|
#define D_ADC_SCLK2_ON() D_P16_ON();D_adc_delay2();
|
|
//#define D_ADC_CS2_A0_INIT() ///D_P13_INIT()
|
|
#define D_ADC_DOUT2_INIT() ///D_P14_IN() ///D_P14_INIT()
|
|
#define D_ADC_SCLK2_INIT() ///D_P15_INIT()
|
|
//#define D_ADC_CS2_A0_OFF() D_P13_OFF()
|
|
#define D_ADC_DOUT2_OFF() D_P10_OFF()
|
|
#define D_ADC_SCLK2_OFF() D_P16_OFF();D_adc_delay();
|
|
|
|
#define D_ADC_DOUT3_INIT() ///D_P11_INIT()
|
|
#define D_ADC_SCLK3_INIT() ///D_P13_INIT()
|
|
#define D_ADC_DOUT3_AT() D_P37_AT()
|
|
#define D_ADC_DOUT3_ON() D_P37_ON()
|
|
#define D_ADC_SCLK3_ON() D_P34_ON();D_adc_delay2();
|
|
#define D_ADC_DOUT3_OFF() D_P37_OFF()
|
|
#define D_ADC_SCLK3_OFF() D_P34_OFF();D_adc_delay();
|
|
|
|
#define D_ADC_DOUT4_INIT() ///D_P34_INIT()
|
|
#define D_ADC_SCLK4_INIT() ///D_P33_INIT()
|
|
#define D_ADC_DOUT4_AT() D_P33_AT()
|
|
#define D_ADC_DOUT4_ON() D_P33_ON()
|
|
#define D_ADC_SCLK4_ON() D_P32_ON();D_adc_delay2();
|
|
#define D_ADC_DOUT4_OFF() D_P33_OFF()
|
|
#define D_ADC_SCLK4_OFF() D_P32_OFF();D_adc_delay();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define D_ADC_TEMP_INIT() ///D_P12_INIT()
|
|
|
|
#define D_ADC_TEMP_ON() //D_P12_ON()
|
|
#define D_ADC_TEMP_OFF() //D_P12_OFF()
|
|
|
|
|
|
#define D_ADC_PDWN_INIT() ///D_P54_INIT()
|
|
|
|
#define D_ADC_PDWN_OFF() D_P11_OFF()
|
|
#define D_ADC_PDWN_ON() D_P11_ON()
|
|
|
|
|
|
|
|
|
|
#define D_ADC_GAIN1_INIT() ///D_P37_INIT()
|
|
#define D_ADC_GAIN0_INIT() ///D_P36_INIT()
|
|
|
|
#define D_ADC_GAIN1_OFF() //D_P37_OFF()
|
|
#define D_ADC_GAIN0_OFF() D_P12_OFF()
|
|
#define D_ADC_GAIN1_ON() //D_P37_ON()
|
|
#define D_ADC_GAIN0_ON() D_P12_ON()
|
|
|
|
// #define D_ADS1213_GAIN_VAL 1
|
|
// #define D_ADS1213_GAIN_VAL 2
|
|
#define D_ADS1213_GAIN_VAL 64
|
|
//#define D_ADS1213_GAIN_VAL 128
|
|
|
|
#if (D_ADS1213_GAIN_VAL == 128)
|
|
#define D_ADS1213_INIT() D_ADC_GAIN1_ON();D_ADC_GAIN0_ON();\
|
|
D_ADC_TEMP_OFF();\
|
|
D_ADC_CS_A0_ON();\
|
|
D_ADC_SCLK1_OFF();D_ADC_SCLK2_OFF();\
|
|
D_ADC_SCLK3_OFF();D_ADC_SCLK4_OFF();
|
|
|
|
#elif (D_ADS1213_GAIN_VAL == 64)
|
|
#define D_ADS1213_INIT() D_ADC_GAIN1_ON();D_ADC_GAIN0_OFF();\
|
|
D_ADC_TEMP_OFF();\
|
|
D_ADC_CS_A0_ON();\
|
|
D_ADC_SCLK1_OFF();D_ADC_SCLK2_OFF();\
|
|
D_ADC_SCLK3_OFF();D_ADC_SCLK4_OFF();
|
|
#elif (D_ADS1213_GAIN_VAL == 2)//浠呴檺U1ADS1232浣跨敤
|
|
xx
|
|
#define D_ADS1213_INIT() D_ADC_GAIN1_OFF();D_ADC_GAIN0_ON();\
|
|
D_ADC_TEMP_OFF();\
|
|
D_ADC_CS_A0_ON();D_ADC_CS2_A0_ON();\
|
|
D_ADC_SCLK1_OFF();D_ADC_SCLK2_OFF();
|
|
#elif (D_ADS1213_GAIN_VAL == 1)
|
|
xx
|
|
#define D_ADS1213_INIT() D_ADC_GAIN1_OFF();D_ADC_GAIN0_OFF();\
|
|
D_ADC_TEMP_OFF();\
|
|
D_ADC_CS_A0_ON();D_ADC_CS2_A0_ON();\
|
|
D_ADC_SCLK1_OFF();D_ADC_SCLK2_OFF();
|
|
#endif
|
|
|
|
extern void L0_ADS1213_INIT(void);
|
|
extern void L0_ADS1213_T(u8 onff);
|
|
extern void L0_ADS1213_CH(u8 ch);
|
|
//extern vS32 L0_ADS1213_read1(U8 *error);
|
|
//extern vS32 L0_ADS1213_read2(U8 *error);
|
|
//extern vS32 L0_ADS1213_read(U8 ch,U8 *error);
|
|
//extern U8 L0_ADS1213_is_low(U8 ch);
|
|
//extern U8 L0_ADS1213_is_high(U8 ch);
|
|
extern void L0_2dc_SCLK(vtype ch,vtype onf);
|
|
extern vtype L0_2dc_DOUT_AT(vtype ch);
|
|
extern vS32 L0_ADS1231_readCH(vtype ch);
|
|
extern vS32 L0_ADS1231_read(U8 ch);
|
|
|
|
typedef struct
|
|
{
|
|
TS_task task;
|
|
vU8 t_stamp;
|
|
vU16 t_stamp2;
|
|
vU16 wakeup_timer;
|
|
|
|
vU8 long_hit;
|
|
// vU8 first_run;
|
|
vU32 u32_i;//
|
|
vU32 u32_m;//
|
|
vU16 u16_v;//
|
|
// unsigned char status;//
|
|
// unsigned char key;//
|
|
}TSS_FLOW_;
|
|
extern TSS_FLOW_ tss_ads;
|
|
|
|
extern void L1_ADS1213_main(void);
|
|
|
|
|
|
|
|
#endif//_BSP_cs1232_H
|
|
/*********************************end file*********************************************/
|
|
|
|
|
|
|
|
|