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.

ADS1298: How to correctly read chipID

Part Number: ADS1298
Other Parts Discussed in Thread: ADS1296, ADS1294,

I'm trying to read chip ID of my ADS1298. I use nrf51 as master and ADS1298 as slave. What is the right way to get it working.

What I have:

...
// this is part of my code where I set SPI up
.irq_priority = APP_IRQ_PRIORITY_HIGH, // set irq priority for master
.orc = 0x00, // 
.frequency = NRF_DRV_SPI_FREQ_4M, // SPI freq
.mode = NRF_DRV_SPI_MODE_0, // SPI mode
.bit_order = NRF_DRV_SPI_BIT_ORDER_MSB_FIRST // SPI Bir order

...
// init data to send and send it
static uint8_t       m_tx_buf[] = {0x20, 0x00};           /**< TX buffer. */
static uint8_t       m_rx_buf[8];    /**< RX buffer. */
static const uint8_t m_length = sizeof(m_tx_buf);        /**< Transfer length. */

memset(m_rx_buf, 0, m_length);
spi_xfer_done = false;

APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, m_tx_buf, m_length, m_rx_buf, m_length)); // MOSI

/* the next part executes when transfer is finished */
void spi_event_handler(nrf_drv_spi_evt_t const * p_event)
{
    spi_xfer_done = true;
    NRF_LOG_INFO("Transfer completed.\r\n");
    if (m_rx_buf[0] != 0) // Receive the data via MISO - I'm always getting 0 
    {
        NRF_LOG_INFO(" Received: \r\n");
        NRF_LOG_HEXDUMP_INFO(m_rx_buf, strlen((const char *)m_rx_buf));
    }
}


Do I need send SDATAC register before getting chip ID? And do I need to use START pin for this purpose?

And how to test the efficiency of the chip? My logic analyser shows some data on MISO pin (0x00), but I'm not sure this is correct way. May I use multi tester to check it?

I tried to use Arduino, but it has 5V pins and ADS1298 SPI works only for 3V pins