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.
 
 
 
 

226 lines
4.0 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 "cs1232.h"
TSS_FLOW_ tss_ads;
//#define D_ADC_GATHER_Way1 1
#if 0
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
void L0_ADS1213_INIT(void)
{
D_ADS1213_INIT();
D_stdIO_P3(BITN2);
D_stdIO_P3(BITN3);
//L0_ADS1213_CH(D_ADCCH_1); //4个独立芯片,不需要切换
Lc_delay_ms(100);///57ms 建立时间
//L0_ADS1213_CH(D_ADCCH_3);
//Lc_delay_ms(100);///57ms 建立时间
}
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;
}
//任务读
vS32 L0_ADS1231_readCH(vtype ch)
{
vtype i; vU32 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(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);
}
}
/*********************************end file*********************************************/