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.

213 lines
6.8 KiB

1 year ago
////////////////////////////////////////////////////////////////////////////
///@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_uart0.h"
#include "TTSS_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_SCLK1_INIT() D_stdIO_P3(BITN5);D_ADC_SCLK1_OFF();
#define D_ADC_SCLK1_CLOSE() D_HighR_P3(BITN5);
#define D_ADC_SCLK1_ON() D_P35_ON();D_adc_delay2();
#define D_ADC_SCLK1_OFF() D_P35_OFF();D_adc_delay();
//#define D_ADC_DOUT1_INIT() D_stdIO_P3(BITN6);
#define D_ADC_DOUT1_INIT() D_HighR_P3(BITN6);
#define D_ADC_DOUT1_CLOSE() D_HighR_P3(BITN6);
//#define D_ADC_DOUT1_ON() D_P36_ON()
//#define D_ADC_DOUT1_OFF() D_P36_OFF()
#define D_ADC_DOUT1_AT() D_P36_AT()
#define D_ADC_SCLK2_INIT() D_stdIO_P1(BITN6);D_ADC_SCLK2_OFF();
#define D_ADC_SCLK2_CLOSE() D_HighR_P1(BITN6);
#define D_ADC_SCLK2_ON() D_P16_ON();D_adc_delay2();
#define D_ADC_SCLK2_OFF() D_P16_OFF();D_adc_delay();
1 year ago
#define D_ADC_DOUT2_INIT() D_HighR_P1(BITN0);
#define D_ADC_DOUT2_CLOSE() D_HighR_P1(BITN0);
#define D_ADC_DOUT2_ON() D_P10_ON()
#define D_ADC_DOUT2_OFF() D_P10_OFF()
#define D_ADC_DOUT2_AT() D_P10_AT()
1 year ago
#define D_ADC_SCLK3_INIT() D_stdIO_P3(BITN4);D_ADC_SCLK3_OFF();
#define D_ADC_SCLK3_CLOSE() D_HighR_P3(BITN4);
#define D_ADC_SCLK3_ON() D_P34_ON();D_adc_delay2();
#define D_ADC_SCLK3_OFF() D_P34_OFF();D_adc_delay();
#define D_ADC_DOUT3_INIT() D_HighR_P3(BITN7);
#define D_ADC_DOUT3_CLOSE() D_HighR_P3(BITN7);
#define D_ADC_DOUT3_ON() D_P37_ON()
#define D_ADC_DOUT3_OFF() D_P37_OFF()
#define D_ADC_DOUT3_AT() D_P37_AT()
#define D_ADC_SCLK4_INIT() D_stdIO_P3(BITN2);D_ADC_SCLK4_OFF();
#define D_ADC_SCLK4_CLOSE() D_HighR_P3(BITN2);
#define D_ADC_SCLK4_ON() D_P32_ON();D_adc_delay2();
#define D_ADC_SCLK4_OFF() D_P32_OFF();D_adc_delay();
#define D_ADC_DOUT4_INIT() D_HighR_P3(BITN3);
#define D_ADC_DOUT4_CLOSE() D_HighR_P3(BITN3);
#define D_ADC_DOUT4_ON() D_P33_ON()
#define D_ADC_DOUT4_OFF() D_P33_OFF()
#define D_ADC_DOUT4_AT() D_P33_AT()
#define D_ADC_GAIN0_INIT() D_stdIO_P1(BITN2)
#define D_ADC_GAIN0_CLOSE() D_HighR_P1(BITN2)
#define D_ADC_GAIN0_128() D_P12_ON()
#define D_ADC_GAIN0_64() D_P12_OFF()
#define D_ADC_PDWN_INIT() D_stdIO_P1(BITN1)
#define D_ADC_PDWN_CLOSE() D_HighR_P1(BITN1)
#define D_ADC_PD_WACKUP() D_P11_ON() //唤醒时间至少5.6ms
#define D_ADC_POWERDOWN() D_P11_OFF() ///持续26us以上
1 year ago
#define D_ADS1213_GAIN_64 64
#define D_ADS1213_GAIN_128 1
#define D_ADS1213_POWERDOWN 0
#define D_ADS1213_GAIN_VAL 128///FIXME
///xxxxxxxxxxxxxxxxxxxxxextern void L0_ADS1213_INIT(void);
extern void L0_ADS1213_INIT(vtype mode);
///void L0_ADS1231_readCH2(vtype ch,vU32 *rdata);
///void L0_ADS1231_readCH2(vtype ch,vU16 *d);
void L0_ADS1231_readCH2(vtype ch,vU32 *d);
extern vtype L0_adc_DOUT_AT(vtype ch);
#endif//_BSP_cs1232_H
/*********************************end file*********************************************/
/*******
extern void L1_ADS1213_main(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_adc_SCLK(vtype ch,vtype onf);
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;
vU32 u32_adc;//
/// vU8 long_hit;
// vU8 first_run;
vU32 u32_i;//
vU32 u32_m;//
vU16 u16_v;//
// unsigned char status;//
// unsigned char key;//
}TS_cs1232_;
extern TS_cs1232_ ts_adc;
*******/