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.
329 lines
5.6 KiB
329 lines
5.6 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
|
||
|
//////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#include "bsp_cs1232.h"
|
||
|
///TS_cs1232_ ts_adc;///TSS_FLOW_ tss_ads;
|
||
|
|
||
|
void L0_ADS1213_mode(vtype mode)
|
||
|
{
|
||
|
switch(mode)
|
||
|
{
|
||
|
case D_ADS1213_POWERDOWN:
|
||
|
D_ADC_SCLK1_CLOSE();
|
||
|
D_ADC_DOUT1_CLOSE();
|
||
|
D_ADC_SCLK2_CLOSE();
|
||
|
D_ADC_DOUT2_CLOSE();
|
||
|
D_ADC_SCLK3_CLOSE();
|
||
|
D_ADC_DOUT3_CLOSE();
|
||
|
D_ADC_SCLK4_CLOSE();
|
||
|
D_ADC_DOUT4_CLOSE();
|
||
|
D_ADC_POWERDOWN();
|
||
|
// L0_uart0_uc('d');
|
||
|
break;
|
||
|
case D_ADS1213_GAIN_128:
|
||
|
D_ADC_GAIN0_128();
|
||
|
/// L0_uart0_uc('8');
|
||
|
break;
|
||
|
case D_ADS1213_GAIN_64:
|
||
|
D_ADC_GAIN0_64();
|
||
|
// L0_uart0_uc('6');
|
||
|
break;
|
||
|
default:
|
||
|
D_ADC_GAIN0_64();
|
||
|
// L0_uart0_uc('q');
|
||
|
break;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
void L0_ADS1213_INIT(vtype mode)
|
||
|
{
|
||
|
D_ADC_GAIN0_INIT();
|
||
|
D_ADC_SCLK1_INIT();
|
||
|
D_ADC_DOUT1_INIT();
|
||
|
D_ADC_SCLK2_INIT();
|
||
|
D_ADC_DOUT2_INIT();
|
||
|
D_ADC_SCLK3_INIT();
|
||
|
D_ADC_DOUT3_INIT();
|
||
|
D_ADC_SCLK4_INIT();
|
||
|
D_ADC_DOUT4_INIT();
|
||
|
D_ADC_PDWN_INIT();
|
||
|
D_ADC_PD_WACKUP();
|
||
|
L0_ADS1213_mode(mode);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void L0_adc_SCLK(vtype ch,vtype onf)
|
||
|
{
|
||
|
switch (ch)
|
||
|
{
|
||
|
case D_ADCCH_1:
|
||
|
if(onf){D_ADC_SCLK1_ON();}else{D_ADC_SCLK1_OFF();}
|
||
|
break;
|
||
|
case D_ADCCH_2:
|
||
|
if(onf){D_ADC_SCLK2_ON();}else{D_ADC_SCLK2_OFF();}
|
||
|
break;
|
||
|
case D_ADCCH_3:
|
||
|
if(onf){D_ADC_SCLK3_ON();}else{D_ADC_SCLK3_OFF();}
|
||
|
break;
|
||
|
case D_ADCCH_4:
|
||
|
if(onf){D_ADC_SCLK4_ON();}else{D_ADC_SCLK4_OFF();}
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
vtype L0_adc_DOUT_AT(vtype ch)
|
||
|
{
|
||
|
vtype r = 9;
|
||
|
|
||
|
switch (ch)
|
||
|
{
|
||
|
case D_ADCCH_1:
|
||
|
r = D_ADC_DOUT1_AT();
|
||
|
break;
|
||
|
case D_ADCCH_2:
|
||
|
r = D_ADC_DOUT2_AT();
|
||
|
break;
|
||
|
case D_ADCCH_3:
|
||
|
r = D_ADC_DOUT3_AT();
|
||
|
break;
|
||
|
case D_ADCCH_4:
|
||
|
r = D_ADC_DOUT4_AT();
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
return r;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void L0_ADS1231_readCH2(vtype ch,vU32 *d)
|
||
|
{
|
||
|
u8 i = 0;
|
||
|
vU32 rdata;
|
||
|
/// vU16 t16;
|
||
|
rdata = 0;
|
||
|
|
||
|
for(i = 0; i < 24; i++)
|
||
|
{
|
||
|
L0_adc_SCLK(ch,1);/// D_ADC_SCLK1_ON();
|
||
|
rdata <<= 1;
|
||
|
L0_adc_SCLK(ch,0);///D_ADC_SCLK1_OFF();
|
||
|
if(L0_adc_DOUT_AT(ch))
|
||
|
{
|
||
|
rdata += 1;
|
||
|
}
|
||
|
}
|
||
|
///25 puls make DOUT high
|
||
|
L0_adc_SCLK(ch,1);
|
||
|
///FF84 CC09 FF84 CC09
|
||
|
L0_adc_SCLK(ch,0);
|
||
|
*d = rdata;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
#if 0
|
||
|
|
||
|
|
||
|
void L0_ADS1231_readCH2555(vtype ch,vU16 *d)
|
||
|
{
|
||
|
u8 i = 0;
|
||
|
vU32 rdata;
|
||
|
vU16 t16;
|
||
|
rdata = 0;
|
||
|
|
||
|
for(i = 0; i < 24; i++)
|
||
|
{
|
||
|
L0_adc_SCLK(ch,1);/// D_ADC_SCLK1_ON();
|
||
|
rdata <<= 1;
|
||
|
L0_adc_SCLK(ch,0);///D_ADC_SCLK1_OFF();
|
||
|
if(L0_adc_DOUT_AT(ch))
|
||
|
{
|
||
|
rdata += 1;
|
||
|
}
|
||
|
}
|
||
|
///25 puls make DOUT high
|
||
|
L0_adc_SCLK(ch,1);
|
||
|
///FF84 CC09 FF84 CC09
|
||
|
|
||
|
L0_uart0_uc('0'+ch); L0_uart0_uc(0x09);
|
||
|
L0_uart0_ulhex(rdata); L0_uart0_uc(0x09);
|
||
|
if (rdata > 0x007fFFff)
|
||
|
{
|
||
|
rdata >>= D_sensor_zoom; ///fixme:此处正负差和移位不一致需要谨慎
|
||
|
rdata |= D_sensor_zoom_FF; /// 1111 1100
|
||
|
}else
|
||
|
{
|
||
|
rdata >>= D_sensor_zoom;
|
||
|
}
|
||
|
|
||
|
// L0_uart0_ulhex(rdata); L0_uart0_uc(0x09);
|
||
|
t16 = rdata;
|
||
|
// L0_uart0_ushex(t16); L0_uart0_uc(0x09);
|
||
|
///L0_uart0_0d0a();
|
||
|
|
||
|
|
||
|
if(t16 & 0x8000) //最高位为1,<0则
|
||
|
{
|
||
|
t16 = 0xffFF - t16;///转变为正数
|
||
|
///*d = D_ADC_OFFSET - t16;
|
||
|
*d = D_ADC_OFFSET - t16;
|
||
|
}else
|
||
|
{
|
||
|
*d = t16 + D_ADC_OFFSET;
|
||
|
}
|
||
|
// L0_uart0_ushex(*d); L0_uart0_0d0a();
|
||
|
|
||
|
|
||
|
L0_adc_SCLK(ch,0);
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
/*********************************end file*********************************************/
|
||
|
|
||
|
|
||
|
//#define D_ADC_GATHER_Way1 1
|
||
|
#if 0
|
||
|
|
||
|
|
||
|
//调试阻塞读
|
||
|
vS32 L0_ADS1231_read(U8 ch)
|
||
|
{
|
||
|
vU32 e = 0;u8 i;vS32 rdata = 0;
|
||
|
while(1 == L0_2dc_DOUT_AT(ch))
|
||
|
{
|
||
|
if(e ++ > 100000)
|
||
|
{
|
||
|
//return 0;
|
||
|
}
|
||
|
}
|
||
|
for(i = 0; i < 24; i++)
|
||
|
{
|
||
|
L0_2dc_SCLK(ch,1);
|
||
|
rdata <<= 1;
|
||
|
L0_2dc_SCLK(ch,0);
|
||
|
if(L0_2dc_DOUT_AT(ch))
|
||
|
{
|
||
|
rdata += 1;
|
||
|
}
|
||
|
}
|
||
|
L0_2dc_SCLK(ch,1);
|
||
|
if(rdata & 0x800000) //???λ?1??<0??
|
||
|
{
|
||
|
rdata |= 0xFF000000;
|
||
|
}
|
||
|
return rdata;
|
||
|
}
|
||
|
|
||
|
|
||
|
void L1_ADS1213_main(void)
|
||
|
{
|
||
|
U8 ch = D_ADCCH_2;
|
||
|
while(1)
|
||
|
{
|
||
|
while(1 == L0_2dc_DOUT_AT(ch))
|
||
|
;
|
||
|
tss_ads.u32_i = L0_ADS1231_readCH(ch);
|
||
|
tss_ads.u16_v = (vU16)( tss_ads.u32_i >> 16);
|
||
|
L0_uart0_ushex(tss_ads.u16_v);
|
||
|
tss_ads.u16_v = (vU16)(tss_ads.u32_i & 0x0000ffff);
|
||
|
L0_uart0_ushex(tss_ads.u16_v);//Lc_delay_us(500);
|
||
|
L0_uart0_uc(0x0d); L0_uart0_uc(0x0a);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
u8 Read_byte_adcIC(void)
|
||
|
{
|
||
|
u8 i;
|
||
|
u8 rdata = 0; //初始化返回值为 0
|
||
|
for(i = 0; i < 8; i++)
|
||
|
{
|
||
|
D_ADC_SCLK1_ON();
|
||
|
rdata <<= 1; //返回值左移 1 位
|
||
|
/// CS1231_Clk(); //上升沿接收数据,下降沿更新数据
|
||
|
|
||
|
D_ADC_SCLK1_OFF();
|
||
|
|
||
|
|
||
|
if(D_ADC_DOUT1_AT())
|
||
|
{
|
||
|
rdata += 1; //若数据线上数据为 1,则返回值加 1
|
||
|
}
|
||
|
}
|
||
|
return(rdata);
|
||
|
}
|
||
|
|
||
|
void L0_ADS1213_CH(u8 ch)
|
||
|
{
|
||
|
/// /// SPEED = 1 57--57 ms 硬件配置成高电平
|
||
|
D_ADC_PDWN_OFF();
|
||
|
switch(ch)
|
||
|
{
|
||
|
case D_ADCCH_T:
|
||
|
L0_ADS1213_T(1);
|
||
|
break;
|
||
|
case D_ADCCH_1:
|
||
|
D_ADC_CS_A0_OFF();
|
||
|
break;
|
||
|
case D_ADCCH_2:
|
||
|
D_ADC_CS_A0_ON();
|
||
|
break;
|
||
|
case D_ADCCH_3:
|
||
|
//D_ADC_CS2_A0_OFF();
|
||
|
break;
|
||
|
case D_ADCCH_4:
|
||
|
//D_ADC_CS2_A0_ON();
|
||
|
break;
|
||
|
default:///
|
||
|
L0_ADS1213_T(0);
|
||
|
break;
|
||
|
};
|
||
|
Lc_delay_us(50);
|
||
|
D_ADC_PDWN_ON();
|
||
|
}
|
||
|
|
||
|
//channel-温度
|
||
|
void L0_ADS1213_T(u8 onff)
|
||
|
{
|
||
|
if(onff)
|
||
|
{
|
||
|
D_ADC_PDWN_OFF();
|
||
|
D_ADC_TEMP_ON();
|
||
|
Lc_delay_us(50);
|
||
|
D_ADC_PDWN_ON();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
D_ADC_PDWN_OFF();
|
||
|
D_ADC_TEMP_OFF();
|
||
|
Lc_delay_us(50);
|
||
|
D_ADC_PDWN_ON();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
/*********************************************/
|
||
|
|
||
|
|
||
|
|