This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1118evm SPI trouble

Other Parts Discussed in Thread: ADS1118EVM, ADS1118, ALLIGATOR

Hello I am currently using an ADS1118evm hooked up to a Beagleboard

I just need to make sure I can get voltage readings from the ADC to the beagleboard.

For thw interface I am using SpiMode1 and connecting the ADS1118evm chip select, clck, mosi and miso to the appropriate ports (or at least I hope so)

Here is the code I am using

3362.VoltTest2.c
#include <stdint.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/spi/spidev.h>

static const char *device = "/dev/spidev3.0";

static void pabort(const char *s)
{
	perror(s);
	abort();
}

//ReadADCADS1118(int fd, float &voltage)
int main()
{
    int fd;
    int ret;
    uint8_t tx_buf[] = { 0x81, 0x83 };
    uint8_t rx_buf[2];

    struct spi_ioc_transfer spi_tr;
    uint8_t mode = SPI_MODE_1;
    uint32_t spi_speed = 4000000;
    unsigned long Volts;

    fd = open(device, O_RDWR);
	if (fd < 0)
	    pabort("can't open device");

	ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
	if (ret == -1)
		pabort("can't set spi mode");

    spi_tr.tx_buf = (unsigned long)tx_buf;
   spi_tr.rx_buf = (unsigned long)rx_buf;
   spi_tr.len = 2;
   spi_tr.delay_usecs = 10;
   spi_tr.speed_hz = spi_speed;
   spi_tr.bits_per_word = 8;

    printf("Test 1:");
    if( ioctl(fd, SPI_IOC_MESSAGE(1), &spi_tr) < 0 )
        pabort("can't open device");

    for (ret = 0; ret < 2; ret++) {
		if (!(ret % 6))
			puts("");
		printf("%.2X ", rx_buf[ret]);
	}
	puts("");

	printf("\n\nTest 2:");
    if( ioctl(fd, SPI_IOC_MESSAGE(1), &spi_tr) < 0 )
        pabort("can't open device");

    for (ret = 0; ret < 2; ret++) {
                if (!(ret % 6))
                        puts("");
                printf("%.2X ", rx_buf[ret]);
        }
        puts("");

   return 0;
}

I am doing a one shot mode read so that I can see how to interpret my raw voltage.

But I don't think I am doing it correctly, is there anything wrong with my code?

Thank you,

Alonzo