Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Chromatograph_Mobile Chromatograph_Mobile
ADS1259.cpp
00001 #include "ADS1259.h" 00002 #include "PGA280.h" 00003 #include <math.h> 00004 00005 00006 void ads1259_resetDevice ( unsigned char adr ) 00007 { 00008 RESET = 1; 00009 } 00010 00011 void ads1259_powerDownDevice ( unsigned char adr ) 00012 { 00013 pga280_setAdress ( adr ); 00014 ADS1259_RESET = 0; 00015 //pga280_resetAdress (); 00016 } 00017 00018 void ads1259_powerUpDevice ( unsigned char adr ) 00019 { 00020 pga280_setAdress ( adr ); 00021 ADS1259_RESET = 1; 00022 //pga280_resetAdress (); 00023 } 00024 00025 void ads1259_conversionON ( unsigned char ch ) 00026 { 00027 pga280_setGPIO ( 5, ch ); 00028 } 00029 00030 void ads1259_conversionOFF ( unsigned char ch ) 00031 { 00032 pga280_resetGPIO ( 5, ch); 00033 } 00034 00035 char ads1259_readyDevice ( unsigned char ch ) 00036 /*Плохая функция проверки готовности устройства. 00037 Необходимо сделать прерывание, которое будт выставлять 00038 флаг или в котором будет происходить считывание*/ 00039 { 00040 char tmp; 00041 00042 pga280_setAdress ( ch ); 00043 00044 if ( ADS1259_RDYA == 0 ) 00045 tmp = true; 00046 else 00047 tmp = false; 00048 00049 //pga280_resetAdress (); 00050 00051 return tmp; 00052 } 00053 00054 unsigned char ads1259_sendCommandDevice ( unsigned char command ) 00055 { 00056 //ADS1259_CS = 0; 00057 SPI1MasterTransferByte ( command ); 00058 //ADS1259_CS = 1; 00059 return true; 00060 } 00061 00062 void ads1259_setCsAndReset ( void ) 00063 { 00064 //ADS1259_CS = 0; 00065 wait_ms ( 100 ); 00066 //ADS1259_CS = 1; 00067 wait_ms ( 100 ); 00068 } 00069 00070 unsigned long ads1259_readRegisterDevice ( unsigned char reg, unsigned char num_reg, unsigned char ch ) 00071 /*Чтение количества регистров num_reg, начиная с текущего reg по адресу устройства ch*/ 00072 { 00073 unsigned long out_value = 0; 00074 00075 uint32_t tmp[num_reg]; 00076 unsigned char i; 00077 00078 if ( num_reg > 3 ) 00079 num_reg = 3; 00080 00081 pga280_setGPIO ( 5, ch ); 00082 //ADS1259_CS = 0; 00083 SPI1MasterTransferByte ( RREG_ADS1259 | reg ); 00084 SPI1MasterTransferByte ( num_reg - 1 ); 00085 00086 for ( i = 0; i < num_reg; i++ ) { 00087 tmp[i] = SPI1MasterTransferByte ( 0x00 ); 00088 } 00089 00090 //ADS1259_CS = 1; 00091 pga280_resetGPIO ( 5, ch ); 00092 00093 switch ( num_reg ) { 00094 case 1: 00095 00096 out_value = tmp[0]; 00097 break; 00098 00099 case 2: 00100 00101 out_value = (tmp[0] << 8) | tmp[1]; 00102 break; 00103 00104 case 3: 00105 00106 out_value = ((tmp[0] << 16) | tmp[1] << 8) | tmp[2]; 00107 break; 00108 00109 default: 00110 00111 out_value = 0xFFFFFFFF; 00112 break; 00113 } 00114 00115 return out_value; 00116 } 00117 00118 unsigned char ads1259_readOneRegisterDevice ( unsigned char reg ) 00119 { 00120 unsigned char out_value = 0; 00121 //ADS1259_CS = 0; 00122 00123 SPI1MasterTransferByte ( RREG_ADS1259 | reg ); 00124 SPI1MasterTransferByte ( 0 ); 00125 out_value = SPI1MasterReadByte (); 00126 00127 //ADS1259_CS = 1; 00128 00129 return out_value; 00130 } 00131 00132 void ads1259_writeOneRegisterDevice ( unsigned char reg, unsigned char data ) 00133 { 00134 //ADS1259_CS = 0; 00135 00136 SPI1MasterTransferByte ( WREG_ADS1259 | reg ); 00137 SPI1MasterTransferByte ( 0 ); 00138 SPI1MasterTransferByte ( data ); 00139 00140 //ADS1259_CS = 1; 00141 } 00142 00143 void ads1259_runReadDataContinuedModeDevice ( unsigned char ch ) 00144 { 00145 ads1259_sendCommandDevice ( SDATAC_ADS1259 ); // ?????????? ????? ?????? ?????? ? ?????????? ?????? 00146 ads1259_conversionON ( ch ); // ???????? ??? 00147 ads1259_sendCommandDevice ( RDATAC_ADS1259 ); // ?????????? ??????? ??????? ???????? ?????? ? ?????????? ?????? 00148 } 00149 00150 uint32_t ads1259_readDataDevice ( unsigned char ch ) 00151 { 00152 uint32_t t_begin; // ????? ?????? 00153 uint32_t t_end; // ????? ????? 00154 uint32_t t_current; // ??????? ???????? 00155 uint32_t data_out = 0; // ???????? ?????? 00156 00157 unsigned char data_ok; // ?????? ??????? 00158 00159 uint32_t data[4]; 00160 00161 ads1259_sendCommandDevice ( SDATAC_ADS1259 ); // ?????????? ????? ?????? ?????? ? ?????????? ?????? 00162 ads1259_conversionON ( ch ); // ???????? ??? 00163 ads1259_sendCommandDevice ( RDATA_ADS1259 ); // ?????????? ??????? ??????? ???????? ?????? ? ?????????? ?????? 00164 00165 t_begin = 0; 00166 00167 do { 00168 if ( ads1259_readyDevice ( ch ) == true ) { 00169 00170 //ADS1259_CS = 0; 00171 00172 data[0] = SPI1MasterReadByte (); 00173 data[1] = SPI1MasterReadByte (); 00174 data[2] = SPI1MasterReadByte (); 00175 00176 //ADS1259_CS = 1; 00177 00178 data_ok = true; 00179 break; 00180 00181 } else { 00182 data_ok = false; 00183 } 00184 00185 t_end++; 00186 t_current = t_end - t_begin; 00187 00188 } while ( t_current < TIMEOUT ); 00189 00190 if ( data_ok ) { 00191 data_out += (data[0] & 0xFF) << 16; 00192 data_out += (data[1] & 0xFF) << 8; 00193 data_out += (data[2] & 0xFF); 00194 } else { 00195 data_out = 0xFFFFFF; 00196 } 00197 00198 ads1259_conversionOFF ( ch ); // ????????? ??? 00199 00200 return data_out; 00201 } 00202 00203 /* ***************************************************************************** 00204 End of File 00205 */
Generated on Thu Jul 14 2022 02:11:34 by
1.7.2