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
PGA280ADS1259.cpp
00001 #include "ADS1259.h" 00002 #include "PGA280.h" 00003 #include "PGA280ADS1259.h" 00004 #include <math.h> 00005 00006 00007 //#include "app.h" 00008 //counter; //сделать переменную видимой в этом файле 00009 void pga280_ads1259_init ( unsigned char ch ) 00010 { 00011 pga280_resetDevice ( ch ); 00012 //ads1259_resetDevice ( ch ); //микросхема снова уходит в сброс как только сменится адрес, так как ножка RESET оключается 00013 /*Сюда вставить задержку не менее 20 мс (для того чтобы микросхема АЦП раскачалась)*/ 00014 pga280_ads1259_setup_pga280(ch); 00015 wait_ms(100); /*задержка перед настройкой АЦП*/ 00016 pga280_ads1259_setup_ads1259(ch); 00017 } 00018 00019 void pga280_ads1259_setup_pga280 ( unsigned char ch ) 00020 /*Предварительная настройка PGA280 (Это инициализация по идее)*/ 00021 00022 { 00023 //PGA280_INPUT_SWITCH0.SW_A1=1; 00024 //PGA280_INPUT_SWITCH0.SW_A2=1; 00025 pga280_writeOneRegisterDevice ( PGA280_INPUT_SWITCH0_ADR, 0x18, ch ); //выбрать для работы INP2 INN2 00026 pga280_writeOneRegisterDevice ( PGA280_INPUT_SWITCH1_ADR, 0, ch ); 00027 pga280_writeOneRegisterDevice ( PGA280_GPIO_DIR_ADR, 0b111111, ch ); //установить первые 6 выводов на выход 00028 pga280_writeOneRegisterDevice ( PGA280_CS_MODE_ADR, 0b00010000, ch ); //ECS4 в расширенном CS режиме 00029 pga280_writeOneRegisterDevice ( PGA280_SP_FUNCTION_ADR,7 , ch );//выводы GPIO0-2 используются для функции MUX 00030 } 00031 00032 void pga280_ads1259_setup_ads1259 ( unsigned char ch ) 00033 /*Настройка АЦП*/ 00034 { 00035 pga280_directCsBegin ( 4, ch ); 00036 ads1259_resetDevice(ch); //костыльная функция 00037 wait_ms(20); //пауза для выхода на режим работы 00038 ads1259_sendCommandDevice ( SDATAC_ADS1259 ); //установить чтение в постоянном режиме 00039 ads1259_writeOneRegisterDevice ( CONFIG0_ADS1259, 0x04 ); //0x04 00040 ads1259_writeOneRegisterDevice ( CONFIG1_ADS1259, 0x50 ); //0x50 00041 ads1259_writeOneRegisterDevice ( CONFIG2_ADS1259, 0x05 ); //0x03 400 400 сэмплов 00042 /*Настройка смещения так чтобы 7FFFFF - это нулевой уровень*/ 00043 ads1259_writeOneRegisterDevice ( OFC0_ADS1259, 0x68 );//5D 00044 ads1259_writeOneRegisterDevice ( OFC1_ADS1259, 0x01 );//01 00045 ads1259_writeOneRegisterDevice ( OFC2_ADS1259, 0x00); 00046 /*Конец*/ 00047 /*Настройка масштабирования 1 к 1*/ 00048 ads1259_writeOneRegisterDevice ( FSC0_ADS1259, 0x00 ); 00049 ads1259_writeOneRegisterDevice ( FSC1_ADS1259, 0x00 ); 00050 ads1259_writeOneRegisterDevice ( FSC2_ADS1259, 0x40 );//0x40 00051 /*Конец*/ 00052 pga280_directCsEnd (); 00053 } 00054 00055 unsigned char test_read_reg_ads1259 ( unsigned char ch ) 00056 { 00057 unsigned char out_data; 00058 00059 pga280_directCsBegin ( 4, ch ); 00060 out_data = ads1259_readOneRegisterDevice ( CONFIG0_ADS1259 ); 00061 pga280_directCsEnd (); 00062 00063 return out_data; 00064 } 00065 00066 long ads1259_readData ( unsigned char ch ) 00067 /*Эта функция работает, надо пофиксить основную*/ 00068 { 00069 long data_out; 00070 unsigned char data[4]; 00071 unsigned char data_ok; 00072 pga280_directCsBegin ( 4, ch ); 00073 ads1259_sendCommandDevice ( SDATAC_ADS1259 ); // ?????????? ????? ?????? ?????? ? ?????????? ?????? 00074 pga280_directCsEnd (); 00075 00076 ads1259_conversionON ( ch ); // ???????? ??? 00077 // 00078 pga280_directCsBegin (4, ch ); 00079 ads1259_sendCommandDevice ( RDATA_ADS1259 ); // ?????????? ??????? ??????? ???????? ?????? ? ?????????? ?????? 00080 pga280_directCsEnd (); 00081 00082 do { 00083 if ( ads1259_readyDevice ( ch ) == true ) { 00084 00085 00086 pga280_directCsBegin ( 4, ch ); 00087 00088 data[0] = SPI1MasterReadByte (); 00089 data[1] = SPI1MasterReadByte (); 00090 data[2] = SPI1MasterReadByte (); 00091 data[3] = 0; 00092 00093 pga280_directCsEnd (); 00094 00095 data_ok = true; 00096 break; 00097 00098 } else { 00099 data_ok = false; 00100 } 00101 } while ( 1 ); 00102 00103 data_out = 0; 00104 00105 if ( data_ok ) { 00106 data_out += (data[0] & 0xFF) << 24; 00107 data_out += (data[1] & 0xFF) << 16; 00108 data_out += (data[2] & 0xFF) << 8; 00109 data_out += (data[3] & 0xFF); 00110 } else { 00111 data_out = 0xFFFFFFFF; 00112 } 00113 00114 ads1259_conversionOFF ( ch ); // 00115 00116 return data_out>>8; 00117 } 00118 00119 /* ***************************************************************************** 00120 End of File 00121 */
Generated on Thu Jul 14 2022 02:11:34 by
1.7.2