<?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>SPI chip select lines</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/90536/spi-chip-select-lines</link><description>I am trying to use a SPI bus with three MAX3109 chips attached to give me 6 UARTS. My overlay is defined as follows: 
 
 &amp;amp; spi1 { 
 cs-gpios = &amp;lt;&amp;amp; gpio1 13 GPIO_ACTIVE_LOW &amp;gt;, 
 &amp;lt;&amp;amp; gpio1 14 GPIO_ACTIVE_LOW &amp;gt;, 
 &amp;lt;&amp;amp; gpio1 15 GPIO_ACTIVE_LOW &amp;gt;; 
 status =</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 16 Aug 2022 07:43:53 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/90536/spi-chip-select-lines" /><item><title>RE: SPI chip select lines</title><link>https://devzone.nordicsemi.com/thread/381698?ContentTypeID=1</link><pubDate>Tue, 16 Aug 2022 07:43:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:14e82ad0-96cc-4330-98ed-f30b78c0d02d</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;Thank you for additional information. &lt;br /&gt;&lt;br /&gt;Parameter delay is defined in the spi_cs_control struct. It is defined as delay in microseconds to wait before starting the transmission and before releasing the CS line.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SPI chip select lines</title><link>https://devzone.nordicsemi.com/thread/381621?ContentTypeID=1</link><pubDate>Mon, 15 Aug 2022 14:47:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b9f07006-4abd-4e33-903d-4a35fe4d89b4</guid><dc:creator>jmilliken</dc:creator><description>&lt;p&gt;Hi. I am referring to the macro&amp;nbsp;&lt;span&gt;SPI_CS_CONTROL_PTR_DT&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;DT_NODELABEL&lt;/span&gt;&lt;span&gt;(irda_uart1),&amp;nbsp;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;). Jumping to the definition of the macro gives me the following:&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* &lt;/span&gt;&lt;span&gt;@param&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;node_id&lt;/span&gt;&lt;span&gt; Devicetree node identifier for a device on a SPI bus&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* &lt;/span&gt;&lt;span&gt;@param&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;delay_&lt;/span&gt;&lt;span&gt; The &lt;/span&gt;&lt;span&gt;@p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;delay&lt;/span&gt;&lt;span&gt; field to set in the &lt;/span&gt;&lt;span&gt;@p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;spi_cs_control&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;* &lt;/span&gt;&lt;span&gt;@return&lt;/span&gt;&lt;span&gt; a pointer to the &lt;/span&gt;&lt;span&gt;@p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;spi_cs_control&lt;/span&gt;&lt;span&gt; structure&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;span&gt;SPI_CS_CONTROL_PTR_DT&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;node_id&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;delay_&lt;/span&gt;&lt;span&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; (&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;(struct &lt;/span&gt;&lt;span&gt;spi_cs_control&lt;/span&gt;&lt;span&gt;) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .gpio &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;DT_SPI_DEV_CS_GPIOS_DT_SPEC_GET&lt;/span&gt;&lt;span&gt;(node_id), &lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .delay &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (delay_), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; })&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;So this delay does not seem to be used, or at least I don&amp;#39;t understand how it is used. Changing the value does not seem to make a difference in the outcome.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SPI chip select lines</title><link>https://devzone.nordicsemi.com/thread/381610?ContentTypeID=1</link><pubDate>Mon, 15 Aug 2022 14:00:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b9f2116b-8b57-4d42-9cb1-cc36f4101908</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user="jmilliken"]it might be worth mentioning that the delay time specified in the macro is completely ignored.[/quote]
&lt;p&gt;Which macro do you refer to?&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
[quote user="jmilliken"]Regardless of what I put there - I&amp;#39;ve tried values from 1 to 10 - the timing on chip select is always the same.[/quote]
&lt;p&gt;Could you please show where and how you specify delay values?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SPI chip select lines</title><link>https://devzone.nordicsemi.com/thread/381248?ContentTypeID=1</link><pubDate>Thu, 11 Aug 2022 23:57:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e791bb20-339e-4c52-acc8-0705cca1e051</guid><dc:creator>jmilliken</dc:creator><description>&lt;p&gt;Hi. I was able to make this work by changing the declaration of the spi_config struct a bit to just directly use the device tree macro&amp;nbsp;SPI_CS_CONTROL_PTR_DT(). So I do the following:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;spi_config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;spi_cfg0&lt;/span&gt;&lt;span&gt; = {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; .operation = &lt;/span&gt;&lt;span&gt;SPI_WORD_SET&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;) | &lt;/span&gt;&lt;span&gt;SPI_TRANSFER_MSB&lt;/span&gt;&lt;span&gt; |&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;SPI_MODE_CPOL&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;SPI_MODE_CPHA&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; .frequency = &lt;/span&gt;&lt;span&gt;2000000&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; .slave = &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; .cs = &lt;/span&gt;&lt;span&gt;SPI_CS_CONTROL_PTR_DT&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;DT_NODELABEL&lt;/span&gt;&lt;span&gt;(irda_uart0), &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;I can also target the other CS pin by creating a second struct:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;spi_config&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;spi_cfg1&lt;/span&gt;&lt;span&gt;&amp;nbsp;= {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; .operation =&amp;nbsp;&lt;/span&gt;&lt;span&gt;SPI_WORD_SET&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;) |&amp;nbsp;&lt;/span&gt;&lt;span&gt;SPI_TRANSFER_MSB&lt;/span&gt;&lt;span&gt;&amp;nbsp;|&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;SPI_MODE_CPOL&lt;/span&gt;&lt;span&gt;&amp;nbsp;|&amp;nbsp;&lt;/span&gt;&lt;span&gt;SPI_MODE_CPHA&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; .frequency =&amp;nbsp;&lt;/span&gt;&lt;span&gt;2000000&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; .slave =&amp;nbsp;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; .cs =&amp;nbsp;&lt;/span&gt;&lt;span&gt;SPI_CS_CONTROL_PTR_DT&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;DT_NODELABEL&lt;/span&gt;&lt;span&gt;(irda_uart1),&amp;nbsp;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;I test this with the following:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;ping_pong&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;ping_pong&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;err&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;spi_transceive&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;spi_dev&lt;/span&gt;&lt;span&gt;, &amp;amp;&lt;/span&gt;&lt;span&gt;spi_cfg0&lt;/span&gt;&lt;span&gt;, &amp;amp;&lt;/span&gt;&lt;span&gt;tx&lt;/span&gt;&lt;span&gt;, &amp;amp;&lt;/span&gt;&lt;span&gt;rx&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;ping_pong&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;err&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;spi_transceive&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;spi_dev&lt;/span&gt;&lt;span&gt;, &amp;amp;&lt;/span&gt;&lt;span&gt;spi_cfg1&lt;/span&gt;&lt;span&gt;, &amp;amp;&lt;/span&gt;&lt;span&gt;tx&lt;/span&gt;&lt;span&gt;, &amp;amp;&lt;/span&gt;&lt;span&gt;rx&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;And can see on the scope, triggering off the clock line, that the chip select pins alternate. So all good there. However, it might be worth mentioning that the delay time specified in the macro is completely ignored. Regardless of what I put there - I&amp;#39;ve tried values from 1 to 10 - the timing on chip select is always the same. CS line is pulled low 10usec before the clock starts and then pulled high 30usec after clock ends. This timing is fine and fact specifying a chip select delay for a SPI in msec is somewhat ludicrous in the first place. But I&amp;#39;m curious what that delay parameter actually controls.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;-Jamie&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SPI chip select lines</title><link>https://devzone.nordicsemi.com/thread/379583?ContentTypeID=1</link><pubDate>Mon, 01 Aug 2022 14:57:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1b403ea9-1730-4b9c-978c-b2b7c99eb0a4</guid><dc:creator>dejans</dc:creator><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;Could you provide zephyr.dts file which is located in &amp;lt;your_application_folder&amp;gt;\build\zephyr?&lt;br /&gt;&lt;br /&gt;Could you please provide more information about &amp;quot;spi-device&amp;quot; that is present in your overlay file?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Dejan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SPI chip select lines</title><link>https://devzone.nordicsemi.com/thread/379403?ContentTypeID=1</link><pubDate>Sun, 31 Jul 2022 16:08:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c86030d3-903d-4140-9878-2678ee474010</guid><dc:creator>jmilliken</dc:creator><description>&lt;p&gt;One thing I noticed - when I hover over the &amp;amp;spi1 in my overlay file to expand its contents, I see that it has added the cs-gpios information and pin assignments from the overlay. But the irda_uart nodes are showing that content automatically commented out. It seems that everything I define in there is being discarded, yet I&amp;#39;m not getting errors or warnings. See below.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/7356.Untitled.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>