//////////////////////////////////////////////////////////////////////////// ///@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*********************************************/