<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/39942/nrf52840---ads1292</link><description>Hi, 
 
 I want to read register 0x00 (chip ID) of ads1292. i do following... 
 ============================================================================================================================= 
 ///// init spi ///// 
 spi_config.ss_pin = ARDUINO_7_PIN;</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 05 Nov 2018 15:33:36 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/39942/nrf52840---ads1292" /><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/156015?ContentTypeID=1</link><pubDate>Mon, 05 Nov 2018 15:33:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c5483ddf-6502-451b-ab17-9785da9615c1</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;Did you remember to Stop Continuous Mode as I suggested earlier before you attempt to write? Using 1-byte command&amp;nbsp;&lt;em&gt;ADS_CMND_SDATAC. &lt;/em&gt;If the &lt;em&gt;Read Id&lt;/em&gt;&amp;nbsp;command is working correctly then that is the usual reason why a write doesn&amp;#39;t work; this is described in the data sheet.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/155852?ContentTypeID=1</link><pubDate>Mon, 05 Nov 2018 06:07:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:839a8466-ea55-4102-b186-0368760e4a7c</guid><dc:creator>Circuit Designers</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I did Exactly what you suggested but still not able to write registers.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/155794?ContentTypeID=1</link><pubDate>Fri, 02 Nov 2018 15:30:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c960ef58-4159-4dd0-ab23-6b60d8447016</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;SPI is a synchronous protocol which uses packets, much improved over byte-orientated asynchronous UART The code you are using looks like Arduino-type code for a device which doesn&amp;#39;t properly support SPI, so I would recommend a change of thinking. I don&amp;#39;t work for either Nordic or TI, so I can only offer limited support; here is how to use SPI as it was intended, albeit in this case for an ADS1291 which has identical registers and timing to both the ADS1292 and ADS1292R. First define the packet; put in all registers although they don&amp;#39;t all have to be actually sent, just adjust the length byte accordingly.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;typedef struct {
  uint8_t ADS1292_CONFIG1;       // 0x0001u ADS1x9x_REG_CONFIG1
  uint8_t ADS1292_CONFIG2;       // 0x0002u ADS1x9x_REG_CONFIG2
  uint8_t ADS1292_LOFF;          // 0x0003u ADS1x9x_REG_LOFF
  uint8_t ADS1292_CH1SET;        // 0x0004u ADS1x9x_REG_CH1SET
  uint8_t ADS1292_CH2SET;        // 0x0005u ADS1x9x_REG_CH2SET
  uint8_t ADS1292_RLD_SENS;      // 0x0006u ADS1x9x_REG_RLD_SENS
  uint8_t ADS1292_LOFF_SENS;     // 0x0007u ADS1x9x_REG_LOFF_SENS
  uint8_t ADS1292_LOFF_STAT;     // 0x0008u ADS1x9x_REG_LOFF_STAT
  uint8_t ADS1292_RESP1;         // 0x0009u ADS1x9x_REG_RESP1
  uint8_t ADS1292_RESP2;         // 0x000Au ADS1x9x_REG_RESP2
  uint8_t ADS1292_GPIO;          // 0x000Bu ADS1x9x_REG_GPIO
} ADS1292WriteRegisters_t;

typedef struct {
    uint8_t                 Command;
    uint8_t                 AfeRegisterCount;
    ADS1292WriteRegisters_t ADS1292Registers;
} ADS1292_WritePacket_t;

// AFE Register settings - Default (and typical) values. Note Id is read-only
static ADS1292WriteRegisters_t mAFE_RegisterRequiredSettings =
  // Lead off detection settings
  //              Lead  Ch 1  Ch 2 RLD   LOff   LOff
  // Conf1 Conf2   Off   Set  Set  Sense Sense  Stat RESP1 RESP2  GPIO    Last column is lead-lead impedance
  // ===== =====  ====  ====  ==== ===== =====  ==== ===== =====  ====    ==================================
    { 0x01, 0xA0, 0x10, 0x10, 0x81, 0x23, 0x00, 0x00, 0x02, 0x07, 0x03}; // Normal scanning
    
// To avoid enumerated type mix warning define intermediate type
#define ADS1x9x_CONFIG_REGISTERS     1
STATIC_ASSERT (ADS1x9x_CONFIG_REGISTERS == ADS1x9x_REG_CONFIG1);

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Then build the packet to transmit with command and length bytes added; of course you could just define a single structure for this, but in my code there are other reasons not to.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;    // Build packet with required settings
    memcpy(&amp;amp;mAfeWriteBuf.ADS1292Registers, &amp;amp;mAFE_RegisterRequiredSettings, sizeof(ADS1292WriteRegisters_t));
    mAfeWriteBuf.Command = ADS_CMND_WREG | ADS1x9x_CONFIG_REGISTERS;
    mAfeWriteBuf.AfeRegisterCount = sizeof(ADS1292WriteRegisters_t)-1;

    // Wirte and receive packet
    uint16_t length = sizeof(mAfeWriteBuf);
    APP_ERROR_CHECK(nrf_drv_spi_transfer(&amp;amp;mAfeSpiInstance, (uint8_t *)&amp;amp;mAfeWriteBuf, length, (uint8_t *)&amp;amp;mAfeReadBuf, length));
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;When all is well, to enable continuous read mode - assuming you want that - issue the following:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;    AdsSendCmd(ADS_CMND_START);
    nrf_delay_us(400);
    AdsSendCmd(ADS_CMND_RDATAC);                     // Enable continuous read mode
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/155712?ContentTypeID=1</link><pubDate>Fri, 02 Nov 2018 10:00:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fd8025d1-3763-4dbe-ab3d-d46627911900</guid><dc:creator>Circuit Designers</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Now i am able to read register by selecting spi_config.frequency =&amp;nbsp;NRF_DRV_SPI_FREQ_250K.&lt;/p&gt;
&lt;p&gt;I have another issue that i am unable to write registers.&lt;/p&gt;
&lt;p&gt;i am using below code to write 0x03 register.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;char dataToSend[3];
dataToSend[0] = 0x03 | WREG;
ads1292_SPICommand(dataToSend[0]);
delayMicroSeconds(5);
dataToSend[1] = 0x00;
ads1292_SPICommand(dataToSend[1]);
delayMicroSeconds(5);
dataToSend[2] = 0x10;
ads1292_SPICommand(dataToSend[2]);m_length=3;
//ads1292_SPICommandString(dataToSend,3);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;what i did is...&lt;/p&gt;
&lt;p&gt;first i read 0x03 register and i got 0x10 (default) value then i write 0x03 register using above code and&amp;nbsp;after writing it when i read 0x03 it will return 0x00 value (it should be 0x10).&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks in advanced&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/155365?ContentTypeID=1</link><pubDate>Wed, 31 Oct 2018 14:26:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:83ea0ea1-30ef-4c76-95a8-3146c6f00766</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;I also note you do not stop continuous mode before reading; I believe that is required as the ADS1292 defaults to continuous mode on startup:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;    AdsSendCmd(ADS_CMND_SDATAC);                     // Stop continuous mode

/****************************************************************/
/* ADS1x9x COMMAND DESCRIPTION and definitions */
/****************************************************************/
typedef enum {
  // System Commands
  ADS_CMND_WAKEUP    = 0x02,   // Wake-up from standby mode
  ADS_CMND_STANDBY   = 0x04,   // Enter standby mode
  ADS_CMND_RESET_CMD = 0x06,   // Reset the device registers
  ADS_CMND_START     = 0x08,   // Start/restart (synchronize) conversions
  ADS_CMND_STOP      = 0x0A,   // Stop conversion
  ADS_CMND_OFFSETCAL = 0x1A,   // Channel offset calibration - needs to be sent every time there is a change to the PGA gain
  // Data Read Commands
  ADS_CMND_RDATAC    = 0x10,   // Enable Read Data Continuous mode.
                               // - This mode is the default mode at power-up.
  ADS_CMND_SDATAC    = 0x11,   // Stop Read Data Continuously mode
  ADS_CMND_RDATA     = 0x12,   // Read data by command; supports multiple read back.
  // Register Read/Write Commands
  ADS_CMND_RREG      = 0x20,   // Read n nnnn registers starting at address r rrrr
                               //  - first byte 001r rrrr (2xh)(2) - second byte 000n nnnn(2)
  ADS_CMND_WREG      = 0x40    // Write n nnnn registers starting at address r rrrr
                               //  - first byte 010r rrrr (2xh)(2) - second byte 000n nnnn(2)
} ADS1x9xCommand_t;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Following programming then restart sampling with&amp;nbsp;ADS_CMND_RDATAC&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/155358?ContentTypeID=1</link><pubDate>Wed, 31 Oct 2018 14:11:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fc558162-d1ad-4e10-aa5b-ab6234ac4ca2</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;It would be helpful if you post a small section of the schematic of the digital and power side of the ADS1292; I would like to see the two supply voltages (analogue and digital), the ADS i/o pins and the nRF52 i/o pins connecting to the ADS. In particular does the digital supply match the nRF digital i/o levels and how does the power pin turn on/off the ADS supply?&lt;/p&gt;
&lt;p&gt;I will have a look at the code later today, but meanwhile note that you are specifying a transmit of 3 bytes but for the read register command you are only asking for 0+1 bytes=1. Was that your intention?&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// Read command to get 1 register:
static uint8_t       ChipId[] = {0x20, 0x00, 0x00};           /**&amp;lt; TX buffer. */

// Read command to get 3 registers
static uint8_t       ChipId[] = {0x20, 0x02, 0x00};           /**&amp;lt; TX buffer. */
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/155252?ContentTypeID=1</link><pubDate>Wed, 31 Oct 2018 05:49:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:43cf6c95-a75c-4daf-bf48-a121fb5c2ce8</guid><dc:creator>Circuit Designers</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I made change in my code and make it very simple to just read chip ID. So as of now i am using below main.c code to read chip id.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/1104.main.c"&gt;devzone.nordicsemi.com/.../1104.main.c&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And by running this above code i am getting below result....&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;info&amp;gt; app: SPI example started.
&amp;lt;info&amp;gt; app:  43 30 20               |C0      
&amp;lt;info&amp;gt; app: =========== 1 =============
&amp;lt;info&amp;gt; app:  30 20 30 20 38 30 20   |0 0 80  
&amp;lt;info&amp;gt; app: =========== 1 =============
&amp;lt;info&amp;gt; app: ============ 2 ============
&amp;lt;info&amp;gt; app:  30 20 30 20 37 46 20   |0 0 7F  
&amp;lt;info&amp;gt; app: ============ 2 ============
&amp;lt;info&amp;gt; app: ============ 3 ============
&amp;lt;info&amp;gt; app:  46 46 20 46 46 20 43 30|FF FF C0
&amp;lt;info&amp;gt; app:  20                     |        
&amp;lt;info&amp;gt; app: ============ 3 ============
&amp;lt;info&amp;gt; app: ============ 4 ============
&amp;lt;info&amp;gt; app:  30 20 30 20 38 30 20   |0 0 80  
&amp;lt;info&amp;gt; app: ============ 4 ============
&amp;lt;info&amp;gt; app: ============ 5 ============
&amp;lt;info&amp;gt; app:  30 20 30 20 37 46 20   |0 0 7F  
&amp;lt;info&amp;gt; app: ============ 5 ============
&amp;lt;info&amp;gt; app: ============ 6 ============
&amp;lt;info&amp;gt; app:  46 46 20 46 46 20 43 30|FF FF C0
&amp;lt;info&amp;gt; app:  20                     |        
&amp;lt;info&amp;gt; app: ============ 6 ============&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If you can see then i am reading chip id 6 times. And each time result is changing. One more thing is result is keep repeating at every 3 times.&lt;/p&gt;
&lt;p&gt;I did as you suggest. And i am using internal oscillator which is running at default 512KHz frequency.&lt;/p&gt;
&lt;p&gt;Still not getting exact chip ID (it should be 0x73 as i am using ADS1292R).&lt;/p&gt;
&lt;p&gt;Correct me still if i am doing anything wrong. Suggest better solution just to read chip ID then ill update my application accordingly.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/155243?ContentTypeID=1</link><pubDate>Wed, 31 Oct 2018 02:32:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:04ba8b87-9636-47fc-87b7-f84c3375f30d</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;I looked over the code but there is too much for the time available. However in addition to my comments above I would (strongly) suggest that you remove all manual /CS code and instead allow the spi driver to do this:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;  spi_config.ss_pin   = ADS1292_CS_PIN;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I also have a question: the ADS1292 will not function unless the internal oscillator is enabled, if the internal oscillator is not enabled then an external oscillator must be present before you can perform any read-write commands. As an illustration, an ADS1292 output port was fed back to the osc select port so the oscillator could be changed from internal to external by SPI command for better synchronous operation; however, a write cannot be made to any register - including to set the output port - unless either the internal oscillator is selected or if not the external oscillator is running. The default in that case would be to the external oscillator, and so the ADS1292 would not start until the external oscillator was enable thus allowing the internal oscillator to be selected via the i/o pins and the external could be turned off. Which oscillator are you using?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/155201?ContentTypeID=1</link><pubDate>Tue, 30 Oct 2018 15:41:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6c28163d-dbb7-45d8-8724-be83ee61eead</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;I will look later today at the sequence, but for now note the following:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;APP_ERROR_CHECK(nrf_drv_spi_transfer(&amp;amp;spi, spiDataTx, 1, m_rx_buf, sizeof(m_rx_buf)));

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;SPI transfers as noted elsewhere on this forum clock out as many bits as they clock in, it is a synchronous protocol. The size of the Tx transfer in the code above is only 1 byte but the rx is 50 bytes so you should verify the number of bytes actually being transmitted so that all receive bytes arrive.&lt;/p&gt;
&lt;p&gt;Have you tried Mode 1 and 500kHz clock as I suggested? The code above still shows Mode 0 and 2MHz.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;spi_config.mode = NRF_DRV_SPI_MODE_0;
spi_config.frequency = NRF_DRV_SPI_FREQ_2M;


// Chip Select (CS)
// CS selects the ADS1291, ADS1292, and ADS1292R for SPI communication. CS must remain low for the entire
// duration of the serial communication. After the serial communication is finished, always wait four or more tCLK
// cycles before taking CS high. When CS is taken high, the serial interface is reset, SCLK and DIN are ignored,
// and DOUT enters a high-impedance state. DRDY asserts when data conversion is complete, regardless of
// whether CS is high or low

// Sending Multi-Byte Commands
// The ADS1291, ADS1292, and ADS1292R serial interface decodes commands in bytes and requires 4 tCLK cycles
// to decode and execute. Therefore, when sending multi-byte commands, a 4 tCLK period must separate the end of
// one byte (or opcode) and the next.
// Assume CLK is 512 kHz, then tSDECODE (4 tCLK) is 7.8125 us. When SCLK is 16 MHz, one byte can be
// transferred in 500 ns. This byte-transfer time does not meet the tSDECODE specification; therefore, a delay must be
// inserted so the end of the second byte arrives 7.3125 us later. If SCLK is 1 MHz, one byte is transferred in 8 �s.
// Because this transfer time exceeds the tSDECODE specification, the processor can send subsequent bytes without
// delay. In this later scenario, the serial port can be programmed to move from single-byte transfer per cycle to
// multiple bytes.
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;CS low-High-low prefix is not required.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/154991?ContentTypeID=1</link><pubDate>Tue, 30 Oct 2018 07:11:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d06f6494-09bb-4a05-a1b8-a3afe6e1d7ac</guid><dc:creator>Circuit Designers</dc:creator><description>&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/ads1292.c"&gt;devzone.nordicsemi.com/.../ads1292.c&lt;/a&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/ecg.c"&gt;devzone.nordicsemi.com/.../ecg.c&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;i used above two files.&lt;/p&gt;
&lt;p&gt;i used&amp;nbsp;&lt;strong&gt;ECG_Init()&lt;/strong&gt; function. Correct me if i am doing wrong.&lt;/p&gt;
&lt;p&gt;Please also correct me if i am performing wrong sequence.&lt;/p&gt;
&lt;p&gt;I am getting below output.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;info&amp;gt; app: SPI example started.
&amp;lt;info&amp;gt; app: 0.0
&amp;lt;info&amp;gt; app: 0.1
&amp;lt;info&amp;gt; app: 0.2
&amp;lt;info&amp;gt; app: 0.3
&amp;lt;info&amp;gt; app: 0.4
&amp;lt;info&amp;gt; app: 1.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  60                     |`       
&amp;lt;info&amp;gt; app: 0.5
&amp;lt;info&amp;gt; app: 1.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  60                     |`       
&amp;lt;info&amp;gt; app: 0.6
&amp;lt;info&amp;gt; app: 0.7
&amp;lt;info&amp;gt; app: 1.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  60                     |`       
&amp;lt;info&amp;gt; app: 0.8
&amp;lt;info&amp;gt; app: 3.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 0.9
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  3F FF FF E0            |?...    
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 0.10
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  FF FF E0               |...     
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  40                     |@       
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  FF E0                  |..      
&amp;lt;info&amp;gt; app: 0.11
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  E0                     |.       
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 0.12
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  3F FF FF E0            |?...    
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 0.13
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  FF FF E0               |...     
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  40                     |@       
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  FF E0                  |..      
&amp;lt;info&amp;gt; app: 0.14
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  E0                     |.       
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 0.15
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  3F FF FF E0            |?...    
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 0.16
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  FF FF E0               |...     
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  40                     |@       
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  FF E0                  |..      
&amp;lt;info&amp;gt; app: 0.17
&amp;lt;info&amp;gt; app: 2.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 2.1
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app:  Received:
&amp;lt;info&amp;gt; app:  E0                     |.       
&amp;lt;info&amp;gt; app: 2.2
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 0.18
&amp;lt;info&amp;gt; app: 1.0
&amp;lt;info&amp;gt; app: Transfer completed.
&amp;lt;info&amp;gt; app: 0.19
&amp;lt;info&amp;gt; app: Initiliziation is done
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/154953?ContentTypeID=1</link><pubDate>Mon, 29 Oct 2018 19:17:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:80dc629f-cedc-40cb-aa02-262de36dd38c</guid><dc:creator>awneil</dc:creator><description>[quote userid="65515" url="~/f/nordic-q-a/39942/nrf52840---ads1292/154938"]Read the data sheet[/quote]
&lt;p&gt;Always good advice!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/members/circuit-designers"&gt;Circuit Designers&lt;/a&gt; -&amp;nbsp; How to properly post source code:&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/3463.Insert-Code-_2D00_-Nordic.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/154938?ContentTypeID=1</link><pubDate>Mon, 29 Oct 2018 17:42:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:afc03b04-be70-4836-8890-53c355a46f8b</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;4MHz and Mode 0 will create difficulties for the ADS1292. Try the following:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;spi_config.frequency = NRF_DRV_SPI_FREQ_500K;  // Ensure less than 4 clk cycles for ADS1292
spi_config.bit_order = NRF_DRV_SPI_BIT_ORDER_MSB_FIRST;
spi_config.mode      = NRF_DRV_SPI_MODE_1;
APP_ERROR_CHECK(nrf_drv_spi_init(&amp;amp;mAfeSpiInstance, &amp;amp;spi_config, afe_spi_event_handler, NULL));
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Reading the version code is easiest using a single transfer:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// Scratch pad comms buffers, used for reading all AFE registers - want to preserve these for debugging
#define AFE_HARDWARE_VERSION 0x53

static uint8_t mTxBuf[] = {ADS_CMND_RREG, NUMBER_OF_ADS_REGISTERS-1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
static uint8_t mRxBuf[sizeof(mTxBuf)];
static const uint8_t mRxTxBufLength = sizeof(mTxBuf);

/**
 * @brief SPI command to read AFE registers
 * @param event
 */
static void ReadAfeRegisters(void)
{
    uint32_t spiAttempCount, mAfeSpiErrorCount = 0;

    for (spiAttempCount=0; spiAttempCount &amp;lt; AFE_MAX_ATTEMPTS; spiAttempCount++)
    {
        memset(mRxBuf, &amp;#39;?&amp;#39;, mRxTxBufLength);
        mAfePacketTransferComplete = false;
        APP_ERROR_CHECK(nrf_drv_spi_transfer(&amp;amp;mAfeSpiInstance, mTxBuf, mRxTxBufLength, mRxBuf, mRxTxBufLength));
        // Hard delay per byte to transmit
        nrf_delay_us(mRxTxBufLength*AFE_SPI_PER_BYTE_uSECS);
        // Check for ADS1292 Id
        if (mAfePacketTransferComplete &amp;amp;&amp;amp; (mRxBuf[2] == AFE_HARDWARE_VERSION))
        {
            // Correct Id for this AFE
            break;
        }
        else
        {
            mAfeSpiErrorCount++;
            // Extra hard delay per byte to transmit
            nrf_delay_us(mRxTxBufLength*AFE_SPI_PER_BYTE_uSECS);
        }
    }
    // Post the results (may be bad)
    ...
}

/**
 * @brief SPI event handler indicating SPI transfer has completed
 * @param event
 */
static void afe_spi_event_handler(nrf_drv_spi_evt_t const * p_event, void *p_context)
{
    mAfePacketTransferComplete = true;
}

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Read the data sheet to see why the slow transfer speed is being used in my example; it is related to the number of clock cycles required by the part to handle SPI commands before the next SPI info; faster speeds are ok provided the code manages that restriction - I choose to take the simplest solution :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52840 - ADS1292</title><link>https://devzone.nordicsemi.com/thread/154859?ContentTypeID=1</link><pubDate>Mon, 29 Oct 2018 12:38:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:426b7810-7c94-41a7-a9ba-6b21ba438bf1</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;I suggest you get a scope of the SPI communication and ask TI if whether it&amp;#39;s correct or not. As long as the SPI peripheral itself is behaving as it should then you need to go to TI for&amp;nbsp;&lt;span&gt;ads1292 support. Either way you need a scope of the SPI communication.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>