<?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>Ble application with spi manager library</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/60627/ble-application-with-spi-manager-library</link><description>Hi, 
 I&amp;#39;m testing ads1292 sensor with nrf52832. 
 I got some problem when i use spi manager library. 
 
 I&amp;#39;m using ble_app_hrs project. 
 If i use spi manager without advertising, drdy interrupt and spi_read is working. 
 But, if i use spi manager after</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Sun, 26 Apr 2020 23:47:56 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/60627/ble-application-with-spi-manager-library" /><item><title>RE: Ble application with spi manager library</title><link>https://devzone.nordicsemi.com/thread/246655?ContentTypeID=1</link><pubDate>Sun, 26 Apr 2020 23:47:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:128c512c-ddcd-4591-b56d-6890f2a3ae58</guid><dc:creator>Youngjun</dc:creator><description>&lt;p&gt;Thanks for replying.&lt;/p&gt;
&lt;p&gt;I tested using 500K.&lt;/p&gt;
&lt;p&gt;And, it doesn&amp;#39;t work.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I changed code to use flag in main loop.&lt;/p&gt;
&lt;p&gt;But, it also doesn&amp;#39;t work.&lt;/p&gt;
&lt;p&gt;When i delete ads1292ReadData(), drdy worked.&lt;br /&gt;Is there any problem in SDK when using scheduleSPI()?&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;	for (;;)
	{
		if (NRF_LOG_PROCESS() == false)
		{
			idle_state_handle();
		}
		
		if(ads1292_drdy_flag){
			ads1292_drdy_flag = false;
			ads1292ReadData();
		}
		/*
		if(ads1292_dat_read_flag){
			ads1292_dat_read_flag = false;
			sendData();
		}
		*/
			
	}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Ble application with spi manager library</title><link>https://devzone.nordicsemi.com/thread/246597?ContentTypeID=1</link><pubDate>Fri, 24 Apr 2020 16:42:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0d2f018d-a7fa-409e-a105-3125952b317f</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;Two suggestions, first care is required above 500kHz:&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

// 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 &amp;#239;&amp;#191;&amp;#189;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.

// 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.&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Second interrupt functions triggering other interrupt functions can be avoided by using flags or signals, so I would suggest only set a flag in both DRDY and SPI interrupts and monitoring those flags on each wakeup (given the interrupt generates a wakeup) and then invoking the functions (eg spi from DRDY). This leads to more robust code and may fix the issues.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>