Other Parts Discussed in Thread: MSP430F2013
Hi Team,
I am posting this in behalf of our customer. Here it is below:
I am planning to do following:
1. Measure 3 bridge circuit with strain gauge and using 2 ADS1220 in differntial mode for sampling sequentially.
2. I need to record data from the ADS1220 hence I have to use MSP430f2013 to with SPI.
Now from research, I couldn't find examples of ADS1220 other than https://www.ti.com/lit/zip/sbac227. Which were not so helpful.
After trying to configure MSP430f2013 partially I started to get the error of
#include <msp430.h>
#include <ADS1220.h>
/* Function declarations */
void Init_StartUp(void);
void SPIinit(void);
/* Global variable */
int dflag = 0;
static volatile unsigned int ChA2results = 0x00;
int main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
USICTL0 |= USISWRST; //USI released for operation
USICTL1 &= ~USII2C + USIIE; //switch USI to SPI-Mode
USICTL0 |= USIMST; //set to SPI-Master-Mode
USICTL0 |= USIPE6 + USIPE5 + USIPE7; //SDO-Port enabled; Pin8
USICTL0 |= USIOE; //activate output
USICTL0 &= ~USISWRST;
USICKCTL = USISSEL_2;
void Init_StartUp(void); // Initialize device
void ADS1220Init(void); // Initializes the SPI port pins as well as control
void ADS1220Config(void); // Set base configuration for ADS1x20 device
ADS1220SetChannel(ADS1220_MUX_0_1);
ADS1220SetGain(ADS1220_GAIN_32);
set_MODE(ADS1220_MODE_TURBO);
set_CM(ADS1220_CC);
set_VREF(ADS1220_VREF_INT);
//ADS1220SetDataRate(ADS1220_DR_2000);
set_DR(110);
while(1)
{
/* Add specifc command for reading and writing ADS1220 here */
/* dFlag is set in the interrupt service routine when DRDY triggers end
of conversion */
if (dflag) /* check if new data is available */
{
ChA2results = ADS1220ReadData(); /* get the data from the ADS1220 */
dflag=0;
}
/* other routines could be added here, such as change the mux setting */
} /* end of while(1) */
// __bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
It would be great help if someone provided with suggestion to make this work.
/* --COPYRIGHT--,BSD_EX
* Copyright (c) 2012, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*******************************************************************************
*
* MSP430 CODE EXAMPLE DISCLAIMER
*
* MSP430 code examples are self-contained low-level programs that typically
* demonstrate a single peripheral function or device feature in a highly
* concise manner. For this the code may rely on the device's power-on default
* register values and settings such as the clock configuration and care must
* be taken when combining code from several examples to avoid potential side
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
* for an API functional library-approach to peripheral configuration.
*
* --/COPYRIGHT--*/
//******************************************************************************
// MSP430F20x2/3 Demo - SPI full-Duplex 3-wire Master
//
// Description: SPI Master communicates full-duplex with SPI Slave using
// 3-wire mode. The level on P1.4 is TX'ed and RX'ed to P1.0.
// Master will pulse slave reset for synch start.
// ACLK = n/a, MCLK = SMCLK = Default DCO
//
// Slave Master
// MSP430F20x2/3 MSP430F20x2/3
// ----------------- -----------------
// | XIN|- /|\| XIN|-
// | | | | |
// | XOUT|- --|RST XOUT|-
// | | /|\ | |
// | RST/NMI|--+<----|P1.2 |
// LED <-|P1.0 | | P1.4|<-
// ->|P1.4 | | P1.0|-> LED
// | SDI/P1.7|<-------|P1.6/SDO |
// | SDO/P1.6|------->|P1.7/SDI |
// | SCLK/P1.5|<-------|P1.5/SCLK |
//
// M. Buccini / L. Westlund
// Texas Instruments Inc.
// October 2005
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
//******************************************************************************
#include <msp430.h>
#include <ADS1220.h>
/* Function declarations */
void Init_StartUp(void);
void SPIinit(void);
/* Global variable */
int dflag = 0;
static volatile unsigned int ChA2results = 0x00;
int main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
USICTL0 |= USISWRST; //USI released for operation
USICTL1 &= ~USII2C + USIIE; //switch USI to SPI-Mode
USICTL0 |= USIMST; //set to SPI-Master-Mode
USICTL0 |= USIPE6 + USIPE5 + USIPE7; //SDO-Port enabled; Pin8
USICTL0 |= USIOE; //activate output
USICTL0 &= ~USISWRST;
USICKCTL = USISSEL_2;
void Init_StartUp(void); // Initialize device
void ADS1220Init(void); // Initializes the SPI port pins as well as control
void ADS1220Config(void); // Set base configuration for ADS1x20 device
ADS1220SetChannel(ADS1220_MUX_0_1);
ADS1220SetGain(ADS1220_GAIN_32);
set_MODE(ADS1220_MODE_TURBO);
set_CM(ADS1220_CC);
set_VREF(ADS1220_VREF_INT);
//ADS1220SetDataRate(ADS1220_DR_2000);
set_DR(110);
while(1)
{
/* Add specifc command for reading and writing ADS1220 here */
/* dFlag is set in the interrupt service routine when DRDY triggers end
of conversion */
if (dflag) /* check if new data is available */
{
ChA2results = ADS1220ReadData(); /* get the data from the ADS1220 */
dflag=0;
}
/* other routines could be added here, such as change the mux setting */
} /* end of while(1) */
// __bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
Best regards,
Jonathan