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