<?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>Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/42856/want-to-send-value-on-a-particular-register-using-spi</link><description>void spi_read_write(0x1E,0x00) ==&amp;gt; output 0x10 as return value of register read. 
 Here I want to send value 0x90 as register value in the argument of spi_read_write(0x1E, 0x90) function, after sending this it is retaining 0x10 as a rx_data buffer. Here</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 25 Jan 2019 06:53:30 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/42856/want-to-send-value-on-a-particular-register-using-spi" /><item><title>RE: Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/thread/167808?ContentTypeID=1</link><pubDate>Fri, 25 Jan 2019 06:53:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dbf1e08e-5426-47c2-937d-67680f2cea3d</guid><dc:creator>Meera Shah</dc:creator><description>&lt;p&gt;Yes .......I found the solution of my problem. I was masking MSB bit of a register for both read and write operation, but it is needed for read operation only.&amp;nbsp;&lt;pre class="ui-code" data-mode="text"&gt;void spi_read(uint8_t register_pointer)
{
    ret_code_t err_code;
    uint8_t tx_data;
   
    memset(spi_rx_data,0x00,sizeof(spi_rx_data));
    register_pointer |= 0x80;   //this is needed for reading operation
    tx_data = register_pointer;
   
    err_code = nrf_drv_spi_transfer(&amp;amp;spi, &amp;amp;tx_data,1, spi_rx_data,sizeof(spi_rx_data));
    NRF_LOG_HEXDUMP_INFO(spi_rx_data,sizeof(spi_rx_data));
    APP_ERROR_CHECK(err_code);  
   
}

void spi_write(uint8_t register_pointer, uint8_t register_value)
{
    ret_code_t err_code;
    memset(spi_rx_data,0x00,sizeof(spi_rx_data));
    
    data[0] = register_pointer;    //no need of masking higher bit of register
    data[1] = register_value;
    
    err_code = nrf_drv_spi_transfer(&amp;amp;spi, data,sizeof(data), spi_rx_data,sizeof(spi_rx_data));
    NRF_LOG_HEXDUMP_INFO(spi_rx_data,sizeof(spi_rx_data));
    APP_ERROR_CHECK(err_code);  
} 


&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/thread/167356?ContentTypeID=1</link><pubDate>Wed, 23 Jan 2019 12:05:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fe5fb089-5541-4594-90f9-9343e83cb929</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;Are you sure that the write operation will echo back the value written to the register? What happens if you read/write it once again? Can you post your entire code you used for writing/reading the registers?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/thread/167320?ContentTypeID=1</link><pubDate>Wed, 23 Jan 2019 10:12:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5d708136-f340-44da-8bb2-0aaa7253c5b5</guid><dc:creator>Meera Shah</dc:creator><description>&lt;p&gt;I am working with&amp;nbsp;LIS2DH12 connected with nrf51822 taiyo udan board. I did whatever you say but still I am getting output spi_read_write(ACCEL_REG_CTRL0,0x00) (before) :&amp;nbsp;FF 10&lt;/p&gt;
&lt;p&gt;after&amp;nbsp;&amp;nbsp;&lt;span&gt;spi_read_write(ACCEL_REG_CTRL0,0x90) : FF 10&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/thread/167312?ContentTypeID=1</link><pubDate>Wed, 23 Jan 2019 10:01:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9fb1b6c1-fb2e-4300-8ba9-acc015de6e22</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;Sorry, I missed that part of your comment. What device you are interfacing? Note that the RX buffer will be filled while transferring the TX bytes to the device. If you expect to receive data&amp;nbsp;&lt;strong&gt;&lt;em&gt;after TX is&lt;/em&gt; completed&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;&lt;/em&gt;, you will have to set the RX buffer length to size of TX + RX buffer and discard the first bytes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/thread/167297?ContentTypeID=1</link><pubDate>Wed, 23 Jan 2019 09:25:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b8262a22-040c-48f6-98df-a826f3cb5c49</guid><dc:creator>Meera Shah</dc:creator><description>&lt;p&gt;But I am using blocking mode(so no interrupt).&amp;nbsp;spi_rx_data should come up with the updated register value. Please help me with this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/thread/167295?ContentTypeID=1</link><pubDate>Wed, 23 Jan 2019 09:22:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f8de6f13-9f3a-4fa3-81a7-fc2dc9216a24</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;Delays does not guarantee that the transfer is completed. You should wait for the done event in the event handler.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/thread/167252?ContentTypeID=1</link><pubDate>Wed, 23 Jan 2019 04:51:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a7c9c255-cc94-4248-b668-3843ae796658</guid><dc:creator>Meera Shah</dc:creator><description>&lt;p&gt;i added&amp;nbsp;&amp;nbsp;nrf_delay_ms(200); between&amp;nbsp;spi_read_write_reg() and spi_read_write() but no change... Also I am working with&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;blocking mode of SPI.&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define SPI_SS_PIN   4
#define SPI_MOSI_PIN 21
#define SPI_MISO_PIN 22
#define SPI_SCK_PIN 24


void spi1_init(void)
{
    nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
    spi_config.ss_pin   = SPI_SS_PIN;
    spi_config.miso_pin = SPI_MISO_PIN;
    spi_config.mosi_pin = SPI_MOSI_PIN;
    spi_config.sck_pin  = SPI_SCK_PIN;
    spi_config.frequency= NRF_DRV_SPI_FREQ_4M;
    spi_config.mode= NRF_DRV_SPI_MODE_0;
    APP_ERROR_CHECK(nrf_drv_spi_init(&amp;amp;spi, &amp;amp;spi_config, NULL));

}
&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Want to send value on a particular register using SPI</title><link>https://devzone.nordicsemi.com/thread/167153?ContentTypeID=1</link><pubDate>Tue, 22 Jan 2019 15:13:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7455f885-889c-48d6-99cc-9707a7527fca</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;If you have initialized the SPI driver in non-blocking mode (by providing an event handler to &lt;a href="https://www.nordicsemi.com/DocLib/Content/SDK_Doc/nRF5_SDK/v15-2-0/group__nrf__drv__spi#ga2319de449c320ce104d8f3b40759c64c"&gt;nrf_drv_spi_init&lt;/a&gt;), you will have to wait for one transfer to complete before starting a new one (by calling&amp;nbsp;spi_read_write_reg()/spi_read_write()). Please reference the &lt;a href="https://www.nordicsemi.com/DocLib/Content/SDK_Doc/nRF5_SDK/v15-2-0/spi_master_example"&gt;SPI master example&lt;/a&gt; in the SDK on how to do this.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Jørgen&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>