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.
ADS1248.cpp
00001 #include "ADS1248.h" 00002 00003 #define ADS1248_HOLD_TIME_US 2 00004 00005 //***********************************/************************************ 00006 // Constructors // 00007 //***********************************/************************************ 00008 ADS1248::ADS1248(SPI& spi, PinName cs, PinName rdy, PinName start):_spi(spi),_cs(cs),_rdy(rdy),_start(start){ 00009 00010 _cs = 0; 00011 _start = 1; 00012 _spi.format(8,1); 00013 wait(0.016); 00014 _cs = 1; 00015 } 00016 00017 //***********************************/************************************ 00018 // Public Methods // 00019 //***********************************/************************************ 00020 void ADS1248::start(bool en){ 00021 _start = en; 00022 } 00023 00024 void ADS1248::waitReady(void){ 00025 while(!_rdy); 00026 while(_rdy); 00027 } 00028 00029 void ADS1248::sleep(bool en){ 00030 _start = 1; 00031 _cs = 0; 00032 _spi.write(en<<1); 00033 wait_us(ADS1248_HOLD_TIME_US); 00034 _cs = 1; 00035 wait_us(ADS1248_HOLD_TIME_US); 00036 waitReady(); 00037 } 00038 00039 void ADS1248::sync(void){ 00040 _start = 1; 00041 _cs = 0; 00042 _spi.write(SYNC); 00043 _spi.write(SYNC); 00044 wait_us(ADS1248_HOLD_TIME_US); 00045 _cs = 1; 00046 wait_us(ADS1248_HOLD_TIME_US); 00047 } 00048 00049 void ADS1248::reset(void){ 00050 _start = 1; 00051 _cs = 0; 00052 _spi.write(RESET); 00053 wait_us(ADS1248_HOLD_TIME_US); 00054 _cs = 1; 00055 wait_us(ADS1248_HOLD_TIME_US); 00056 wait_us(600); 00057 } 00058 00059 00060 int ADS1248::read(void){ 00061 int data; 00062 _start = 1; 00063 waitReady(); 00064 _cs = 0; 00065 _spi.write(RDATA); 00066 data = ((_spi.write(0)<<24)&0xFF000000); 00067 data |=((_spi.write(0)<<16)&0x00FF0000); 00068 data |=((_spi.write(0)<< 8)&0x0000FF00); 00069 data >>= 8; 00070 data &= 0xfffffff8; 00071 wait_us(ADS1248_HOLD_TIME_US); 00072 _cs = 1; 00073 wait_us(ADS1248_HOLD_TIME_US); 00074 return data; 00075 } 00076 00077 ADS1248::operator int(){ 00078 return read(); 00079 } 00080 00081 00082 void ADS1248::readReg(unsigned char reg, unsigned char *buff, int len){ 00083 _start = 1; 00084 _cs = 0; 00085 _spi.write(RREG|(reg&0x0F)); 00086 _spi.write(len-1); 00087 while(len--){ 00088 *(buff++) = _spi.write(0); 00089 } 00090 wait_us(ADS1248_HOLD_TIME_US); 00091 _cs = 1; 00092 wait_us(ADS1248_HOLD_TIME_US); 00093 } 00094 00095 unsigned char ADS1248::readReg(unsigned char reg){ 00096 unsigned char ret; 00097 readReg(reg,&ret,1); 00098 return ret; 00099 } 00100 00101 void ADS1248::writeReg(unsigned char reg, const unsigned char *buff, int len){ 00102 _start = 1; 00103 _cs = 0; 00104 _spi.write(WREG|(reg&0x0F)); 00105 _spi.write(len-1); 00106 while(len--){ 00107 _spi.write(*(buff++)); 00108 } 00109 wait_us(ADS1248_HOLD_TIME_US); 00110 _cs = 1; 00111 wait_us(ADS1248_HOLD_TIME_US); 00112 } 00113 00114 void ADS1248::writeReg(unsigned char reg, unsigned char val){ 00115 writeReg(reg,&val,1); 00116 } 00117 00118 void ADS1248::systemOffsetCal(void){ 00119 _start = 1; 00120 _cs = 0; 00121 _spi.write(SYSOCAL); 00122 wait_us(ADS1248_HOLD_TIME_US); 00123 _cs = 1; 00124 wait_us(ADS1248_HOLD_TIME_US); 00125 waitReady(); 00126 } 00127 00128 void ADS1248::systemGainCal(void){ 00129 _start = 1; 00130 _cs = 0; 00131 _spi.write(SYSGCAL); 00132 wait_us(ADS1248_HOLD_TIME_US); 00133 _cs = 1; 00134 wait_us(ADS1248_HOLD_TIME_US); 00135 waitReady(); 00136 } 00137 00138 void ADS1248::selfOffsetCal(void){ 00139 _start = 1; 00140 _cs = 0; 00141 _spi.write(SELFOCAL); 00142 wait_us(ADS1248_HOLD_TIME_US); 00143 _cs = 1; 00144 waitReady(); 00145 } 00146
Generated on Sat Jul 16 2022 23:46:51 by
1.7.2