<?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>Clarification on SPI Transceive Timing in nRF Connect SDK for RHS2116 Integration</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/116381/clarification-on-spi-transceive-timing-in-nrf-connect-sdk-for-rhs2116-integration</link><description>We are developing on the nRF52 Development Kit (nRF52 DK) for the nRF52832 SoC. Our application involves a 4-wire pipelined SPI communication with the Intan RHS2116 chip. According to the RHS2116 documentation (page 30, Picture 1), the SPI connection</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 25 Nov 2024 07:51:23 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/116381/clarification-on-spi-transceive-timing-in-nrf-connect-sdk-for-rhs2116-integration" /><item><title>RE: Clarification on SPI Transceive Timing in nRF Connect SDK for RHS2116 Integration</title><link>https://devzone.nordicsemi.com/thread/511819?ContentTypeID=1</link><pubDate>Mon, 25 Nov 2024 07:51:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0c95da2e-ba1b-4367-91be-37fe2c742185</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="vizheli"]Manually configurating the CSN pin has solved the issue, and the small timing gaps in sclk doesn&amp;#39;t seem to cause problems for data integrity.[/quote]
&lt;p&gt;Glad to hear that the issue has been solved!&lt;/p&gt;
[quote user="vizheli"]Thank you for your help![/quote]
&lt;p&gt;Always happy to help out. Hope you have a wonderful day!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Clarification on SPI Transceive Timing in nRF Connect SDK for RHS2116 Integration</title><link>https://devzone.nordicsemi.com/thread/511721?ContentTypeID=1</link><pubDate>Fri, 22 Nov 2024 15:47:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0597ddee-5f27-48c3-9f21-8b466c37fe86</guid><dc:creator>vizheli</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;H&amp;aring;kon,&lt;/p&gt;
&lt;p&gt;Manually configurating the CSN pin has solved the issue, and the small timing gaps in sclk doesn&amp;#39;t seem to cause problems for data integrity.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the configuration in full:&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static uint8_t tx_buffer[4];
static uint8_t rx_buffer[4] = {0x00, 0x00, 0x00, 0x00};

struct device * spi_dev;

static const struct spi_config spi_cfg = {
	.operation = SPI_WORD_SET(8) | SPI_TRANSFER_MSB ,
	.frequency = 20000000, //maximum frequency of 25MHz per intan rhs2116 specs
	.slave = 0,
	.cs = {
			.gpio = GPIO_DT_SPEC_GET(SPI_DEV_NODE, cs_gpios),
			.delay=0,
		},
};


static void spi_init(void)
{	
	const char* const spiName = &amp;quot;SPI_1&amp;quot;;
	spi_dev = device_get_binding(spiName);
	if (spi_dev == NULL) {
		printk(&amp;quot;Could not get %s device\n&amp;quot;, spiName);
		return;
	}
}

const struct spi_buf tx_buf = {
        .buf = tx_buffer,
        .len = sizeof(tx_buffer)
};
const struct spi_buf_set tx = {
        .buffers = &amp;amp;tx_buf,
        .count = 1
};

const struct spi_buf rx_buf = {
        .buf = rx_buffer,
        .len = sizeof(rx_buffer),
};
const struct spi_buf_set rx = {
        .buffers = &amp;amp;rx_buf,
        .count = 1
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Overlay:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;amp;spi1 {        
    compatible = &amp;quot;nordic,nrf-spi&amp;quot;;                 // SPI controller, e.g., SPI1
    status = &amp;quot;okay&amp;quot;;           // Enable this SPI controller
    pinctrl-0 = &amp;lt;&amp;amp;spi1_default&amp;gt;;
    pinctrl-1 = &amp;lt;&amp;amp;spi1_sleep&amp;gt;;
    pinctrl-names = &amp;quot;default&amp;quot;, &amp;quot;sleep&amp;quot;;
    cs-gpios = &amp;lt;&amp;amp;gpio0 30 GPIO_ACTIVE_LOW&amp;gt;; // Chip Select pin (CS), active low
    label = &amp;quot;SPI_1&amp;quot;;

    
};

&amp;amp;pinctrl {
    spi1_default: spi1_default {
        group1 {
            psels = &amp;lt;NRF_PSEL(SPIM_SCK, 0, 28)&amp;gt;,					 
                    &amp;lt;NRF_PSEL(SPIM_MOSI, 0, 29)&amp;gt;,
                    &amp;lt;NRF_PSEL(SPIM_MISO, 0, 31)&amp;gt;;
        };
    };
    spi1_sleep: spi1_sleep {
        group1 {
            psels = &amp;lt;NRF_PSEL(SPIM_SCK, 0, 28)&amp;gt;,
                    &amp;lt;NRF_PSEL(SPIM_MOSI, 0, 29)&amp;gt;,
                    &amp;lt;NRF_PSEL(SPIM_MISO, 0, 31)&amp;gt;;
            low-power-enable;
        };
    };
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Thank you for your help!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Clarification on SPI Transceive Timing in nRF Connect SDK for RHS2116 Integration</title><link>https://devzone.nordicsemi.com/thread/511550?ContentTypeID=1</link><pubDate>Thu, 21 Nov 2024 16:39:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fadb408b-782c-4d55-bfb3-bd14bdfe58ab</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Since you are setting up the SPI manually, you will need to&amp;nbsp;provide the&amp;nbsp;.cs pin member manually in your firmware. Here&amp;#39;s an example of such:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/nrfconnect/sdk-zephyr/blob/v3.7.99-ncs1/samples/boards/nordic/nrfx_prs/src/main.c#L304-L306"&gt;https://github.com/nrfconnect/sdk-zephyr/blob/v3.7.99-ncs1/samples/boards/nordic/nrfx_prs/src/main.c#L304-L306&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Where &amp;quot;SPI_DEV_NODE&amp;quot; in your case is&amp;nbsp;DT_NODELABEL(spi1).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user="vizheli"]the sclk seems to have a delay between 16bits cycles, which is unwanted behavior.[/quote]
&lt;p&gt;NRF_SPI is not&amp;nbsp;DMA capable (which NRF_SPIM is), so it will have a delay between each byte.&lt;/p&gt;
&lt;p&gt;I think your issue is related to the /CSN pin, try to implement that, then&amp;nbsp;check CSN/CLK/MOSI/MISO pins with a scope or a logic analyzer to see how they behave afterwards.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Clarification on SPI Transceive Timing in nRF Connect SDK for RHS2116 Integration</title><link>https://devzone.nordicsemi.com/thread/511499?ContentTypeID=1</link><pubDate>Thu, 21 Nov 2024 13:49:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:081426ed-1125-4088-bd07-ae26bd5a6570</guid><dc:creator>vizheli</dc:creator><description>&lt;p&gt;Hi Hakan,&lt;br /&gt;&lt;br /&gt;I am the student currently responsible for the implementation.&lt;br /&gt;&lt;br /&gt;The above error has been solved by removing the node &amp;quot;rhs2116&amp;quot; from the overlay. However I&amp;#39;m still not able to establish communication between our intan module and the nrf52 DK.&lt;br /&gt;&lt;br /&gt;As a reminder the intan rhs2116 asks for 32 bits dataframes per chip select cycle:&lt;br /&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1732195720185v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;However after observing the outputs of the nRF 52 dk on an oscilloscope, the sclk seems to have a delay between 16bits cycles, which is unwanted behavior.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1732195924660v2.png" alt=" " /&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1732195936118v3.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Also the chip select pin doesn&amp;#39;t seem to change neither.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the overlay configuration of the spi bus and buffer configurations:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;&amp;amp;spi1 {        
    compatible = &amp;quot;nordic,nrf-spi&amp;quot;;                 // SPI controller, e.g., SPI1
    status = &amp;quot;okay&amp;quot;;           // Enable this SPI controller
    pinctrl-0 = &amp;lt;&amp;amp;spi1_default&amp;gt;;
    pinctrl-1 = &amp;lt;&amp;amp;spi1_sleep&amp;gt;;
    pinctrl-names = &amp;quot;default&amp;quot;, &amp;quot;sleep&amp;quot;;
    cs-gpios = &amp;lt;&amp;amp;gpio0 30 GPIO_ACTIVE_LOW&amp;gt;; // Chip Select pin (CS), active low
    label = &amp;quot;SPI_1&amp;quot;;
};

&amp;amp;pinctrl {
    spi1_default: spi1_default {
        group1 {
            psels = &amp;lt;NRF_PSEL(SPIM_SCK, 0, 28)&amp;gt;,					 
                    &amp;lt;NRF_PSEL(SPIM_MOSI, 0, 29)&amp;gt;,
                    &amp;lt;NRF_PSEL(SPIM_MISO, 0, 31)&amp;gt;;
        };
    };
    spi1_sleep: spi1_sleep {
        group1 {
            psels = &amp;lt;NRF_PSEL(SPIM_SCK, 0, 28)&amp;gt;,
                    &amp;lt;NRF_PSEL(SPIM_MOSI, 0, 29)&amp;gt;,
                    &amp;lt;NRF_PSEL(SPIM_MISO, 0, 31)&amp;gt;;
            low-power-enable;
        };
    };
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;spi configs:&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static uint8_t tx_buffer[4];
static uint8_t rx_buffer[4] = {0x00, 0x00, 0x00, 0x00};
static uint32_t tx32;
static uint32_t rx32;

static const struct spi_config spi_cfg = {
	.operation = SPI_WORD_SET(8) | SPI_TRANSFER_MSB ,
	.frequency = 1000000, //1MHz
	.slave = 0,
};

struct device * spi_dev;

static void spi_init(void)
{
	const char* const spiName = &amp;quot;SPI_1&amp;quot;;
	spi_dev = device_get_binding(spiName);

	if (spi_dev == NULL) {
		printk(&amp;quot;Could not get %s device\n&amp;quot;, spiName);
		return;
	}
}

const struct spi_buf tx_buf = {
        .buf = tx_buffer,
        .len = sizeof(tx_buffer)
};
const struct spi_buf_set tx = {
        .buffers = &amp;amp;tx_buf,
        .count = 1
};

const struct spi_buf rx_buf = {
        .buf = rx_buffer,
        .len = sizeof(rx_buffer),
};
const struct spi_buf_set rx = {
        .buffers = &amp;amp;rx_buf,
        .count = 1
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;read register function based on spi_transceive between intan and nrf:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;void rhs_read(uint8_t reg_addr, uint8_t flagU, uint8_t flagM) {
    // Prepare the TX buffer: first 32 bits for the register address, next 32 bits for data
    
	flagU = 0; //set flags to false for testing
	flagM = 0;
    
	tx_buffer[0] = 0b11000000 | flagU &amp;lt;&amp;lt; 4 | flagM &amp;lt;&amp;lt; 5;
	tx_buffer[1] = reg_addr;
	tx_buffer[2] = 0b00000000;
	tx_buffer[3] = 0b00000000;

	tx32 = tx_buffer[0] &amp;lt;&amp;lt; (24) | tx_buffer[1] &amp;lt;&amp;lt; (16) | tx_buffer[2] &amp;lt;&amp;lt; (8) | tx_buffer[3] ;
	//printk(&amp;quot;tx %x \n&amp;quot;,tx32);

	int err;

	err = spi_transceive(spi_dev, &amp;amp;spi_cfg, &amp;amp;tx, &amp;amp;rx);
	if (err) {
		printk(&amp;quot;read intan error: %d\n&amp;quot;, err);
	} else {
        rx32 = rx_buffer[0] &amp;lt;&amp;lt; (24) | rx_buffer[1] &amp;lt;&amp;lt; (16) | rx_buffer[2] &amp;lt;&amp;lt; (8) | rx_buffer[3];
		
	}	
	err = spi_transceive(spi_dev, &amp;amp;spi_cfg, &amp;amp;tx, &amp;amp;rx);//dummy
	if (err) {
		printk(&amp;quot;read intan error: %d\n&amp;quot;, err);
	} else {
        rx32 = rx_buffer[0] &amp;lt;&amp;lt; (24) | rx_buffer[1] &amp;lt;&amp;lt; (16) | rx_buffer[2] &amp;lt;&amp;lt; (8) | rx_buffer[3];
		//printk(&amp;quot;it 2\n&amp;quot;);
		//printk(&amp;quot;RX recv: %x\n&amp;quot;, rx32);
	}	
	err = spi_transceive(spi_dev, &amp;amp;spi_cfg, &amp;amp;tx, &amp;amp;rx);//dummy
	if (err) {
		//printk(&amp;quot;read intan error: %d\n&amp;quot;, err);
	} else {
        rx32 = rx_buffer[0] &amp;lt;&amp;lt; (24) | rx_buffer[1] &amp;lt;&amp;lt; (16) | rx_buffer[2] &amp;lt;&amp;lt; (8) | rx_buffer[3];
		//printk(&amp;quot;it 3\n&amp;quot;);
		//printk(&amp;quot;RX recv: %x\n&amp;quot;, rx32);
	}	

    
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Sorry for the long post and I hope there&amp;#39;s a way to solve this!&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Clarification on SPI Transceive Timing in nRF Connect SDK for RHS2116 Integration</title><link>https://devzone.nordicsemi.com/thread/510720?ContentTypeID=1</link><pubDate>Fri, 15 Nov 2024 14:12:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:eef3381c-5393-4317-ae00-d66bdd0cf053</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Have you had a look at this section of the ncs dev academy?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://academy.nordicsemi.com/courses/nrf-connect-sdk-intermediate/lessons/lesson-5-serial-peripheral-interface-spi/topic/exercise-1-10/"&gt;https://academy.nordicsemi.com/courses/nrf-connect-sdk-intermediate/lessons/lesson-5-serial-peripheral-interface-spi/topic/exercise-1-10/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you still see an issue, can you please post your code?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Clarification on SPI Transceive Timing in nRF Connect SDK for RHS2116 Integration</title><link>https://devzone.nordicsemi.com/thread/510510?ContentTypeID=1</link><pubDate>Thu, 14 Nov 2024 13:51:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a2741cbd-9c26-4ad3-a217-c2e845b68e3d</guid><dc:creator>Pietro Palopoli</dc:creator><description>&lt;p&gt;Hi, thanks for the response!&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re still seeing error 22, which suggests the SPI module isn&amp;rsquo;t addressed correctly with the &lt;code&gt;spi_transceive_dt&lt;/code&gt; function. It seems like the SPI setup might not be configured right. Any advice on adding a new SPI device properly?&lt;/p&gt;
&lt;p&gt;Specifically:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How to configure the device tree and the device tree overlay to set up a CS pin?&lt;/li&gt;
&lt;li&gt;Is a custom &lt;code&gt;.yaml&lt;/code&gt; file needed for this particular SPI module, and if so, how should that be structured?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here&amp;rsquo;s our current overlay for the SPI module:&lt;/p&gt;
&lt;div&gt;
&lt;div class="flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none"&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="absolute bottom-0 right-2 flex h-9 items-center"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;amp;spi1 {&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;compatible = &lt;span class="hljs-string"&gt;&amp;quot;nordic,nrf-spi&amp;quot;&lt;/span&gt;; &lt;span class="hljs-comment"&gt;// using SPI as per ERRATA 58&lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;status = &lt;span class="hljs-string"&gt;&amp;quot;okay&amp;quot;&lt;/span&gt;;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pinctrl&lt;span class="hljs-number"&gt;-0&lt;/span&gt; = &amp;lt;&amp;amp;spi1_default&amp;gt;;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pinctrl&lt;span class="hljs-number"&gt;-1&lt;/span&gt; = &amp;lt;&amp;amp;spi1_sleep&amp;gt;;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pinctrl-names = &lt;span class="hljs-string"&gt;&amp;quot;default&amp;quot;&lt;/span&gt;, &lt;span class="hljs-string"&gt;&amp;quot;sleep&amp;quot;&lt;/span&gt;;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cs-gpios = &amp;lt;&amp;amp;gpio0 &lt;span class="hljs-number"&gt;30&lt;/span&gt; GPIO_ACTIVE_LOW&amp;gt;;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rhs2116: rhs2116@&lt;span class="hljs-number"&gt;0&lt;/span&gt; {&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;compatible = &lt;span class="hljs-string"&gt;&amp;quot;vnd,spi-device&amp;quot;&lt;/span&gt;; reg = &amp;lt;&lt;span class="hljs-number"&gt;0&lt;/span&gt;&amp;gt;;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;spi-max-frequency = &amp;lt;&lt;span class="hljs-number"&gt;1600000&lt;/span&gt;&amp;gt;;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;label = &lt;span class="hljs-string"&gt;&amp;quot;rhs2116&amp;quot;&lt;/span&gt;;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;};&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;amp;pinctrl {&lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;spi1_default: spi1_default { &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; group1 { &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;psels = &amp;lt;NRF_PSEL(SPIM_SCK, 0, 28)&amp;gt;, &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;NRF_PSEL(SPIM_MOSI, 0, 29)&amp;gt;, &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;NRF_PSEL(SPIM_MISO, 0, 31)&amp;gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }; &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}; &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;spi1_sleep: spi1_sleep {&lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; group1 { &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;psels = &amp;lt;NRF_PSEL(SPIM_SCK, 0, 28)&amp;gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;NRF_PSEL(SPIM_MOSI, 0, 29)&amp;gt;, &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;NRF_PSEL(SPIM_MISO, 0, 31)&amp;gt;; &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;low-power-enable; &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}; &lt;/span&gt;&lt;/div&gt;
&lt;div class="overflow-y-auto p-4" dir="ltr"&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Clarification on SPI Transceive Timing in nRF Connect SDK for RHS2116 Integration</title><link>https://devzone.nordicsemi.com/thread/510479?ContentTypeID=1</link><pubDate>Thu, 14 Nov 2024 12:42:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:12b08bf5-4934-4aad-a494-2eb54a21b51a</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user=""]Could you confirm if spi_transceive in the nRF Connect SDK supports simultaneous read/write operations in the same cycle? Additionally, if there are configurations or alternative methods recommended for achieving this synchronized SPI communication with the nRF52832, we would appreciate any guidance.[/quote]
&lt;p&gt;SPI is full duplex, ie. that you can receive and transmit in the same transaction.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, the sensor that you link to seems to want two bytes on MOSI, and then it&amp;#39;ll return the data on MISO after that, as stated in this page:&lt;/p&gt;
[quote user=""]According to the RHS2116 documentation (page 30, Picture 1),[/quote]
&lt;p&gt;&lt;em&gt;a “Master Out, Slave In” data line (MOSI) to receive commands from the master device;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;and a “Master In, Slave Out” data line (MISO) to send pipelined results from prior commands to the master device.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>