SBAA288A July   2018  – January 2019 ADS7142

 

  1.   TM4C1294 interface to ADS7142 software library
    1.     Trademarks
    2. 1 Introduction
    3. 2 Hardware
    4. 3 Software
      1. 3.1 Header Files
      2. 3.2 ADS7142 Device Functional Modes Overview
      3. 3.3 Software Functions
    5. 4 Using the Software
      1. 4.1 Prerequisites
      2. 4.2 Getting Started
      3. 4.3 Using the Library
    6. 5 Main Routines and Test Data
      1. 5.1 Manual Mode
      2. 5.2 Autonomous Mode With Pre-Alert
      3. 5.3 Autonomous Mode With Post-Alert
      4. 5.4 Autonomous Mode With Start Burst Data
      5. 5.5 Autonomous Mode With Stop Burst Data
      6. 5.6 High Precision Mode
    7. 6 References
  2.   Revision History

Autonomous Mode With Pre-Alert

In autonomous mode with pre alert data, the ADS7142 automatically scans the input voltage on the input channels and generates a signal when the programmable high or low threshold values are crossed. The device stores the 16 conversion results prior to the activation of the alert. When the alert is activated, conversion stops and the data buffer is no longer filled. Figure 15 shows the filling of the data buffer in autonomous mode with pre alert data.

pre_alert_two_ch_sbas773.gifFigure 15. Pre Alert Data for Dual-Channel Configuration

The example main routine for this mode is the following:

#include "ADS7142RegisterMap.h" /* ADS7142_AutonomousMode_PreAlert_AutoSequencing_CH0_CH1_Scan.c */ int main(void) { //Initialize the master MCU (0 = 100 kHz SCL, 1 = 400 kHz SCL) TM4C1294Init(0); //Calibrate out the offset from the ADS7142 ADS7142Calibrate(); //Let's put the ADS7142 into Autonomous Mode with both Channels enabled in Single-Ended Configuration //Select the channel input configuration ADS7142SingleRegisterWrite(ADS7142_REG_CHANNEL_INPUT_CFG, ADS7142_VAL_CHANNEL_INPUT_CFG_2_CHANNEL_SINGLE_ENDED); //Confirm the input channel configuration uint32_t channelconfig; ADS7142SingleRegisterRead(ADS7142_REG_CHANNEL_INPUT_CFG, &channelconfig); //Select the operation mode of the device ADS7142SingleRegisterWrite(ADS7142_REG_OPMODE_SEL, ADS7142_VAL_OPMODE_SEL_AUTONOMOUS_MONITORING_MODE); //Confirm the operation mode selection uint32_t opmodeselconfig; ADS7142SingleRegisterRead(ADS7142_REG_OPMODE_SEL, &opmodeselconfig); //Set the I2C Mode to High Speed (optional) //ADS7142HighSpeedEnable(ADS7142_VAL_OPMODE_I2CMODE_HS_1); //Check the I2C Mode Status uint32_t opmodei2cconfig; ADS7142SingleRegisterRead(ADS7142_REG_OPMODE_I2CMODE_STATUS, &opmodei2cconfig); //Select both channels for AUTO Sequencing ADS7142SingleRegisterWrite(ADS7142_REG_AUTO_SEQ_CHEN, ADS7142_VAL_AUTO_SEQ_CHENAUTO_SEQ_CH0_CH1); //Confirm Auto Sequencing is enabled uint32_t autoseqchenconfig; ADS7142SingleRegisterRead(ADS7142_REG_AUTO_SEQ_CHEN, &autoseqchenconfig); //Select the Low Power or High Speed Oscillator ADS7142SingleRegisterWrite(ADS7142_REG_OSC_SEL, ADS7142_VAL_OSC_SEL_HSZ_HSO); //Confirm the oscillator selection uint32_t oscconfig; ADS7142SingleRegisterRead(ADS7142_REG_OSC_SEL, &oscconfig); //Set the minimum nCLK value for one conversion to maximize sampling speed ADS7142SingleRegisterWrite(ADS7142_REG_nCLK_SEL, 21); //Confirm the nCLK selection uint32_t nCLKconfig; ADS7142SingleRegisterRead(ADS7142_REG_nCLK_SEL, &nCLKconfig); //Select the Data Buffer output data Configuration ADS7142SingleRegisterWrite(ADS7142_REG_DOUT_FORMAT_CFG, ADS7142_VAL_DOUT_FORMAT_CFG_DOUT_FORMAT2); //Select the Data Buffer opmode for Pre-Alert mode ADS7142SingleRegisterWrite(ADS7142_REG_DATA_BUFFER_OPMODE, ADS7142_VAL_DATA_BUFFER_STARTSTOP_CNTRL_PREALERT); //Configure CH0 High Threshold MSB ADS7142SingleRegisterWrite(ADS7142_REG_DWC_HTH_CH0_MSB, 0x90); //Configure CH0 High Threshold LSB ADS7142SingleRegisterWrite(ADS7142_REG_DWC_HTH_CH0_LSB, 0x00); //Configure CH0 Low Threshold MSB ADS7142SingleRegisterWrite(ADS7142_REG_DWC_LTH_CH0_MSB, 0x00); //Configure CH0 Low Threshold LSB ADS7142SingleRegisterWrite(ADS7142_REG_DWC_LTH_CH0_LSB, 0x00); //Set the Hysteresis for CH0 ADS7142SingleRegisterWrite(ADS7142_REG_DWC_HYS_CH0, 0x00); //Configure CH1 High Threshold MSB ADS7142SingleRegisterWrite(ADS7142_REG_DWC_HTH_CH1_MSB, 0xE0); //Configure CH1 High Threshold LSB ADS7142SingleRegisterWrite(ADS7142_REG_DWC_HTH_CH1_LSB, 0x00); //Configure CH1 Low Threshold MSB ADS7142SingleRegisterWrite(ADS7142_REG_DWC_LTH_CH1_MSB, 0x00); //Configure CH1 Low Threshold LSB ADS7142SingleRegisterWrite(ADS7142_REG_DWC_LTH_CH1_LSB, 0x00); //Set the Hysteresis for CH1 ADS7142SingleRegisterWrite(ADS7142_REG_DWC_HYS_CH1, 0x00); //Set the Pre-Alert Event Counter ADS7142SingleRegisterWrite(ADS7142_REG_PRE_ALERT_EVENT_COUNT, ADS7142_VAL_PRE_ALERT_EVENT_COUNT4); //Confirm the Pre-Alert Event Counter setting uint32_t eventcount; ADS7142SingleRegisterRead(ADS7142_REG_PRE_ALERT_EVENT_COUNT, &eventcount); //Enable Alerts ADS7142SingleRegisterWrite(ADS7142_REG_ALERT_CHEN, ADS7142_VAL_ALERT_EN_CH0_CH1); //Enable the digital window comparator block ADS7142SingleRegisterWrite(ADS7142_REG_ALERT_DWC_EN, ADS7142_VAL_ALERT_DWC_BLOCK_ENABLE); //Set the SEQ_START Bit to begin the sampling sequence ADS7142SingleRegisterWrite(ADS7142_REG_START_SEQUENCE, ADS7142_VAL_START_SEQUENCE); //Begin Autonomous Mode Pre-Alert operation and Scan both channels 0 and 1 while (1) { //Start Scanning CH0 and CH1 //If Alert is set, device stops conversions and filling the data buffer //Read the latched flags of the Digital Window Comparator while (ADS7142DataRead_autonomous() < 0); //Reset the alert flags ADS7142SingleRegisterWrite(ADS7142_REG_ALERT_HIGH_FLAGS, 0x03); ADS7142SingleRegisterWrite(ADS7142_REG_ALERT_LOW_FLAGS, 0x03); //Read the Data Buffer Status uint32_t databufferstatus; ADS7142SingleRegisterRead(ADS7142_REG_DATA_BUFFER_STATUS, &databufferstatus); //Read the Data Buffer while (ADS7142DataRead_count(16) < 0); //Restart the sequence ADS7142SingleRegisterWrite(ADS7142_REG_START_SEQUENCE, ADS7142_VAL_START_SEQUENCE); } //Return no errors return 0; }

The data output seen from the logic analyzer corresponds to what is written in main. Figure 16 shows the ADS7142 configuration.

ADS7142AutonomousModePreAlertDualChannelSamplingData1.gifFigure 16. Autonomous Mode Pre-Alert Dual Channel Sampling Test Data 1

The data in Figure 17 show further configuration and settings of the thresholds.

ADS7142AutonomousModePreAlertDualChannelSamplingData2.gifFigure 17. Autonomous Mode Pre-Alert Dual Channel Sampling Test Data 2

The data in Figure 18 shows how the alerts are enabled and the start of the conversion sequence.

ADS7142AutonomousModePreAlertDualChannelSamplingData3.gifFigure 18. Autonomous Mode Pre-Alert Dual Channel Sampling Test Data 3

Figure 19 shows the contents of the data buffer after triggering an alert.

ADS7142AutonomousModePreAlertDualChannelSamplingData4.gifFigure 19. Autonomous Mode Pre-Alert Dual Channel Sampling Test Data 4