Close

TLV2553 - Energia

A project log for Various chips

Code and stuff for various chips

jlbrian7jlbrian7 11/02/2016 at 14:540 Comments
#include <SPI.h>

#include "Arduino.h"
const int dataReadyPin = PA_5;
const int chipSelectPin = PE_0;

// TLV2553 Commands
uint16_t chan_0  = 0b000000000000;  // SELECT analog input channel 0
uint16_t chan_1  = 0b000100000000;  // SELECT analog input channel 1
uint16_t chan_2  = 0b001000000000;  // SELECT analog input channel 2
uint16_t chan_3  = 0b001100000000;  // SELECT analog input channel 3
uint16_t chan_4  = 0b010000000000;  // SELECT analog input channel 4
uint16_t chan_5  = 0b010100000000;  // SELECT analog input channel 5
uint16_t chan_6  = 0b011000000000;  // SELECT analog input channel 6
uint16_t chan_7  = 0b011100000000;  // SELECT analog input channel 7
uint16_t chan_8  = 0b100000000000;  // SELECT analog input channel 8
uint16_t chan_9  = 0b100100000000;  // SELECT analog input channel 9
uint16_t chan_10 = 0b101000000000;  // SELECT analog input channel 10

uint16_t test_1  = 0b101100000000;  // SELECT TEST, Voltage = (VREF+ + VREF-)/2
uint16_t test_2  = 0b110000000000;  // SELECT TEST, Voltage = REFM
uint16_t test_3  = 0b110100000000;  // SELECT TEST, Voltage = REFP

uint16_t SW_PD   = 0b111000000000;  // SW POWERDOWN (analog + reference)

uint16_t bit_8    = 0b000001000000;  // Configuration bits[3:2] {01: 8-bit output,
uint16_t bit_12   = 0b000000000000;  //                          00: 12-bit output,
uint16_t bit_16   = 0b000011000000;  //                          10: 12-bit output,
                                //                          11: 16:bit output}
                                
uint16_t msb      = 0b000000000000;  // Configuration bits[1] {0: MSB out first,
uint16_t lsb      = 0b000000100000;  //                        1: LSB out first}

uint16_t unipolar = 0b000000000000;  // Configuration bits[0] {0: Unipolar binary,
uint16_t bipolar  = 0b000000010000;  //                        1: Bipolar 2's complement}    
                                                                             
uint16_t val_null, val0, val1, val2, val3, val4, val5;

SPIClass TLV2553(2);

void setup()
{
  Serial.begin(9600);
  TLV2553.begin();
  //TLV2553.setDataMode(0);
  //TLV2553.setClockDivider(128);
  
  // initialize the  data ready and chip select pins:
  pinMode(dataReadyPin, INPUT);
  pinMode(chipSelectPin, OUTPUT);
  digitalWrite(chipSelectPin, HIGH);
}

void loop()
{
  while (!digitalRead(dataReadyPin))
  {
  }
  digitalWrite(chipSelectPin, LOW);
  val_null = TLV2553.transfer((chan_0 | bit_12 | msb | unipolar) >> 4);
  while (digitalRead(dataReadyPin)){
    val_null = (val_null << 4);
    val_null += TLV2553.transfer(0xF) >> 4;
  }
  digitalWrite(chipSelectPin, HIGH);
  
  while (!digitalRead(dataReadyPin))
  {
  }
  digitalWrite(chipSelectPin, LOW);
  val0 = TLV2553.transfer((chan_1 | bit_12 | msb | unipolar) >> 4);
  while (digitalRead(dataReadyPin)){
    val0 = (val0 << 4);
    val0 += TLV2553.transfer(0xF) >> 4;
  }
  Serial.print("A0: ");
  Serial.println(val0);
  digitalWrite(chipSelectPin, HIGH);
  
  while (!digitalRead(dataReadyPin))
  {
  }
  digitalWrite(chipSelectPin, LOW);
  val1 = TLV2553.transfer((chan_2 | bit_12 | msb | unipolar) >> 4);
  while (digitalRead(dataReadyPin)){
    val1 = (val1 << 4);
    val1 += TLV2553.transfer(0xF) >> 4;
  }
  Serial.print("A1: ");
  Serial.println(val1);
  digitalWrite(chipSelectPin, HIGH);
  
  while (!digitalRead(dataReadyPin))
  {
  }
  digitalWrite(chipSelectPin, LOW);
  val2 = TLV2553.transfer((chan_3 | bit_12 | msb | unipolar) >> 4);
  while (digitalRead(dataReadyPin)){
    val2 = (val2 << 4);
    val2 += TLV2553.transfer(0xF) >> 4;
  }
  Serial.print("A2: ");
  Serial.println(val2);
  digitalWrite(chipSelectPin, HIGH);
  
  while (!digitalRead(dataReadyPin))
  {
  }
  digitalWrite(chipSelectPin, LOW);
  val3 = TLV2553.transfer((chan_4 | bit_12 | msb | unipolar) >> 4);
  while (digitalRead(dataReadyPin)){
    val3 = (val3 << 4);
    val3 += TLV2553.transfer(0xF) >> 4;
  }
  Serial.print("A3: ");
  Serial.println(val3);
  digitalWrite(chipSelectPin, HIGH);
  
  while (!digitalRead(dataReadyPin))
  {
  }
  digitalWrite(chipSelectPin, LOW);
  val4 = TLV2553.transfer((chan_5 | bit_12 | msb | unipolar) >> 4);
  while (digitalRead(dataReadyPin)){
    val4 = (val4 << 4);
    val4 += TLV2553.transfer(0xF) >> 4;
  }
  Serial.print("A4: ");
  Serial.println(val4);
  digitalWrite(chipSelectPin, HIGH);
  
  while (!digitalRead(dataReadyPin))
  {
  }
  digitalWrite(chipSelectPin, LOW);
  val5 = TLV2553.transfer((chan_6 | bit_12 | msb | unipolar) >> 4);
  while (digitalRead(dataReadyPin)){
    val5 = (val5 << 4);
    val5 += TLV2553.transfer(0xF) >> 4;
  }
  Serial.print("A5: ");
  Serial.println(val5);
  digitalWrite(chipSelectPin, HIGH);
  Serial.println();
  Serial.println();
  Serial.println();
  Serial.println();
  Serial.println();
  delay(1000);
}

Discussions