forked from ccsens_hardware/ttss_sop
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.
231 lines
3.9 KiB
231 lines
3.9 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
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "bsp_cs1232.h"
|
|
TSS_FLOW_ tss_ads;
|
|
|
|
//#define D_ADC_GATHER_Way1 1
|
|
|
|
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_INIT(void)
|
|
{
|
|
D_ADS1213_INIT();
|
|
|
|
L0_ADS1213_CH(D_ADCCH_1);
|
|
Lc_delay_ms(100);///57ms 建立时间
|
|
|
|
//L0_ADS1213_CH(D_ADCCH_3);
|
|
//Lc_delay_ms(100);///57ms 建立时间
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
|
|
void L0_2dc_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_2dc_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;
|
|
}
|
|
|
|
|
|
vtype i; vU32 rdata = 0;
|
|
|
|
vS32 L0_ADS1231_readCH(vtype ch)
|
|
{
|
|
rdata = 0;
|
|
for(i = 0; i < 24; i++)
|
|
{
|
|
L0_2dc_SCLK(ch,1);/// D_ADC_SCLK1_ON();
|
|
rdata <<= 1;
|
|
L0_2dc_SCLK(ch,0);///D_ADC_SCLK1_OFF();
|
|
if(L0_2dc_DOUT_AT(ch))
|
|
{
|
|
rdata += 1;
|
|
}
|
|
}
|
|
///25 puls make DOUT high
|
|
L0_2dc_SCLK(ch,1);
|
|
if(rdata & 0x800000) //最高位为1,<0则
|
|
{
|
|
rdata |= 0xFF000000;
|
|
}
|
|
L0_2dc_SCLK(ch,0);
|
|
|
|
return rdata;
|
|
}
|
|
|
|
|
|
vS32 L0_ADS1231_read(U8 ch)
|
|
{
|
|
vU32 e = 0;u8 i;vS32 rdata = 0;
|
|
while(0 == L0_2dc_DOUT_AT(ch))
|
|
{
|
|
if(e ++ > 100000)
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
e = 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;
|
|
}
|
|
}
|
|
if(rdata & 0x800000) //???λ?1??<0??
|
|
{
|
|
rdata |= 0xFF000000;
|
|
}
|
|
return rdata;
|
|
}
|
|
|
|
|
|
void L1_ADS1213_main(void)
|
|
{
|
|
U8 ch = D_ADCCH_4;
|
|
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);
|
|
}
|
|
}
|
|
|
|
|
|
/*********************************end file*********************************************/
|
|
|
|
|
|
|
|
|